[an error occurred while processing this directive]
Не сталкивался кто с багами в IAR AVR 2.23 при прерываниях...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
|
Отправлено
Kimmel 08 июля 2003 г. 13:21
|
|
|
|
Косяк такой. считаю гигантскую формулу аппроксимации датчика для пирометра. Раз в 250 мсек приходит прерывание от таймера (считаю, когда в sleep уходить если кнопки не нажаты). После пересчета передаю информацию в ЭВМ. Так вот, примерно раз 10-15 мин на графике температуры на ЭВМ провалы (результат неправильный). Пробовал делать прерывания от таймера быстрее, косяки пошли чаще. Убрал прерывание, баги исчезли. Может быть в компиляторе косяки при сохранении данных в стеке при входе и восстановлении при выходе? А вообще, может быть вручную прописать сохранение регистров в стеке? как это сделать? или переменные как-то по другому объявлять? Вообще, задача решабельна, но , блин, принципиально хочу разобраться.
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Это старый косяк, исправлен по-моему в 2.27. Если не изменяет память, в прерывании не сохранялся R1, хотя могу и ошибаться. — Sgrig (08.07.2003 18:10, пустое)
- Если надо разобраться принципиально — Тумблер (08.07.2003 14:54, 296 байт)
- Ответ: У меня было так (+) — JK2002 (08.07.2003 14:09, 506 байт)
- Ответ: Здесь дело может быть в том, что — Bill (08.07.2003 13:54, 631 байт)
- Переменная, которая портится, глобальная? — 0men (08.07.2003 13:54, пустое)
- У меня было на IAR AVR 2.26 при работе с double. Прерывания портили результат. Решилось переписыванием обработчика на асме с сохранением контекста PUSHами — CTAC (08.07.2003 13:43, пустое)
- Ответ: — Kimmel (09.07.2003 04:59, 34 байт)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru