На склад поступили жидко-кристаллические индикаторы и дисплеи от KSE

Очень интересный глюк на AVR с участием прерывания переполнения таймера в Algorithm Builder

Новичок
 
Регистрация: 03.01.2016
Сообщений: 3
Репутация: 10
0 3
0 0
 
03.01.2016 20:05 #1
Использую прерывания по переполнению таймера. В обработки прерывания подсчитываю часы реального времени. Переменные часов это однобайтовые ячейки SRAM. Кроме переменной DS – она двух байтовая.
В основном цикле есть условие которое не должно никогда выполнятся - если R4 = 20 то перейти в подпрограмму Obr. При этом R4 всегда 0. Но, тем не менее, при обработки на кристалле я попадаю в подпрограмму Obr, при этом R4 = 0. И еще, я заметил, если переменную DS сделать однобайтовой то переход в Obr происходит реже.
В чем прикол? Причем данный алгоритм я проверял на разных кристаллах: ATMega88p, ATMega48, ATMega8, ATMega128. И везде одно и тоже…
Изображения
Тип файла: png 2016-01-03 19-29-27 Скриншот экрана.png (44.7 Кб, 0 просмотров)
Оценка
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 811
Репутация: 114
105 141
4 0
 
03.01.2016 20:55 #2
Я в таком интерфейсе не работал, но то, что в нем могут быть бока -нельзя исключать.
Эти облегчения программ всегда боком вылазят.
Мож в timer_0_Over пишет число 20 в этот регистр ?
На выходе Hex файл дает прошивки ?
Если да, проверяйте в протеусе регистр R4 с этот момент. Желательно в момент перехода на obr программе зависнуть и увидете, если там число 20, то тогда глюка нет, и действительно где-то оно записалось, если другое чисо, то тогда какой-то баг

___________
вообще теней много, надо только в симуляторе смотреть что там пишется в регистр. Да и теж 2-х байтовые переменные, они же тоже сначала в 2 регистра пишутся, а потом в ОЗУ. В прог этого не видно как оно происходит на самом деле. По сути это исковерканный ассемблер
Последний раз редактировалось схемопай; 03.01.2016 в 21:03.
Оценка
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Новичок
 
Регистрация: 03.01.2016
Сообщений: 3
Репутация: 10
0 3
0 0
 
03.01.2016 23:39 #3
Суть понятна.
HEX файл есть, но каким ПО с ним работать? И как я понимаю, что в данной ситуации нужно отлаживать на кристалле. Соответственно понадобится соответствующий программатор.
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
03.01.2016 23:46 #4
О... Algorithm Builder... Знакомо... Нужно отслеживать состояние регистра R4. Но этого изменения вы можете и не увидеть при отладке на кристалле. Не исключаю также, что этот регистр используется самим компилятором, например при отладке. Может используется для какой-то переменной. То что R16 и R17 используются компилятором и для своих целей их нельзя использовать - знаю точно...

Посмотрите руководство пользователя по Algorithm Builder, где-то на сайте автора было вроде. Попробуйте использовать другой регистр, или попробуйте зарезервировать этот регистр для себя (клавиша F12 - определения переменных и регистров).
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
03.01.2016 23:51 #5
Можно попробовать, как сказал Схемопай, дополнительно в протеусе прогнать прошивку.

Компилируем проект в Algorithm Builder, получаем HEX-файл, собираем схемку на микроконтроллере в протеусе, загружаем прошивку в него и делаем пошаговое выполнение программы, наблюдаем за проявлением глюка и состоянием регистров...
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Новичок
 
Регистрация: 03.01.2016
Сообщений: 3
Репутация: 10
0 3
0 0
 
03.01.2016 23:59 #6
Все нормально ребята, всем спасибо. Просто нужно было загонять в стек Sreg, r16, r17. Вот пробовал загонять все кроме R17. Про R17 как то замылилось и то же не работало. Сейчас все норм всем спасибо.
Оценка
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 811
Репутация: 114
105 141
4 0
 
04.01.2016 10:03 #7
очередной раз убеждаюсь, что не стоит работать в этой среде. Вроде как и регистры открыты для доступа, в тоже время программа сама их занимает, черт знает что
Оценка
Новичок
 
Регистрация: 06.11.2011
Сообщений: 1
Репутация: 11
1 0
0 0
 
11.11.2023 09:18 #8
Ну в Algorithm Builder не так много подводных камней. Этот наверное самый заморочный.
После компиляции при наведении на строку видна ассемблерная конструкция, которую компилятор вставит в код и регистр R16 частенько используется при отправке в стек регистров ввода-вывода и других, например SREG.
Поэтому при отправке в стек данных регистр R16 и R17 отправляйте первыми, а потом всё остальное, а то восстановите их из стека, а компилятор при восстановлении других данных использует R16 или R17 и затрёт их.
Оценка
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Оценка этой теме
Оценка этой теме:
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 21:32.
Обратная связь РадиоЛоцман Вверх