Отговори на тема  [ 22 мнения ]  Отиди на страница 1, 2  Следваща
Проблеми с прекъсване от таймер 0 на 18f4550 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение Проблеми с прекъсване от таймер 0 на 18f4550
Здравейте! Имам следния проблем. Разрешил съм прекъсванията от таймер 0, разрешил съм и глобалните прекъсвания, но все едно не се обслужва това прекъсване. В подрограмата дето обслужва прекъсването съм му дал да сленя нивото на един пин, дето има закачен диод, за да мога да го следя, но нищо не става. А като го гледам с MPLAB SIM всичко си е наред - изпълнява се функцията за прекъсването, смемят си се нивата. Някой има ли идея какво може да става?


Вто Фев 06, 2007 11:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Ами остава пина, дето ти е диода да е нещо крив, или криво вързан.
Казал ли си му, че е изход?


Сря Фев 07, 2007 12:01 am
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение 
да, конфигуриран е като изход


Сря Фев 07, 2007 12:29 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Без да постнеш програмата тук, няма кой да ти помогне така с гадаене 8) .


Сря Фев 07, 2007 12:49 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение 
Ето и част от сорса.


Прикачени файлове:
prog.rar [6.08 KiB]
188 пъти
Сря Фев 07, 2007 9:40 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
Не съм ти гледал кода подробно, обаче освен това, което пишеш че си направил,
трябва още да
трябва да сетнеш коректно INTCON2. TMR0IP и в зависимост от това INTCON.GIEH или GIEL
и много важно - не забравяй в прекъсването да нулираш флага.


Сря Фев 07, 2007 3:51 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение 
на мен IPEN ми е 0 и нямам приоритети, не бил и трябвало TMR0IP и битовете в INTCON2 да не влияят? А флага си го нулирам в подпрограмата, дето обслужва прекъсването.


Сря Фев 07, 2007 4:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Не съм се задълбочавал в сорса, но на пръв поглед виждам това:
В прекъсването само сетваш пиновете със светодиодите по един и същи начин всеки път - никакво изменение няма да видиш.
Ползваш RA1 и RA2 - провери си как си сетнал аналоговите компаратори!


Сря Фев 07, 2007 4:24 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение 
Да сетвам ги по един и същи начин, но първоначално е сетнат само единияи би трябвало ако се обслужи прекъсването тои да се загаси и да се сетне другия, но това не става. А относно порт а TRISA=0


Сря Фев 07, 2007 4:36 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

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

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!


Сря Фев 07, 2007 4:49 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение 
Аз нарочно не ползвам Toggle, за да може ако поне веднъж се изпълни функцията, обработваща прекъсването, диодът, който свети да загасни, а дръгият да светне. Това няма как да не го видя. При следващо прекъсване би трябвало пак да останат в токова състояние. Проблемът е, че като ресетна процесора си свети само първия диод постоянно, което ме навежда на мисълта, че функцията за прекъсвнето не се изпълняма нито веднъж.


Сря Фев 07, 2007 5:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
При такт 48MHz (12MIPS) с коефициент на делене 1:1 на Timer0 как точно ще видиш "мигане" ?! 8)


Сря Фев 07, 2007 6:56 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юли 31, 2006 9:51 am
Мнения: 74
Мнение 
Погледни кода! Аз не очаквам да видя "мигане", а просто единият диод да загасне и да светне другия! Но това не става.


Сря Фев 07, 2007 7:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
@bborisov, направи една 8 битова променлива, която да инкрементираш при всяко препълване на Timer0, сложи T0 коефициент на делене 1:256, сложи функция която да ти обръща състоянието на светодиода (led_toggle) при препълване на променливата и тогава ако не замига се оплачи :wink:


Сря Фев 07, 2007 7:09 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
offtopic:/
@Predator_MF, сега може би ме разбираш защо така реагирам понякога...
/offtopic

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!


Сря Фев 07, 2007 11:51 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 22 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 18 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни