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

 
Текущее время: 29 мар 2024, 02:20

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



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

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

Обзор темы - Косяки с перезаписью данных EEPROM
Автор Сообщение
  Заголовок сообщения:  Косяки с перезаписью данных EEPROM  
Цитата
Столкнулся с такой проблемой: при перезаписи данных в 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)?
Сообщение Добавлено: 24 янв 2021, 11:07

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


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