|
не пишится в EEPROM данные, Реально не пишится в EEPROM данные |
|
|
|
Apr 2 2007, 15:43
|
Участник

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711

|
Здравствуйте. Первый раз на вашем форуме. На том где я обычно страшиваю не кто не ответил .Посоветовали к вам. Проблема вот какая. (тему по ентому можно посмотреть сдесь http://www.fulcrum.ru/cgi-bin/bbs/mess_sel...564&page=1)В процессоре не записываються данные в EEPROM. Написал программу в AVR 4.12 всё нормально данные пишуться прогу зашил в проц мега 8L на этом блоке где идет запись в EEPROM он застопориваеться и даль всё. Вот мой кусок проги записи в эмуляторе всё тип топ ;запись расхода электроэнергии в EEPROM clr r22 ;обнуление переменной условия записи в EEPROM ldi r20,0 OUT $1E,R20 lds r21,$60 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP0: SBIC $1C,1 RJMP WEP0 ldi r20,1 OUT $1E,R20 lds r21,$61 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP1: SBIC $1C,1 RJMP WEP1 ldi r20,2 OUT $1E,R20 lds r21,$62 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP2: SBIC $1C,1 RJMP WEP2 ldi r20,3 OUT $1E,R20 lds r21,$63 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP3: SBIC $1C,1 RJMP WEP3 ldi r20,4 OUT $1E,R20 lds r21,$64 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP4: SBIC $1C,1 RJMP WEP4 ldi r20,5 OUT $1E,R20 lds r21,$65 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP5:SBIC $1C,1 RJMP WEP5 ldi r20,6 OUT $1E,R20 MOV r21,r15 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 WEP6:SBIC $1C,1 RJMP WEP6 ;обнуление памяти о расходе електроэнергии ldi r16,0b00000000 ;временно заносим данные о электроэнергии sts $60,r16 sts $61,r16 sts $62,r16 sts $63,r16 sts $64,r16 sts $65,r16 clr r15 ; чтение из EEPROM данных расхода электроэнергии в десятичной форме ; и запись их в память ldi R20,0 ;чтение 1 цифры OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP0:SBIC $1C,0 RJMP REP0 IN R21,$1D sts $60,r21 ldi R20,1 ;чтение 2 цифры OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP1:SBIC $1C,0 RJMP REP1 IN R21,$1D sts $61,r21 ldi R20,2 ;чтение 3 цифры OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP2:SBIC $1C,0 RJMP REP2 IN R21,$1D sts $62,r21 ldi R20,3 ;чтение 4 цифры OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP3:SBIC $1C,0 RJMP REP3 IN R21,$1D sts $63,r21 ldi R20,4 ;чтение 5 цифры OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP4:SBIC $1C,0 RJMP REP4 IN R21,$1D sts $64,r21 ldi R20,5 ;чтение 6 цифры OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP5:SBIC $1C,0 RJMP REP5 IN R21,$1D sts $65,r21 ldi R20,6 ;чтение номера счётчика из EEPROM OUT $1E,R20 LDI R20,1 OUT $1C,R20 REP6:SBIC $1C,0 RJMP REP6 IN R15,$1D ;запись номера счётчика в регистор ; конец чтение из EEPROM данных расхода электроэнергии в десятичной форме Потом сделал как доке сначала команду WEP0: SBIC $1C,1 RJMP WEP0 потом OUT $1E,R20 lds r21,$60 OUT $1D,R21 LDI R21,4 sts $3C,R21 LDI R21,2 sts $3C,R21 думал в этом деле нет всё осталось по прежнему. чегодальше делать где рыть не знаю
|
|
|
|
|
 |
Ответов
|
Apr 10 2007, 05:36
|
Участник

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711

|
Здравствуйте В пятницу поседел над програмкой вот чего получилось. Задачи у меня разделены сначала пишим в память потом в еепром потом обнуляем в памяти ячейки куда пишим считываем с еепром и записываем в память. Раньше у меня считывалось (убрал в програмке запись в еепром ) из еепром всё нормально как только занашу код записи прога не работаеть. Чего сделал в пятницу . Убрал все перечисленные ошибки зашил в память проца прогу (в имуляторе всё работает проверил) болт. Потом убрал опять записи в ячейки еепрома зашил всё считываеться . Потом вставил замись в еепром полько в первыю ячейку зашил заработало потом вставил запись во вторрую ячейку зашил работает теперь пишиться в две ячейки встави запиь в третью ячейку болт не стала работать прога. записи одинаковые но дальше 3 ячейки не пишит . Вообще не понял привожу новый код
Как он приведен пишится в ячейки еепрома в 0 и 1 если раблокировать запись в 3 прога на ней встанет колом пока мыслей нет в имуляторе всё окей Пожскажите ещё чего может быть ? может проц гнилой ? или я .................. rjmp reset reti reti reti reti reti reti reti reti reti reti rjmp RXC rjmp UDRE rjmp TXC
aa: sbic $12,4 ; сравнение Pd(0)=1 rjmp outr0 ; пограмма передачи низкого уровня символа rjmp outr1 outr0:cbi $12,4 ;вывод сигнала анти сброс (0) rjmp aa outr1:sbi $12,4 ;вывод сигнала анти сброс (1) wdr ;сбрасывать WDT(вачдок таймер rjmp aa reset: //////////////////////////////////////////////////////////////////////////////// ldi r16,0b00011001 ;установка защиты от зависания программы out $21,r16 ldi r16,0b00000001 ;временно заносим данные о электроэнергии sts $60,r16 ldi r16,0b00000010 sts $61,r16 ldi r16,0b00000011 sts $62,r16 ldi r16,0b00000100 sts $63,r16 ldi r16,0b00000101 sts $64,r16 ldi r16,0b00000110 sts $65,r16 ldi r16,0b10000001 ;временно заносим номер счётчика mov r15,r16 ldi r16,$DF ;инициализация стека out $3d,r16 clr r14 ;запись расхода электроэнергии в EEPROM WRITE_EEPROM: clr r22 ;обнуление переменной условия записи в EEPROM ldi r20,0 OUT $1F,R20 ldi r20,0 OUT $1E,R20 lds r21,$60 OUT $1D,R21 SBI $1C,2 SBI $1C,1 WEP0:SBIC $1C,1 RJMP WEP0
ldi r20,0 OUT $1F,R20 ldi r20,1 OUT $1E,R20 lds r21,$61 OUT $1D,R21 SBI $1C,2 SBI $1C,1 WEP1:SBIC $1C,1 RJMP WEP1 // ldi r20,0 // OUT $1F,R20 // ldi r20,2 // OUT $1E,R20 // lds r21,$62 // OUT $1D,R21 // SBI $1C,2 // SBI $1C,1 //WEP2:SBIC $1C,1 // RJMP WEP2 // ldi r20,0 // OUT $1F,R20 // ldi r20,3 // OUT $1E,R20 // lds r21,$63 // OUT $1D,R21 // SBI $1C,2 // SBI $1C,1 /////WEP3:SBIC $1C,1 // RJMP WEP3 // ldi r20,0 // OUT $1F,R20 // ldi r20,4 // OUT $1E,R20 // lds r21,$64 // OUT $1D,R21 // SBI $1C,2 // SBI $1C,1 //WEP4:SBIC $1C,1 // RJMP WEP4 // ldi r20,0 // OUT $1F,R20 // ldi r20,5 // OUT $1E,R20 // lds r21,$65 // OUT $1D,R21 // SBI $1C,2 // SBI $1C,1 //WEP5:SBIC $1C,1 // RJMP WEP5
// ldi r20,0 // OUT $1F,R20 // ldi r20,6 // OUT $1E,R20 // mov r21,r15 // OUT $1D,R21 // SBI $1C,2 // SBI $1C,1 //WEP6:SBIC $1C,1 // RJMP WEP6
;обнуление памяти о расходе електроэнергии ldi r16,0b00000000 ;временно заносим данные о электроэнергии sts $60,r16 sts $61,r16 sts $62,r16 sts $63,r16 sts $64,r16 sts $65,r16 clr r15 ; чтение из EEPROM данных расхода электроэнергии в десятичной форме ; и запись их в память
ldi R20,0 ;чтение 1 цифры OUT $1E,R20 SBI $1C,0 REP0:SBIC $1C,0 RJMP REP0 IN R21,$1D sts $60,r21
ldi R20,1 ;чтение 2 цифры OUT $1E,R20 SBI $1C,0 REP1:SBIC $1C,0 RJMP REP1 IN R21,$1D sts $61,r21
ldi R20,2 ;чтение 3 цифры OUT $1E,R20 SBI $1C,0 REP2:SBIC $1C,0 RJMP REP2 IN R21,$1D sts $62,r21
ldi R20,3 ;чтение 4 цифры OUT $1E,R20 SBI $1C,0 REP3:SBIC $1C,0 RJMP REP3 IN R21,$1D sts $63,r21
ldi R20,4 ;чтение 5 цифры OUT $1E,R20 SBI $1C,0 REP4:SBIC $1C,0 RJMP REP4 IN R21,$1D sts $64,r21
ldi R20,5 ;чтение 6 цифры OUT $1E,R20 SBI $1C,0 REP5:SBIC $1C,0 RJMP REP5 IN R21,$1D sts $65,r21
ldi R20,6 ;чтение номера счётчика из EEPROM OUT $1E,R20 SBI $1C,0 REP6:SBIC $1C,0 RJMP REP6 IN R15,$1D ;запись номера счётчика в регистор ; конец чтение из EEPROM данных расхода электроэнергии в десятичной форме
//////////////////////////////////////////////////////////////////////////// ;установка режима порт D ldi r16,0b11110010 ldi r17,0b00001101 out $11,r16 ;установка регистра DDR_D out $12,r17 ;установка регистра PORT_D ;установка режима USART ldi r23,0b00000010 out $0B,r23 ;установка регистра UCSRA ldi r23,0b11011000 ;разрешаем работу приёмника/передатчика и разрешаем прерывания по завершению приёма/передачи out $0A,r23 ;установка регистра UCSRB ldi r23,0b00000000 out $20,r23 ;установка регистра UBRRH ldi r23,0b10000110 out $20,r23 ;установка регистра UCSRC ldi r23,0b01100111 out $09 ,r23 ;установка регистра скорости приёма/передачи UBRRL sei ;разрешение прерывания rjmp aa
RXC: sbi $12,5 ;вывод сигнала приём закончен in r23,$0C ;получение данных с регистра USART cpse r23,r15 ;сравнение данных регистра приёма USART с номером счётчика rjmp felse ;не совпадение кода и на подпрограмму о передачи принятых данных sbi $12,6 ;вывод сигнала о совподении кода lds r23,$60 ;данные совпадают с номером счётчика out $0C,r23 ldi r23,0b11111000 out $0A,r23 ; разрешаем прерывание по опусташению регистра данных USART inc r14 reti UDRE: mov r23,r14 cpi r23,0b00000001 brne writ3 lds r23,$61 ;передача второй цифры out $0C,r23 inc r14 reti writ3:cpi r23,0b00000010 brne writ4 lds r23,$62 ;передача третей цифры out$0C,r23 inc r14 reti writ4:cpi r23,0b00000011 brne writ5 lds r23,$63 ;передача четвёртой цифры out $0C,r23 inc r14 reti writ5:cpi r23,0b00000100 brne writ6 lds r23,$64 ;передача пятой цифры out $0C,r23 inc r14 reti writ6:lds r23,$65 ;передача шестой цифры out $0C,r23 clr r14 ldi r23,0b11011000 out $0A,r23 ;заприщаем работу прерывания по опустошению регистра приёма/передачи reti TXC: sbi $12,7 ;вывод сигнала завершения передачи reti
felse:mov r24,r23 out $0C,r24 ldi r24,0b10101010 out $0C,r24 reti
|
|
|
|
Сообщений в этой теме
Sholkin не пишится в EEPROM данные Apr 2 2007, 15:43 Dima_Ag ПОсмотрите в Datasheet на MEGA8 , на стр.20 и 21 п... Apr 2 2007, 15:53 Kuzmi4 2 Sholkin - вот, собсно всё работает и на 8-й и на... Apr 3 2007, 08:29 Dopler Не юбижайтесь, но довольно трудно разбираться в чу... Apr 3 2007, 10:22 sadat Приведу и свой код:
A = R16 (привык называть регис... Apr 3 2007, 12:32 Sholkin Здравствуйте
вроде в моём коде все коментарии про... Apr 4 2007, 10:30 bodja74 Цитата(Sholkin @ Apr 4 2007, 10:30) Чужое... Apr 4 2007, 11:18 Sholkin bodja74 вы немного не правы . Симуляторе работает ... Apr 5 2007, 06:35 mempfis_ Привет
вот ещё мой код который стопроцентно рабочи... Apr 7 2007, 16:34 defunct Sholkin
Цитата...
OUT $1E,R20
lds r21,... Apr 7 2007, 17:10 bodja74 1 Есть такая волшебная строчка
.include "C:... Apr 10 2007, 18:52 defunct Цитата(bodja74 @ Apr 10 2007, 17:52) 3 Ес... Apr 11 2007, 00:20  IgorKossak Цитата(defunct @ Apr 11 2007, 00:20) ... ... Apr 11 2007, 12:52 Wild007 Полностью согласен с:
Цитата(bodja74 @ Apr 10... Apr 20 2007, 15:41 Sholkin Здравствуйте.
Зделал всё как мне сказали выше бора... Apr 17 2007, 05:37 Sholkin Парни что реально не кто не сможет помочь ?
Обидно Apr 20 2007, 15:26 Sholkin А если так уже программа написана вся . Ведь это т... Apr 27 2007, 14:46 SasaVitebsk Я вот смотрю, что здесь все по своей культурности ... Apr 27 2007, 20:58 Sholkin Спасибо за оптвет Александр
Уже начал оформлять и ... May 2 2007, 10:17 ae_ Цитата(Sholkin @ May 2 2007, 16:17) Спаси... May 2 2007, 11:29 KamikFROMrussia Здорова всем!
Проблема с EEPROM:
Программирую... May 6 2007, 21:07 singlskv Цитата(KamikFROMrussia @ May 7 2007, 01:0... May 6 2007, 21:25  defunct Цитата(singlskv @ May 6 2007, 23:25) Во-п... May 7 2007, 11:24   IgorKossak Цитата(defunct @ May 7 2007, 14:24) Что з... May 7 2007, 16:53 aesok Цитата(KamikFROMrussia @ May 7 2007, 01:0... May 6 2007, 22:31 Sholkin Здравствуйте.
ae_ вы немного не правы тогда у мен... May 7 2007, 12:35 ae_ Цитата(Sholkin @ May 7 2007, 21:35) Тепер... May 8 2007, 03:45 mdmitry 2KamikFROMrussia
В WINAVR есть библиотека для раб... May 7 2007, 13:37 Sholkin Здравствуйте .
Код не могу привести вставляю тут н... May 10 2007, 06:09 ae_ Цитата(Sholkin @ May 10 2007, 15:09) Здра... May 10 2007, 07:19 Sholkin Здравствуйте .
Сейчас всё наладилось могу предоста... May 14 2007, 22:45 ae_ Цитата(Sholkin @ May 15 2007, 07:45) ...
... May 15 2007, 00:15 Sholkin Здраствуйте.
То что это мой код я понял . Но почем... May 15 2007, 23:14 ae_ Цитата(Sholkin @ May 16 2007, 12:14) Здра... May 15 2007, 23:37 Sholkin Здравствуйте.
Вот этого фрагмента не достаточно
W... May 17 2007, 12:59 defunct Цитата(Sholkin @ May 17 2007, 14:59) Вот ... May 17 2007, 22:51 Sholkin Привет.
Привел все как надо на выходных (часть код... May 23 2007, 07:26 defunct Цитата(Sholkin @ May 23 2007, 09:26) Чего... May 23 2007, 14:47 IgorKossak Ну раз уж такое здесь началось, defunct получает п... May 23 2007, 16:03
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|