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

 
 
> Не работает EEPROM меги8
oleg_lwd
сообщение May 29 2006, 09:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-05
Пользователь №: 10 131



При включении, выключении питания с EEPROM меги 8 либо всегда считываются все 0xFF, либо EEPROM нормально работает, т.е. считывается то, что было записано раньше. Причем, то же самое происходит уже на 3-ех изделиях. Кто нибудь сталкивался с таким? Что делать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
oleg_lwd
сообщение May 29 2006, 10:52
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-05
Пользователь №: 10 131



corO:сlr R23
out EEARL,R23
rcall EERead_seq
.....
rcall EERead_seq
....
....
ret

.def EErtmp =r31
.def mp16sL=r20
.def mp16sH=r21

EERead_seq:
in EErtmp,EEARL
sbi EECR,EERE
sbi EECR,EERE
in mp16sL,EEDR
inc EErtmp
out EEARL,EErtmp
sbi EECR,EERE
sbi EECR,EERE
in mp16sH,EEDR
inc EErtmp
out EEARL,EErtmp
ret

Программа работает уже давно под 8515, Mega16, 32.


BODEN естественно включен, EEPROM не сыпется!!!, а работает странно, как будто бы при включении питания нет какой-то инициализации.
Go to the top of the page
 
+Quote Post
bodja74
сообщение May 29 2006, 11:48
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(oleg_lwd @ May 29 2006, 13:52) *
EERead_seq:
in EErtmp,EEARL<<<<<<<
sbi EECR,EERE <<<<<<<<
sbi EECR,EERE <<<<<<<<
in mp16sL,EEDR
inc EErtmp
out EEARL,EErtmp
sbi EECR,EERE <<<<<<<<
sbi EECR,EERE <<<<<<<<


А зачем два раза подряд устанавливать EERE ,или контроллеру с первого раза не доходит smile.gifsmile.gifsmile.gif
И чтобы выбрать значение ячейки из ЕЕРROM нужно заносить значение в EEARL:EEARН,а не извлекать.

Пробуйте еще так ,может что с записью в ЕЕРROM.

Код
;Basic MacroCommander v 1.2 for AVR & Proteus

.include "c:\bodja\MacroCommander\m8def.inc"

;Вектора прерываний
.org 0                        ;VECTOR PROG
   rjmp PROG


;Начало программы
PROG:                         ;PROG
   ldi  R16,high(RAMEND)
   out  SPH,R16
   ldi  R16,low(RAMEND)
   out  SPL,R16

   out eearl,ZL               ;R20=EEP[Z]
   out eearh,ZH
   sbi eecr,EERE
   in  R20,eedr

   out eearl,ZL               ;EEP[Z]=R20
   out eearh,ZH
   out eedr,R20
   cli
   sbi eecr,EEMWE
   sbi eecr,EEWE
   sei
   sbic eecr,EEWE
   rjmp (PC-1)
;Конец программы (бесконечный цикл)
END_PROG:                     ;END PROG
   rjmp  END_PROG
Go to the top of the page
 
+Quote Post



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

 


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


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