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

 
Текущее время: 04 май 2025, 13:19

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



Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Анти-спам
Анти-спам:
Выполните задание
   

Обзор темы - Очень интересный глюк с участием переполнения таймера.
Автор Сообщение
  Заголовок сообщения:  Re: Очень интересный глюк с участием переполнения таймера.  
Цитата
Потому что как раз r17 и участвует в процедуре сравнения… мышкой подведи к процедуре, и увидишь результат действий. ;) Но в других случаях участвует и r16 и регистр SREG, так что Евгений тебе дал совет почти от всех граблей такого рода. :-)
Сообщение Добавлено: 04 янв 2016, 00:54
  Заголовок сообщения:  Re: Очень интересный глюк с участием переполнения таймера.  
Цитата
Спасибо ребята. R16 и Sreg пробовал эффект был тот же, а вот про R17 не знал. Сейчас все ок.
Сообщение Добавлено: 04 янв 2016, 00:50
  Заголовок сообщения:  Re: Очень интересный глюк с участием переполнения таймера.  
Цитата
to Vovka001
Если сам не догадался - сохраняй регистры r16, r17 и SREG в стеке в начале обработки прерывания и восстанавливай их при выходе.
Сообщение Добавлено: 03 янв 2016, 23:03
  Заголовок сообщения:  Re: Очень интересный глюк с участием переполнения таймера.  
Цитата
Это не глюк МК, это программа так криво написана… ;) почитай первый пост , там есть ответ. 8-)
Сообщение Добавлено: 03 янв 2016, 22:15
  Заголовок сообщения:  Очень интересный глюк с участием переполнения таймера.  
Цитата
Использую прерывания по переполнению таймера. В обработки прерывания подсчитываю часы реального времени. Переменные часов это однобайтовые ячейки 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 КБ | Просмотров: 7164 ]
Сообщение Добавлено: 03 янв 2016, 20:44

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


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