проблема с EEPROM

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Сообщения: 136
Зарегистрирован: Ср янв 23, 2013 10:58:31

Сообщение Dessp »

Всем привет.

Пишу в Атмел студио на ассемблере в EEPROM :

.eseg
.dw 0x0A10,0x0A0A,0x0000,0x9200


компилируется все классно :

[.cseg] 0x000000 0x0003a4 912 20 932 2048 45.5%
[.dseg] 0x000060 0x000060 0 0 0 128 0.0%
[.eseg] 0x000000 0x000008 0 8 8 128 6.3%

а вот в дебаг режиме когда читаю из EEPROM то все время читаю 0xFF :

clr ZL
out EEAR,ZL
sbi EECR,EERE
in R17,EEDR

когда юзаю емуляцию в протеусе, тоже самое.

Что делать?
Реклама
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

проц какой?

Вот рабочий код, надо ждать когда закончится чтение, а не сразу идти дальше

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

void EEPROM_read(unsigned char ucAddress, unsigned char *ucData, unsigned char	ucLen)
{
char adr;

for(adr = ucAddress;adr<ucAddress+ucLen;adr++)
{
while(EECR & (1<<EEPE));
// Set up address and data registers 
EEAR = adr;

EECR |= (1<<EERE);

while(EECR&(1<<EERE));// <----вот это у тебя пропущено

*ucData = EEDR;

ucData++;
}
}
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Реклама
Встал на лапы
Сообщения: 136
Зарегистрирован: Ср янв 23, 2013 10:58:31

Сообщение Dessp »

atiny2313

ждать? а в даташите написано ждать ненадо, там все за один такт идет :

; Set up address (r18:r17) in address registers
out EEARH, r18
out EEARL, r17
; Start eeprom read by writing EERE
sbi EECR, EERE
; Read data from data register
in r16, EEDR
ret

вот только загвоздка в том, что при дебагинге я не вижу чтобы выполнялась вот эта задача :
sbi EECR, EERE

в i/o memory не вижу чтобы записывалось '1'

в коде ничево в EEPROM не пишу, вот и не понимаю почему не работает :(
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

Мой код попробуй.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 136
Зарегистрирован: Ср янв 23, 2013 10:58:31

Сообщение Dessp »

pcb писал(а):Мой код попробуй.
не могу, не умею писать на C++
Реклама
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

wait:
sbis EECR, 1<<EEPE
jmp wait
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Реклама
Встал на лапы
Сообщения: 136
Зарегистрирован: Ср янв 23, 2013 10:58:31

Сообщение Dessp »

нет, так не помогло...

помогло вот как. если вместо того чтобы писать что то на сегменте .eseg я пишу прямо в программе в EEPROM то оно у меня все работает, и в дебагере и в протеусе.

отсюда вопрос, почему у меня не читаеться EEPROM когда я ево пишу через .eseg а потом загружаю фаилом в протеус?

ибо это глупо писать в EEPROM во время программы, я хочу записывать EEPROM через программатор.

что я делаю не правильно?
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

проект подцепи с исходником
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Встал на лапы
Сообщения: 136
Зарегистрирован: Ср янв 23, 2013 10:58:31

Сообщение Dessp »

приклепил.

в дебаге на авр студие ЕЕПРОМ везде ФФ, в протеусе тожесамое :(
Вложения
EEPROM.rar
(85.97 КБ) 146 скачиваний
Встал на лапы
Сообщения: 136
Зарегистрирован: Ср янв 23, 2013 10:58:31

Сообщение Dessp »

в протеусе вроде разобрался. там есть debug - > erase persistent model data.

а вот в атмел студио все еше никак не могу зделать чтобы в дебаге показывалось значения которые я пишу через .eseg :(
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

pcb писал(а):надо ждать когда закончится чтение
С каких это пор?
Вы, случайно, с записью не путаете?
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

Вставь вот этот код вместо своего.

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

INT_0:
		sbic	EECR,EEPE
		rjmp	INT_0
		out		EEAR,ZL
		sbi		EECR,EERE
wait:		sbic	EECR,EERE
		rjmp	wait
		in		R17,EEDR
		inc		ZL
		out		PORTB,R17
		reti
проверил, усё работает, в регистре р17:10, А,А дальше проверять не стал. Давай уже сам.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Ответить

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