A.V.Avtomat 24 10 декабря, 2023 Опубликовано 10 декабря, 2023 · Жалоба И всё таки, прочитайте последний даташит от Microchip полностью, там описаны все проблемы работы с EEPROM, в том числе проблемы самопроизвольного стирания при включении питания, с которыми я столкнулся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg1978 1 10 декабря, 2023 Опубликовано 10 декабря, 2023 · Жалоба Just now, A.V.Avtomat said: ... Слушайте. Вы сделали неверные выводы. Сказал же. AVR занимаюсь с 2007 года. И работу с EEPROM примерно тогда и освоил. Мне касаемо архитектуры и внутренней периферии ваши советы не нужны. Сам могу давать советы. Мой вопрос был насчёт компилятора. Мы поняли друг друга? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A.V.Avtomat 24 10 декабря, 2023 Опубликовано 10 декабря, 2023 · Жалоба 1 час назад, demiurg1978 сказал: Мне касаемо архитектуры и внутренней периферии ваши советы не нужны. Сам могу давать советы. Мой вопрос был насчёт компилятора. Мы поняли друг друга? Поняли. Барахло ваш компилятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба Был у меня один случай. EEPROM=256 байт . Для адресации хватает одного регистра. Но, пока не обнулил старший - фиг тебе , а не данные Посему Цитата unsigned char adr, пишу как Цитата unsigned int adr, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg1978 1 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба 12 hours ago, ILYAUL said: Был у меня один случай. EEPROM=256 байт . Для адресации хватает одного регистра. Но, пока не обнулил старший - фиг тебе , а не данные Посему пишу как Привет. Как бы все правильно. Работа с периферией. Указатель двухбайтный и обращение должно полным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба Только у топстартера не так. Если еще учесть , что EEprom 512 Байт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба 5 часов назад, ILYAUL сказал: Только у топстартера не так. Вообще-то, прерывание нужно закрывать до установления адреса. Почти все двухбайтовые регистры используют для записи старшей части один и тот же регистр TEMP. Если между записями старшей и младшей половины регистра произойдёт прерывание и в нём запись в двухбайтный регистр, то - беда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба 53 минуты назад, Палыч сказал: Вообще-то, прерывание нужно закрывать до установления адреса. Почти все двухбайтовые регистры используют для записи старшей части один и тот же регистр TEMP. Если между записями старшей и младшей половины регистра произойдёт прерывание и в нём запись в двухбайтный регистр, то - беда. Странно. Если при входе в прерывание Вы не сохраните temp или забудете его восстановить , то беда. А адрес возврата прерывание сохранит автоматом . И вернет на не выполненную команду. У стартера другая проблема. Он вообще забыл про старший байт адреса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба 1 час назад, ILYAUL сказал: Странно. Если при входе в прерывание Вы не сохраните temp или забудете его восстановить , то беда. Регистр TEMP в микроконтроллере программно недоступен. 1 час назад, ILYAUL сказал: У стартера другая проблема. Он вообще забыл про старший байт адреса Не забыл. Переменная unsigned char по правилам языка приводится к signed int. Используется "фишка": автоматическая трансляция доступа к двухбайтному регистру. Транслятор пересылает значения в старшую и младшую части двухбайтного регистра в "нужной" последовательности. PS. ТС всего лишь "потерял" половину EEPROM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба Цитата Регистр TEMP в микроконтроллере программно недоступен. Это, что-то новое для меня . Поподробнее , плиз Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба 46 минут назад, ILYAUL сказал: Поподробнее , плиз При записи в двухбайтный регистр старшего байта значение записывается во внутренний регистр ТЕМР, а при записи младшего байта - содержимое ТЕМР копируется по назначению. Этот регистр ТЕМР не имеет адреса для доступа к нему со стороны программы. Когда я читал доки на МК про доступ к двухбайтный регистрам, то почему-то решил для себя, что этот теневой регистр ТЕМР есть у каждого двухбайтного. Но, фиг - это оказался один регистр на весь МК для одновременной записи двух байт в регистры. Дело было давнее, возможно, в последних ревизиях МК это пофиксили... Но, на такую неприятность как искажение регистра ТЕМР я наткнулся как-то сам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба А, вот Вы о каком . Я и забыл. Да было такое , где-то в документациях, что запись в них окружают cli -sei Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться