реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> XMega, EEPROM, NVM, разъясните плиз
zombi
сообщение Sep 3 2012, 06:23
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Sep 3 2012, 01:38) *
к сожалению...но сильным быть-то и не надо, самую малость понимать уже хватило бы.
laughing.gif
Цитата(V_G @ Sep 3 2012, 05:32) *
Как это делается на Си, не разбирался, т.к. под АВР пишу на ассемблере
beer.gif


Спасибо _Артём_ и V_G, тереь становится яснее.

Попытаюсь слегка резюмировать то что я понял. Поправте ещё раз ежели не прав.

Итак, страничный буфер еепром это один 32-х байтных массив при записи в который почемуто происходит лог. И .
В режиме отображения в область данных писать в этот буфер можно по любым адресам 0x1000-0x17FF (старшие биты адреса игнорируются).
Количество этих записей не ограничено, ни что не мешает выполнить сто раз запись по одному и томуже адресу.
Для записи буфера в страницу еепром необходимо выполнить команду NVM с ADDR равным любому адресу записываемой страницы (младшие биты адреса игнорируются).

PS. похоже что при записи буфера в страницу еепром игнорируются не только 5 младших адресов а и адреса старше A10.
Go to the top of the page
 
+Quote Post
xelax
сообщение Sep 3 2012, 07:41
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Вы бы еще ревизию чипа читали перед использованием eeprom. В xmega128a1 до ревизии чипа H, был неприятный баг. У меня проявлялся следующим образом (тоже использовал map ram), при записи в eeprom контроллер прыгал на произвольный адрес flash. Нормально запустить получилось, только когда применил workaround из errata. Запись в eeprom - впадение ядра в idle - просыпание по прерыванию об окончании записи в eeprom.
Первые партии xmega разных серий страдали этой бажиной, потом они ее пофиксили. Здесь как повезет. Мне два таких попалось, потом нормальные стали приходить.

Немного о причинах введения NVM контроллера. На мой взгляд одна из причин это организация постраничного доступа. В AVR постраничный доступ был доступен только через программатор. Мне в софте приходится сливать в eeprom большие массивы данных, в xmega это не в пример быстрее происходит из-за постраничной организации.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 3 2012, 08:03
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(xelax @ Sep 3 2012, 10:41) *
Первые партии xmega разных серий страдали этой бажиной, потом они ее пофиксили.

Капец!
С освоением хмег не спешил, ждал когда побольше багов выловят.
У меня все rev.H. Проверяю по старту и ругаюсь на более раннюю.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Sep 6 2012, 08:21
Сообщение #19


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(V_G @ Sep 2 2012, 18:03) *
1. Одна из причин введения специализированного NVM - как раз введение режима отображения на память.


Да. конечно полезная штука.
я тоже хотел ею воспользоваться чтоб дополнительно сэкономить на озу.
чип мега 128а3
задумка была при постоянном включенном маппинге работать с калибровочными таблицами.

Но к сожалению, так и не удалось довести до релиза.
Хаотически появлялись глюки с записью в еепром.
3 месяца гонял свой софт из шкуры вылез, но так и не добился устойчивой работы NVM.
Пришлось по старинке грузить таблицы в озу.
Причины сбоев так и не смог опредлить.

Да и с включенным маппингом студия4+avr Jtag mkII+ активное окно: содержимое EEPROM - тоже дурит не по детски.





--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
V_G
сообщение Sep 6 2012, 11:37
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(Kovrov @ Sep 6 2012, 18:21) *
Да и с включенным маппингом студия4+avr Jtag mkII+ активное окно: содержимое EEPROM - тоже дурит не по детски.

Я применяю atxmega32a4, никаких подобных проблем не встречал. При отладке в Студии4 иногда затирается ячейка 0 EEPROM, но эта штука где-то описана.
EEPROM у меня используется на запись относительно часто, каждый раз при выключении питания пишется страница статуса (32 байта), 100 мкФ по питанию вполне хватает для удержания питания на время записи.
Go to the top of the page
 
+Quote Post
xelax
сообщение Sep 6 2012, 12:21
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(V_G @ Sep 6 2012, 15:37) *
Я применяю atxmega32a4, никаких подобных проблем не встречал. При отладке в Студии4 иногда затирается ячейка 0 EEPROM, но эта штука где-то описана.


В IAR в отладке тоже что-то подобное наблюдал с нулевой ячейкой.
Не могли бы Вы сказать где проблема описана, есть желание почитать об этом.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 6 2012, 12:27
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



А как узнать время записи страницы еепром при тактировании проца от внутр. 32 MHz?
В DS на хмега128A (п. 33.4 Flash and EEPROM Memory Characteristics Table 33-4. Programming time) указано 6 ms но только для внутр. 2 MHz.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 6 2012, 12:34
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(V_G @ Sep 6 2012, 14:37) *
При отладке в Студии4 иногда затирается ячейка 0 EEPROM, но эта штука где-то описана.

Вернулся старый глюк meg, про который все уже забыли?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Sep 6 2012, 13:02
Сообщение #24


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Я бы сказал глюк at90s, т.к. в мегах ИМХО его уже не было.
Я до сих пор во всех AVR проектах нулевой байт eeprom'a резервирую:-)


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Sep 6 2012, 15:01
Сообщение #25


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Да нет это проявляется только при отладке
и при включенном мапинге и открытом окне содержимого еепрома
(покрайне мере у меня 100 % затирание ячейки- одна или несколько уже не помню)
я так понимаю студия читает содержимое еепрома не используя маппинг
если за этим следить (руками ставить\убирать флаг) то проблем нет
хотя конечно напрягает.

Цитата(V_G @ Sep 6 2012, 15:37) *
EEPROM у меня используется на запись относительно часто, каждый раз при выключении питания пишется страница статуса (32 байта), 100 мкФ по питанию вполне хватает для удержания питания на время записи.


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


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
V_G
сообщение Sep 7 2012, 00:29
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(Kovrov @ Sep 7 2012, 01:01) *
если не сложно не могли бы вы показать код того момента, когда происходит запись еепрома (особенно когда произходит переключения с маппинга на нормальный режим)


Я не использую нормальный режим и на него соответственно не переключаюсь
Код
SaveAllBlock:
    RCALL    CopyYtoZ;заполнили PageBuffer
SaveEEPage:
    CLI    
    MOVW    r26,r30
    SBIW    r26,1
    CALL    AtomicWrite        
    CALL    _WAIT_FOR_SPM    
    SEI
    RET

AtomicWrite:;запись подготовленной страницы в EEPROM
    STS        NVM_ADDR0,address
    MOV        r16,addressH
    STS        NVM_ADDR1,r16
    CLR        r16
    STS        NVM_ADDR2,r16
    LDI        r16,NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc
    STS        NVM_CMD,r16
    LDI        r17,CCP_IOREG_gc
    OUT        CPU_CCP,r17                ;загрузили Protect IO Register signature
    LDI        r16,NVM_CMDEX_bm
    STS        NVM_CTRLA,r16                    ;команда "выполнить запись"
    RET

_WAIT_FOR_SPM:
    LDS        r17,NVM_STATUS    
    ANDI    r17,NVM_NVMBUSY_bm
    BRNE    _WAIT_FOR_SPM
    RET

Go to the top of the page
 
+Quote Post
Kovrov
сообщение Sep 9 2012, 04:44
Сообщение #27


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Спасибо за код.
то есть вы работаете с постоянно включенном маппинге
не знаю почему, но я всегда считал, что запись в еепром должна производиться при выключенном маппинге
может отсюда все мои проблемы?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 9 2012, 22:15
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



При переходе в спящие режимы запись в еепром останавливается или нет?
Go to the top of the page
 
+Quote Post
xelax
сообщение Sep 10 2012, 06:10
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(Kovrov @ Sep 6 2012, 19:01) *
Да нет это проявляется только при отладке
и при включенном мапинге и открытом окне содержимого еепрома
(покрайне мере у меня 100 % затирание ячейки- одна или несколько уже не помню)


Аналогичное поведение в IAR.

Цитата(zombi @ Sep 10 2012, 02:15) *
При переходе в спящие режимы запись в еепром останавливается или нет?


В IDLE продолжает писать. В power save\down с памяти снимается тактовая, так что не должен писать, остальные не пробовал.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 10 2012, 18:02
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(xelax @ Sep 10 2012, 09:10) *
В IDLE продолжает писать. В power save\down с памяти снимается тактовая, так что не должен писать, остальные не пробовал.

ОК.

Еще вопрос:
При выключении питания проц уходит в power save и питается от резервного CR2032, просыпаясь раз в секунду инкрементирует счётчик времени и проверяет не появилось ли основное питание.
Всё ОК, пол года полёт нормальный.
Но есть одна проблемка.
Если отключить и резервное питание то по сбросу счётчику времени кирдык.
Сейчас при сбросе просто инициализирую счётчик временем прожига проца.
Но хочется что бы время не сбрасывалось а хотябы просто останавливалось.
Планирую раз в минуту писать счётчик в еепром.
Время стирания/записи страницы еепром 12ms и потребление 30mA.
Как прикинуть на сколько быстрее сдохнет батарейка если дополнительно каждую минуту при просыпании бросать текущее время в еепром?

Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 00:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01491 секунд с 7
ELECTRONIX ©2004-2016