вопрос по работе с EEPROM

Обсуждаем контроллеры компании Atmel.
Ответить
ata100
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн окт 20, 2008 16:10:21
Откуда: москва

вопрос по работе с EEPROM

Сообщение ata100 »

Приветствую , просветите что не так делаю компилю в студии 7 под тини2313, оптимизация (-О1):вопрос
1, при старте у меня присваивается значение переменных в епроме ,однако его там не возникает,
2, первый eeprom_update_byte исполняется и меняет значение .но на втором все валится в бесконечный цикл

Код: Выделить всё

--- C:\home\toolsbuild\workspace\avr8-devices-pack\src\avr-libc\libc\misc\eeupd_byte.S 
00000032  MOV R18,R22		Copy register 
00000033  SBIC 0x1C,1		Skip if bit in I/O register cleared 
00000034  RJMP PC-0x0001		Relative jump 

если я делаю reset то прога делает и первый и второй и снова виснет ,
3. почему в окне eeprom Memory висят значки ?? хотя указан hexadecimal view. и когда я меняю еепром там изменений ненаблюдается,
4, а можно как нибудь исключить выпадание в асм из этих процедур

Код: Выделить всё

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>

uint8_t	EEMEM Stored_UU = 15;
uint8_t	EEMEM Stored_XX = 3;
uint8_t UU;
uint8_t XX;


int main(void)
{
	while(1){
	UU = 25; XX = 47;
	eeprom_update_byte(&Stored_UU, UU);
	eeprom_update_byte(&Stored_XX, XX);
	UU ++;}
}
спасибо!!!!!!!!!!!!!
Вложения
QW.jpg
(100.34 КБ) 184 скачивания
Реклама
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

1. Макрос EEMEM всего-лишь добавляет аттрибут, что данную переменную нужно положить в отдельную секцию. В AVR EEPROM - отдельный сегмент специальный. Компилятору еще нужно сказать сгенерить этот сегмент в отдельный файл .eep, который прошивается потом отдельно. Насколько я знаю, симулятор студии это не поддерживает и не умеет.
2. Нельзя присваивать значения переменным из секции EEMEM напрямую, как делаете вы UU = 25; XX = 47; И UU++ нельзя.
Делайте eeprom_update_byte(&Stored_UU, 25);
И читать афаик потом новое значение автоматом оно не будет. Надо будет делать eeprom_read_byte во переменную в памяти. Точно не помню, но почти наверняка так.
3. См. посл. предложение п.1 - симулятор не умеет.
4. Нельзя, если попросту. Потому что функции работы с EEPROM лежат в libc, который уже в собранном бинарном виде. Просто на входите внутрь этой функции, прошагивайте её через Step over, а не Step into.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18637
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: вопрос по работе с EEPROM

Сообщение ARV »

NStorm писал(а):Нельзя присваивать значения переменным из секции EEMEM напрямую, как делаете вы UU = 25; XX = 47; И UU++ нельзя.
Делайте eeprom_update_byte(&Stored_UU, 25);
abuy. сморозили: присваивает он нормальную переменную, а потом и делает обновление EEPROM-овской переменной именно значением нормальной.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

Да, не заметил что это разные переменные.
Ну тогда всё ок. Остается выкинуть симулятор студии, который не умеет в EEPROM. И взять или реальное железо или Proteus, который прекрасно симулирует EEPROM и даже сохраняет его состояние в проекте, если принудительно не очистить.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: вопрос по работе с EEPROM

Сообщение BOB51 »

:?
Последний раз редактировалось BOB51 Вт июл 28, 2020 14:54:44, всего редактировалось 2 раза.
Реклама
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

BOB51, и зачем это тут?
Реклама
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: вопрос по работе с EEPROM

Сообщение Demiurg »

Строки означают, что создается отдельный файл с расширением *.eep, которым прошивают EEPROM МК.

Код: Выделить всё

uint8_t  EEMEM Stored_UU = 15;
uint8_t  EEMEM Stored_XX = 3;

Код: Выделить всё

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <util/delay.h>

uint8_t  EEMEM Stored_UU = 15;
uint8_t  EEMEM Stored_XX = 3;
uint8_t UU;
uint8_t XX;


int main(void)
{
   eeprom_write_byte (&Stored_UU, 15);
   eeprom_write_byte (&Stored_XX, 3);

//   _delay_ms (100);

   UU = 25; XX = 47;

   while (1)
   {
      eeprom_write_byte (&Stored_UU, UU);
      eeprom_write_byte (&Stored_XX, XX);

      UU++;
      XX++;
   }

}
0000000001.jpg
(165.46 КБ) 230 скачиваний
Последний раз редактировалось Demiurg Вт июл 28, 2020 18:31:28, всего редактировалось 1 раз.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

Demiurg, у вас AVR Studio 4, а у ТС Atmel Studio 6/7.

Добавлено after 24 minutes 32 seconds:
Ах да, я вспомнил. Где-то ж я писал об этом недавно. Это бага студии 6-7ой. EEPROM криво показывается. Но если скроллить в окошке данных туда-сюда, данные могут появиться. Причем как по правильному, так и по левому адресу:
Изображение
Вложения
Screenshot_20200728_155728.png
(5.06 КБ) 585 скачиваний
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: вопрос по работе с EEPROM

Сообщение Demiurg »

Я в основном работаю в XP. Иногда в 7. И там и там я спокойно работаю в IAR и в AVR-Studio 4.19 + AVR Toolchain. 6-7 не нужны. Опять же, я не работал с самыми последними моделями AVR, производства Microchip. И не думаю, что участники форума в ближайшее время на них замахнутся...
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

Demiurg, и снова вы о своём. Рад за вас, что вы работаете на старой студии. А человек скрин из новой показал. И спросил почему там не работает. А не как у вас лично это работает в другом ПО.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: вопрос по работе с EEPROM

Сообщение Demiurg »

Я отлаживаю все свои проекты любой сложности, с развитыми меню. Десятки пунктов, подпунктов. И все что на них завязано, отработка действий, вызовы функций.
Все это в студии 4.19.
Пусть значит в дизасм смотрит, что не так. Может что выкинуло. Может срыв стека.
Кстати, бывают проблемы с симуляторами 1 и 2. Возможно в этом причина.
ata100
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн окт 20, 2008 16:10:21
Откуда: москва

Re: вопрос по работе с EEPROM

Сообщение ata100 »

NStorm обнаружил свой косяк - следовало писать не EEMEM Stored_XX = 3 а Stored_XX EEMEM= 3; в остальном -собственно шел по следам Писанца ,у него работает передача значения через переменную https://www.youtube.com/watch?v=FY0O2K9sGc8&t=1s ,попробовал по вашему совету сделал запись значения напрямую

Код: Выделить всё

	eeprom_update_byte(&Stored_UU, UU);
	eeprom_update_byte(&Stored_XX, 16);
первая строка работает а со второй опять бесконечный цикл, и как никрути окно eeprom : до адреса 0xFBCF сплошные ??????

Добавлено after 6 minutes 51 second:
кстати у Писанца в этом видео не происходит выпадания в асм
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18637
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: вопрос по работе с EEPROM

Сообщение ARV »

ata100 писал(а):следовало писать не EEMEM Stored_XX = 3 а Stored_XX EEMEM= 3;
насколько я могу судить по собственному многолетнему опыту, никакой разницы в записях нет, то есть не должно быть.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
ata100
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн окт 20, 2008 16:10:21
Откуда: москва

Re: вопрос по работе с EEPROM

Сообщение ata100 »

[uquote="ARV",url="/forum/viewtopic.php?p=3872419#p3872419"]
ata100 писал(а):следовало писать не EEMEM Stored_XX = 3 а Stored_XX EEMEM= 3;
насколько я могу судить по собственному многолетнему опыту, никакой разницы в записях нет, то есть не должно быть.[/uquote]
однако стало работать
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18637
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: вопрос по работе с EEPROM

Сообщение ARV »

ata100 писал(а):однако стало работать
я очень, очень, очень сильно сомневаюсь, что стало работать именно по этой причине.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

ata100, всё вы делаете правильно. Это симулятор глючит с отображением EEPROM. Где тут или на другом форуме только недавно об этом тоже писал, обнаружив. Вы окно EEPROM не вниз листайте, а попробуйте вверх подняться через FFFF, и там вверх-вниз надо крутить, не знаю, методом тыка так вот листая крутя вверх вниз по 3-4 страницы листинга у меня в итоге "находятся" данные по левому адресу. Если потом вернуться на 0 адрес, там уже могут правильно данные показываться. Только переключить окно на FLASH и обратно - и опять вопросы. Короче глючит оно нещадно. Забейте, в симуляторе этом не покажет нормально, его глюк.
ata100
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн окт 20, 2008 16:10:21
Откуда: москва

Re: вопрос по работе с EEPROM

Сообщение ata100 »

NStormпочему у Писанца не глючит и в асм не выпадает?
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: вопрос по работе с EEPROM

Сообщение NStorm »

ata100, потому что у него студия 6.0, atmega16 и звезды на небе в другом положении были. У меня в последней 7ой студии и для tiny2313 глючит, я скрин выше показал. И уже не первый раз с этим глюком симулятор 7ой студии сталкиваюсь. Почему у кого-то глючит симулятор, а у кого нет - странно спрашивать. Когда он глючит не у вас одного. Спросите разработчиков студии, что они там употребляют у себя.
Ответить

Вернуться в «AVR»