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

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

Автор:  gdh [ Пет Авг 31, 2007 7:59 pm ]
Заглавие:  Проблем с прекалено чести прекъсвания

Някой може ли да ме насочи към конкретна информация защо се получава следния проблем и как може да се ограничи или премахне нацяло.

Имам таймер който генерира прекъсване на всеки 50мк. сек. Честотата на контролера е 32Мхц. Проблема е че I2C и USART модулите спират да комуникират. USART не успява да прати нищо а при И2Ц спира на рандом места поради липса на ACK бит от slave-a. Когато увелича интервала на таймера всичко се оправя. Схемата е с PIC18F4580 през Proteus. Във самото прекъсване има няколко иф-а които клатят пинове, тоест нищо сравнително бавно за изпълнение.

Автор:  zaprqn [ Пет Авг 31, 2007 9:38 pm ]
Заглавие: 

с влизането в прекъсването сейваш ли си всичко което ти трябва и на излизане да си го restore-ваш? с retfie ли излизаш от прекъсването ?

Автор:  gdh [ Съб Сеп 01, 2007 10:18 am ]
Заглавие: 

Пиша на С18. Прекъсването е с нисък приоритет. Компилатора сам си записва регистрите. По късно ще пробвам да го сложа с висок приоритет където се ползват shadow регистрите и според док-а трябва да е по-бързо. Като вляза в прекъсване го забранявам временно и при излизане пак го разрешавам.

От какво ли може да се получава?

Автор:  Predator_MF [ Съб Сеп 01, 2007 11:32 am ]
Заглавие: 

Намали до минимум каквато и да е обработка при прекъсването от таймера, с приоритет едва ли ще има ефект, с такива времена яде много CPU време само за влизане в прекъсване и излизане от него

Автор:  plameniv [ Съб Сеп 01, 2007 3:32 pm ]
Заглавие:  Ha

gdh написа:
Пиша на С18. Прекъсването е с нисък приоритет. Компилатора сам си записва регистрите. По късно ще пробвам да го сложа с висок приоритет където се ползват shadow регистрите и според док-а трябва да е по-бързо. Като вляза в прекъсване го забранявам временно и при излизане пак го разрешавам.

От какво ли може да се получава?

Мини на семблер и ще си решиш проблема , ама си сметни и времената на инструкциите че пак може да е същото :)

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