Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 29 мар 2024, 13:11

Часовой пояс: UTC + 3 часа [ Летнее время ]



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Очень интересный глюк с участием переполнения таймера.
СообщениеДобавлено: 03 янв 2016, 20:44 
Не в сети

Зарегистрирован: 24 авг 2015, 13:24
Сообщения: 7
Использую прерывания по переполнению таймера. В обработки прерывания подсчитываю часы реального времени. Переменные часов это однобайтовые ячейки SRAM. Кроме переменной DS – она двух байтовая.
В основном цикле есть условие которое не должно никогда выполнятся - если R4 = 20 то перейти в подпрограмму Obr. При этом R4 всегда 0. Но, тем не менее, при обработки на кристалле я попадаю в подпрограмму Obr, при этом R4 = 0. И еще, я заметил, если переменную DS сделать однобайтовой то переход в Obr происходит реже.
В чем прикол? Причем данный алгоритм я проверял на разных кристаллах: ATMega88p, ATMega48, ATMega8, ATMega128. И везде одно и тоже…


Вложения:
2016-01-03 19-29-27 Скриншот экрана.png
2016-01-03 19-29-27 Скриншот экрана.png [ 44.68 КБ | Просмотров: 5337 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очень интересный глюк с участием переполнения таймера.
СообщениеДобавлено: 03 янв 2016, 22:15 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3769
Откуда: Россия
Это не глюк МК, это программа так криво написана… ;) почитай первый пост , там есть ответ. 8-)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очень интересный глюк с участием переполнения таймера.
СообщениеДобавлено: 03 янв 2016, 23:03 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 15 май 2011, 23:00
Сообщения: 1904
to Vovka001
Если сам не догадался - сохраняй регистры r16, r17 и SREG в стеке в начале обработки прерывания и восстанавливай их при выходе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очень интересный глюк с участием переполнения таймера.
СообщениеДобавлено: 04 янв 2016, 00:50 
Спасибо ребята. R16 и Sreg пробовал эффект был тот же, а вот про R17 не знал. Сейчас все ок.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Очень интересный глюк с участием переполнения таймера.
СообщениеДобавлено: 04 янв 2016, 00:54 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3769
Откуда: Россия
Потому что как раз r17 и участвует в процедуре сравнения… мышкой подведи к процедуре, и увидишь результат действий. ;) Но в других случаях участвует и r16 и регистр SREG, так что Евгений тебе дал совет почти от всех граблей такого рода. :-)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB