Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблеми с прекъсване от таймер 0 на 18f4550
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3690
Страница 1 от 2

Автор:  bborisov [ Вто Фев 06, 2007 11:58 pm ]
Заглавие:  Проблеми с прекъсване от таймер 0 на 18f4550

Здравейте! Имам следния проблем. Разрешил съм прекъсванията от таймер 0, разрешил съм и глобалните прекъсвания, но все едно не се обслужва това прекъсване. В подрограмата дето обслужва прекъсването съм му дал да сленя нивото на един пин, дето има закачен диод, за да мога да го следя, но нищо не става. А като го гледам с MPLAB SIM всичко си е наред - изпълнява се функцията за прекъсването, смемят си се нивата. Някой има ли идея какво може да става?

Автор:  Syrius-B [ Сря Фев 07, 2007 12:01 am ]
Заглавие: 

Ами остава пина, дето ти е диода да е нещо крив, или криво вързан.
Казал ли си му, че е изход?

Автор:  bborisov [ Сря Фев 07, 2007 12:29 am ]
Заглавие: 

да, конфигуриран е като изход

Автор:  Dimitar [ Сря Фев 07, 2007 12:49 am ]
Заглавие: 

Без да постнеш програмата тук, няма кой да ти помогне така с гадаене 8) .

Автор:  bborisov [ Сря Фев 07, 2007 9:40 am ]
Заглавие: 

Ето и част от сорса.

Прикачени файлове:
prog.rar [6.08 KiB]
189 пъти

Автор:  bkulev [ Сря Фев 07, 2007 3:51 pm ]
Заглавие: 

Не съм ти гледал кода подробно, обаче освен това, което пишеш че си направил,
трябва още да
трябва да сетнеш коректно INTCON2. TMR0IP и в зависимост от това INTCON.GIEH или GIEL
и много важно - не забравяй в прекъсването да нулираш флага.

Автор:  bborisov [ Сря Фев 07, 2007 4:04 pm ]
Заглавие: 

на мен IPEN ми е 0 и нямам приоритети, не бил и трябвало TMR0IP и битовете в INTCON2 да не влияят? А флага си го нулирам в подпрограмата, дето обслужва прекъсването.

Автор:  Gogo [ Сря Фев 07, 2007 4:24 pm ]
Заглавие: 

Не съм се задълбочавал в сорса, но на пръв поглед виждам това:
В прекъсването само сетваш пиновете със светодиодите по един и същи начин всеки път - никакво изменение няма да видиш.
Ползваш RA1 и RA2 - провери си как си сетнал аналоговите компаратори!

Автор:  bborisov [ Сря Фев 07, 2007 4:36 pm ]
Заглавие: 

Да сетвам ги по един и същи начин, но първоначално е сетнат само единияи би трябвало ако се обслужи прекъсването тои да се загаси и да се сетне другия, но това не става. А относно порт а TRISA=0

Автор:  evc [ Сря Фев 07, 2007 4:49 pm ]
Заглавие: 

По-добре използвай функцията mLED_1_Toggle(). Защото може за части от секундата след захранване на схемата да ти сменя състоянието, но понеже е само веднъж ти да не го виждаш.
Щом ти върви в МПЛАБ(прекъсването от ТМР0), не е грешна конфигурацията на таймера.
Огледай добре ресета. И въобще хардуера, защото щом единия свети, а другия - не и изходите са ти конфигурирани правилно.

Автор:  bborisov [ Сря Фев 07, 2007 5:14 pm ]
Заглавие: 

Аз нарочно не ползвам Toggle, за да може ако поне веднъж се изпълни функцията, обработваща прекъсването, диодът, който свети да загасни, а дръгият да светне. Това няма как да не го видя. При следващо прекъсване би трябвало пак да останат в токова състояние. Проблемът е, че като ресетна процесора си свети само първия диод постоянно, което ме навежда на мисълта, че функцията за прекъсвнето не се изпълняма нито веднъж.

Автор:  Predator_MF [ Сря Фев 07, 2007 6:56 pm ]
Заглавие: 

При такт 48MHz (12MIPS) с коефициент на делене 1:1 на Timer0 как точно ще видиш "мигане" ?! 8)

Автор:  bborisov [ Сря Фев 07, 2007 7:06 pm ]
Заглавие: 

Погледни кода! Аз не очаквам да видя "мигане", а просто единият диод да загасне и да светне другия! Но това не става.

Автор:  Predator_MF [ Сря Фев 07, 2007 7:09 pm ]
Заглавие: 

@bborisov, направи една 8 битова променлива, която да инкрементираш при всяко препълване на Timer0, сложи T0 коефициент на делене 1:256, сложи функция която да ти обръща състоянието на светодиода (led_toggle) при препълване на променливата и тогава ако не замига се оплачи :wink:

Автор:  evc [ Сря Фев 07, 2007 11:51 pm ]
Заглавие: 

offtopic:/
@Predator_MF, сега може би ме разбираш защо така реагирам понякога...
/offtopic

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/