|
Ребята такой вопрос работаю с EEPROM, в процессе записи нужен ли обнулять регистор EEDATA. Если идет обнуление на остальных ячейках записывает значение 00. Подскажите как быть... |
|
|
Для чтения: * нужно записать в соответствующий регистр адресс и затем прочитать с регистра EEDATA значение. * для записи: занести значение в EEDATA, занести адресс, выполнить "волшебную последовательность" |
|
|
Учтите, что данный товарищ так и не предоставил доказательств того, что это не "развод". |
|
|
Уважаемый Gregory я что то Вас не понимаю о чем вы можно конкретно.
|
|
|
peling: обнулять регистор EEDATA. нет, читайте ДШ, там всё разжёвано При записи в память EEPROM, необходимо сначала записать требуемый адрес в EEADR регистр и данные в EEDATA регистр. Затем выполнить специальную последовательность команд, производящуюю непосредственную запись: bcf INTCON,GIE movlv 55h movwf EECON2 movlv AAh movwf EECON2 bsf EECON1,WR ;установить WR бит, начать запись |
|
|
Сергей К я считоваю инфо. с компьютера через LPT порт порт работает в режыме ECP портом (микрокотроллером)управляет программа написанн-й на C++ ::::::::: начало>>>> 1 передача лог"1" на микроконтроллер после принятие ORG 0X000 START CLRF PORTA CLRF PORTB BSF STATUS,RP0 MOVLW B'01001' MOVWF TRISA MOVLW B'11111111' MOVWF TRISB BCF STATUS,RP0 i movf PORTA,w movwf count btfss count,0 goto i MOVLW B'00010' ; передача ответ сигнала MOVWF PORTA после получения ответ сигнала компьютер выставляет первый блок(8бит) в регистор DATA порт LPT контроллер считовает и записивает в первую ячейку ; scan2 bcf status,2 movf PORTB,w btfsc status,2 goto scan2 movwf EEDATA movlw 0x0000 movwf EEADR bsf status,5 bsf EECON1,WREN MOVLW 0x055 MOVWF EECON2 MOVLW 0x0AA MOVWF EECON2 k BSF EECON1,WR btfsc EECON1,WR goto t goto k t bcf EECON1,WREN bcf status,RP0 RETURN таким же образом записиваю 2 ой блок но во время считование ошыбки послед.число оказовается в обоех ячейках????????? |
|
|
А подождать, пока запись закончится? Посмотрите документацию на МК. Там пример есть. (microchip.ru) Запись 1 байта в EEPROM длится некоторое время (не зависит от тактовой частоты). Сейчас под рукой документации нету, там нужно проверить флаг "завершения записи". |
|
|
кусок из рабочей программы: RD_EE BCF STATUS,RP0 ;----------подпрограмма ЧТЕНИЯ из EEPROM \ MOVLW 01h ;адрес ячейки EEPROM, где хранится TB \ MOVWF EEADR BSF STATUS,RP0 BSF EECON1,RD BCF STATUS,RP0 MOVF EEDATA,0 ;W=EEDATA RETURN ; / WR_EE ;------ЗАПИСЬ в EEPROM\________________________ BSF STATUS,RP0 ;банк1 \ BSF EECON1,WREN ;разрешить ЗП \ BCF INTCON,GIE ;запрет прерываний MOVLW 055h ;ЗП 55 MOVWF EECON2 ; MOVLW 0AAh ;ЗП АА MOVWF EECON2 ; BSF EECON1,WR ;установить бит начала записи BCF STATUS,RP0 ;банк0 CALL DELAY1 BCF STATUS,WREN ;запрет записи в EEPROM / RETURN ; _______________________________/ |
|
|
Незабывайте "ждать"(пауза) до начала новой записи в ячейку. P.S.: Там есть бит об окончании записи! |
|
|
Мужики как сказали сделал все отлично работает спасибо Вам всем. |
|