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

 
 
> ATxMEGA и EERPOM
Navovvol
сообщение Oct 13 2011, 11:47
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Пытаюсь написать подпрограммы записи и чтения внутренней EEPROM на асме
Нифига не получается, не могу понять почему.
Вот что сказано в даташите:

30.11.5.1. Загрузка страничного буфера EEPROM

Данная команда предназначена для записи одного байта в страничный буфер EEPROM.

Запишите в регистр NVM CMD команду загрузки страничного буфера EEPROM
Запишите в регистр NVM ADDR0 адрес, по которому выполняется запись.
Запишите в регистр NVM DATA0 данные, подлежащие записи. Это приведет к запуску исполнения команды.

30.11.5.4. Запись страницы EEPROM

Данная команда предназначена для записи загруженного страничного буфера EEPROM в одну страницу EEPROM. Запись выполняется только тех ячеек, которые предварительно были загружены в страничный буфер EEPROM.

Запишите в регистр NVM CMD команду записи страницы EEPROM.
Запишите в регистр NVM ADDR адрес подлежащей записи страницы EEPROM.
Установите бит CMDEX в регистре NVM CTRLA с использованием привязанной ко времени последовательности CCP.

Флаг BUSY регистра NVM STATUS равен единице вплоть до завершения операции.


И вот что я нагородил :

Код
.macro stsi     ; Запись в порт IO
       ldi r16,@1
       sts @0,r16
.endm

stsi NVM_CMD,0x33
stsi NVM_ADDR0,0
stsi NVM_DATA0,0b10101010

stsi NVM_ADDR0,0
stsi NVM_CMD,0x34
stsi CPU_CCP,0xD8
stsi NVM_CTRLA,1


после этого устанавливается флаг NVMBUSY, когда он снимается жму ALT+6 смотрю на EEPROM и DATA MAPPED_EEPROM, там везде FF. Че не так делаю ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Юрий_СВ
сообщение Oct 13 2011, 13:05
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 4-05-08
Пользователь №: 37 272



Делаю так :
(предварительно включаю отображение EEPROM на пространство памяти)
Код
void x_EEPROM_Write_Byte(unsigned char * adr, unsigned char data)
{
asm volatile("cli\n\t"::);
while ((NVM.STATUS & NVM_NVMBUSY_bm) == NVM_NVMBUSY_bm);
*(unsigned char*)((unsigned int)adr+EEPROM_START_ADR)=data;
NVM.CMD=0x35;   //
NVM.ADDR0=adr;
NVM.ADDR1=((unsigned int)adr)>>8;
NVM.ADDR2=0;
CPU_CCP=0xd8;   //
NVM.CTRLA=0x01; // CMDEX
while ((NVM.STATUS & NVM_NVMBUSY_bm) == NVM_NVMBUSY_bm);
NVM.CMD=0x00;
asm volatile("sei\n\t"::);
}



Сообщение отредактировал Юрий_СВ - Oct 13 2011, 13:07
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Oct 13 2011, 13:22
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(Юрий_СВ @ Oct 13 2011, 17:05) *
Делаю так :
(предварительно включаю отображение EEPROM на пространство памяти)

Это как ? где ? в АВР студио 5 ?
посмотрел ваш код (не пробовал). Вы используете команду 0х35 -стирание и запись страницы, а что он записывает ? регистры DATA ? или буфер, который хз где.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Navovvol   ATxMEGA и EERPOM   Oct 13 2011, 11:47
|- - Юрий_СВ   Цитата(Navovvol @ Oct 13 2011, 16:22) Это...   Oct 13 2011, 13:44
|- - _Артём_   Цитата(Юрий_СВ @ Oct 13 2011, 16:44) NVM....   Oct 13 2011, 13:56
|- - Юрий_СВ   Цитата(_Артём_ @ Oct 13 2011, 16:56) Проб...   Oct 13 2011, 14:13
||- - _Артём_   Цитата(Юрий_СВ @ Oct 13 2011, 17:13) Не з...   Oct 13 2011, 15:11
||- - Юрий_СВ   Цитата(_Артём_ @ Oct 13 2011, 18:11) Из d...   Oct 13 2011, 15:22
|- - Navovvol   Цитата(_Артём_ @ Oct 13 2011, 17:56) Проб...   Oct 14 2011, 05:44
|- - _Артём_   Цитата(Navovvol @ Oct 14 2011, 08:44) В д...   Oct 14 2011, 11:55
|- - Navovvol   Цитата(_Артём_ @ Oct 14 2011, 15:55) Посм...   Oct 14 2011, 12:17
|- - _Артём_   Цитата(Navovvol @ Oct 14 2011, 15:17) Oli...   Oct 14 2011, 12:40
|- - Navovvol   Цитата(_Артём_ @ Oct 14 2011, 16:40) Это ...   Oct 16 2011, 15:58
|- - _Артём_   Цитата(Navovvol @ Oct 16 2011, 18:58) Что...   Oct 16 2011, 19:01
|- - Navovvol   Цитата(_Артём_ @ Oct 16 2011, 23:01) Врод...   Oct 17 2011, 10:13
|- - _Артём_   Цитата(Navovvol @ Oct 17 2011, 13:13) 4-а...   Oct 17 2011, 11:29
- - Navovvol   Я запускал только в симуляторе. Всё это дело пишет...   Oct 13 2011, 16:53
|- - Юрий_СВ   Цитата(Navovvol @ Oct 13 2011, 19:53) Я з...   Oct 13 2011, 20:17
- - Navovvol   А в симуляторе AVR Studio 5 для AtXmega вообще воз...   Oct 14 2011, 11:41
- - Юрий_СВ   По идее, считать ревизию контроллера можно чем уго...   Oct 17 2011, 18:13
|- - _Артём_   Цитата(Юрий_СВ @ Oct 17 2011, 21:13) По и...   Oct 17 2011, 18:56
- - Navovvol   Считал REV.H через JTAG. ))   Oct 18 2011, 12:54


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 16:30
Рейтинг@Mail.ru


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