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

 
Текущее время: 28 мар 2024, 20:14

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



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Косяки с перезаписью данных EEPROM
СообщениеДобавлено: 24 янв 2021, 11:07 
Не в сети

Зарегистрирован: 12 дек 2017, 23:11
Сообщения: 33
Столкнулся с такой проблемой: при перезаписи данных в EEPROM в памяти ATMega168p периодически записывается не требуемое значение, а ХЗ-что...
В EEPROM хранятся две уставки скорости шагового двигателя. По сути - это значения OCR1A, которые определяют коэффициент деления Timer1. Значения 16-разрядные. Изменять эти значения требуется для калибровки (не часто). Иногда новые данные записываются корректно, но чаще пишется какая-то белиберда, объяснить которую не могу уже несколько недель. Бывает ситуация, когда одно значение пишется в EEPROM корректно, а второе не правильно. Нередко при изменении одной уставки слетают обе. Программный косяк практически исключен, т.к. при отладке программы в AB подобные ситуации не наблюдались ни разу. При этом чтение из EEPROM всегда (и в симуляторе и на железе) выполняется корректно.

Параметры железа: ардуинка-мини на ATMega168p (16 МГц, 5 вольт), кварц перепаян на 18,432 МГц (требуется по условиям задачи), напряжение на ноге RAW - 7,2 вольта, напряжение на ноге VCC -5,08 вольта. Перед записью числа в EEPROM останавливаю все процессы, генерирующие прерывания (два таймера и ADC). Программный код функции записи числа в EEPROM - стандартный макрос Громова, зашитый в AB, ничего от себя не добавляю. Там тоже есть строки, запрещающие генерацию аппаратных прерываний. Внешних прерываний на устройство не приходит. Других причин, мешающих перезаписи данных EEPROM, вроде бы нет...
Пробовал писать данные в другие адреса памяти, это ничего не меняет. Но при программировании камня на компе, данные в EEPROM всегда записываются корректно.
Предполагаю, что проблема в самом камне, но второго такого нет в наличии. Может быть, кто-то уже сталкивался с таким багом, или с его описанием? Куда копать? Возможно ли, что проблема связана с увеличенной частотой кварца? Хотя по даташиту камень должен работать на частотах до 20 МГц.

P.S. Появилась мысль: мо-быть перед записью новых значений обнулять ячейки памяти (писать туда FFFF)?


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

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


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

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


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

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