| Автор |
Съобщение |
|
stojo
Ранг: Минаващ
Регистриран на: Чет Авг 18, 2011 3:44 pm Мнения: 27
|
 Моля за малко помощ
Тъй, ето я програмата, която съчиних: използвах компилатора mikroc и PIC16F688. До тук добре, при преминаване от високо към ниско ниво на кой да е пин от порт А, настъпва прекъсване и всички пинове на порт С се установяват във високо ниво. След промяна от ниско към високо ниво на пиновете от порт А, излиза от прекъсването и изпълнява закъснение на прехода на порт С от високо към ниско. Обаче зациклих.. Как да направя така, че при промяна на RА1, да се променя само RC1. Мисех варианти със запис на инвертираната стойност на порт А в eeprom-a и след това четенето и от там и присвояването и към порт С, обаче все нещо не ми се получава. Дайте някакви идеи моля.
|
| Чет Авг 18, 2011 3:47 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Моля за малко помощ
Ъъъъъ
Дай пауза на въпросите и се върни към книгите.
Това твоето не е въпрос а някакъв гювеч от хвърчащи идеи. Въобще не е ясно какво искаш да направиш та някой да ти каже как да го направиш.
|
| Чет Авг 18, 2011 9:56 pm |
|
 |
|
stojo
Ранг: Минаващ
Регистриран на: Чет Авг 18, 2011 3:44 pm Мнения: 27
|
 Re: Моля за малко помощ
Имам 2 бутона на RA0 и RA1 и 2 светодиода на RC0 и RC1. Искам при предизвикано прекъсване чрез бутона на RA0 , да светва диода на RA0 и съответно от бутона на RC1 да светва диода на RC1.
|
| Чет Авг 18, 2011 10:45 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Моля за малко помощ
Какъв е чипа?
Това ако ще е само това най лессно става с три - четири команди дето се въртят в цикъл.
BTFSS porta,0 BCF portc,0 BSF portc,0
Горе долу така...
Ама не се сещам кой чип има прекъсване на портА.
|
| Чет Авг 18, 2011 11:58 pm |
|
 |
|
stojo
Ранг: Минаващ
Регистриран на: Чет Авг 18, 2011 3:44 pm Мнения: 27
|
 Re: Моля за малко помощ
pic16f688, той няма порт В, ама от асемблер не разбирам много тъй, че ако може на С. Другия ми проблем е, че като симулирам с протеус, не ми нулира RAIF и не излиза от прекъсването, а при реална схема всичко работи нормално.
|
| Пет Авг 19, 2011 12:28 am |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 Re: Моля за малко помощ
cekins, почти всички пикове особено 16ките имат прекъсване по портА. а stojo, никои флаг индикиращ нпрекъсжане не се нулира сам. това че ти работи на схема се дължи на грешен сорс
|
| Пет Авг 19, 2011 9:26 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Моля за малко помощ
Почти всички 16-ки имат Interupt On Change на PortB4 .. 7
Усетих се че иде реч за някой дето няма портБ ама със закъснение. Аз много рядко ги ползвам.
Освен това, специално за пиковете е хубаво да познаваш асемблера - никой не казва да пишеш на асемблер, ама понякога се налага да се напише нещо много изцедено. А другото приложение е да видиш какви ги е натворил компилатора. И освен всичко останало това не е РС.
|
| Пет Авг 19, 2011 10:06 am |
|
 |
|
stojo
Ранг: Минаващ
Регистриран на: Чет Авг 18, 2011 3:44 pm Мнения: 27
|
 Re: Моля за малко помощ
didofen нулирал съм го в кода, при физическа установка програмата си работи добре, просто в протеус не се нулира, и незнам защо, или някоя настройка за която не знам, или бъг... питам защото там ми е по удобно да внасям изменения в програмите, вместо да буча чипа от програматора в платката и обратно...
|
| Пет Авг 19, 2011 12:51 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Моля за малко помощ
Понякога има разлика между реалния контролер и моделът му в Протеус.
|
| Пет Авг 19, 2011 1:14 pm |
|
 |
|
stojo
Ранг: Минаващ
Регистриран на: Чет Авг 18, 2011 3:44 pm Мнения: 27
|
 Re: Моля за малко помощ
А как да конфигурирам RA3:5 като входове? RA3 e mcrl, RA4 и 5 са osc1 и 2. И за трите пише, че може да се ползват като входове, ама само от trisa не се получава. http://ww1.microchip.com/downloads/en/d ... 41203B.pdf Използвам вградения осцилатор.
|
| Съб Авг 20, 2011 10:34 am |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Моля за малко помощ
TRIS е една от стъпките. Виж каква периферия има на съответните пинове и чрез кои регистри се конфигурира. По спомен, MCLR беше в "configuration words".
|
| Съб Авг 20, 2011 12:53 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Моля за малко помощ
Осцилатора също е от Fuses. Резета може да се ползва само като вход но лично аз не го препоръчвам, освен ако чак толкова не си закъсал за един вход. Много рядко ползвам резета като вход и то само на 12-ки. Ако правилно си направил config-а би трябвало безпроблемно да си работят като I/О двата пина. Не ми се гледа сега ама по спомен освен осцилатора там няма нищо друго обикновенно.
|
| Съб Авг 20, 2011 1:23 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 Re: Моля за малко помощ
да, освен входовете за всички видове генератори там няма друго. задаваш си, че искаш вътрешен генератор и вече от триса си правиш входове, и ще тръгне. а за мслр, наистина се ползва мн внимателно, с подпорка и кондензатор 1-100нФ, че е мн чувствителен
|
| Пон Авг 22, 2011 9:04 am |
|
 |
|
stojo
Ранг: Минаващ
Регистриран на: Чет Авг 18, 2011 3:44 pm Мнения: 27
|
 Re: Моля за малко помощ
А как да стане така, че прекъсването от различен пин на порт а да ми задейства диод на различен пин от порт с?
|
| Пон Авг 22, 2011 6:09 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
 Re: Моля за малко помощ
Ами просто, въпросът е обаче колко бързи са тия сигнали. Правиш си "бакъп" на порта при всяко прекъсване, при следващото сравняваш бекъпа с текущото състояние и откриваш кои пинове са се променили. Тук опира и до тов акак да направиш бекъпа и как да сравняваш. С оглед на това че ПИК поддържа побитови инструкции, най-лесно е да пазиш бекъп на всеки бит а не да четеш порта и да го пазиш като байт, въпреки че и това не е по-бавно ако се напише както трябва, всъщност неправилно написано побитовата обработка може да отнеме повече време от неправилно написано побайтово проверяване.
|
| Пон Авг 22, 2011 9:18 pm |
|
|