Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.01.2010, 07:42
|
|
Прохожий
Регистрация: 05.10.2009
Сообщений: 7
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
PIC16f684 и EEPROM
Здравствуйте, у меня такая проблема:
по адресу 0х02 записал 0х22, теперь нужно прочитать - сравнить, если это так - переход на "ST2", нет - "ST1_1"..
Записывается все верно (проверял считывая EEPROM программатором), и при записи проверка проходит успешно, но при попытке прочитать и сравнить в другой части программы, к сожалению не удается, точнее переход к "ST1_1".
Код:
Код:
|
EEREAD
BSF STATUS, RP0 ; Bank1
MOVLW 0X02 ; Any location in Data EEPROM memory space
MOVWF EEADR ; Address to read
BSF EECON1, RD ; YES, Read the value written
BCF STATUS, RP0 ; Bank0
MOVF EEDATA,W
MOVWF registr
MOVLW 0X22
SUBWF registr, W
BTFSS STATUS, Z ; Is difference 0?
GOTO ST1_1 ;NO
GOTO ST2 ; YES |
Заранее благодарен.
|
|
|
|
27.01.2010, 10:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.01.2005
Адрес: Воронеж
Сообщений: 1,384
Сказал спасибо: 24
Сказали Спасибо 243 раз(а) в 182 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Сначала перепутал с 16F84. Увас EEDATA не в том банке и имя ему EEDAT
Последний раз редактировалось otest; 27.01.2010 в 11:21.
|
|
|
|
28.01.2010, 18:04
|
|
Прохожий
Регистрация: 05.10.2009
Сообщений: 7
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Все исправил, проблема со считыванием - сравнением, перепробовал все варианты...
Код:
|
EEWRITE
; Запись
BSF STATUS,RP0 ; Bank1
MOVLW 0x05
MOVWF EEADR
MOVLW 0x01
MOVWF EEDAT
BSF EECON1,WREN ; Enable Write
BCF INTCON,GIE ; Disable INTs.
MOVLW 0x55
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
BSF EECON1,WR
BTFSC EECON1,WR
GOTO $-1
BCF PIR1,EEIF
BSF INTCON,GIE ; Enable INTs.
; CHECK
BSF STATUS,RP0 ; Bank1
MOVLW 0x05
MOVWF EEADR
BSF EECON1,RD ; YES, Read the value written
BCF STATUS,RP0 ; Bank0
MOVLW 0x01
SUBWF EEDAT,W
BTFSS STATUS,Z ; Is difference 0?
GOTO LOOP ;NO
RETURN ;OK |
|
|
|
|
28.01.2010, 18:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Сообщение от Sergey_ritm
|
BCF STATUS,RP0 ; Bank0
MOVLW 0x01
SUBWF EEDAT,W
|
В PIC16F684 ВСЕ регистры EEPROM в банке 1
__________________
Мыслю, следовательно существую
|
|
|
|
28.01.2010, 18:20
|
|
Прохожий
Регистрация: 05.10.2009
Сообщений: 7
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Сообщение от Popeye
|
Сообщение от Sergey_ritm Посмотреть сообщение
BCF STATUS,RP0 ; Bank0
MOVLW 0x01
SUBWF EEDAT,W
В PIC16F684 ВСЕ регистры EEPROM в банке 1
|
Ставлю
BSF STATUS,RP0
SUBWF EEDAT,W
процессор зависает...
|
|
|
|
28.01.2010, 18:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Предлагаю
Код:
|
; CHECK
BSF STATUS,RP0 ; Bank1
MOVLW 0x05
MOVWF EEADR
BSF EECON1,RD ; YES, Read the value written
MOVFW EEDAT
BCF STATUS,RP0 ; Bank0
SUBLW 0x01
BTFSS STATUS,Z ; Is difference 0?
GOTO LOOP ;NO
RETURN ;OK |
Таким образом останетесь в банке 0
__________________
Мыслю, следовательно существую
|
|
|
|
28.01.2010, 18:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.01.2005
Адрес: Воронеж
Сообщений: 1,384
Сказал спасибо: 24
Сказали Спасибо 243 раз(а) в 182 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Перенесите EEDAT в TEMP и сравнивайте.
|
|
|
|
28.01.2010, 19:28
|
|
Прохожий
Регистрация: 05.10.2009
Сообщений: 7
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Сообщение от Popeye
|
MOVFW EEDAT BCF STATUS,RP0 ; Bank0 SUBLW 0x01
|
Ух ты! это вроде бы работает..
Спасибо огромное, Popeye.
otest, без ваших советов, тоже ничего бы не получилось, спасибо!
пока протестирую еще со всякими вариантами...
Последний раз редактировалось Sergey_ritm; 28.01.2010 в 19:33.
|
|
|
|
29.01.2010, 21:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Sergey_ritm, знаете ли, есть воспоминание что нелишне поставить между BSF ECON1,RD и MOVFW EEDAT несколько инструкций NOP. Я доходил до семи, параноя. Хотя это было в силе для 16F877A версии 4 (5 лет назад), в даташите на 16F684 ничего подобного нет. Но как говорится кашу маслом..... За глаза может быть двух NOP хватит.
А PIC16F684 на мой взгляд удачная находка. Для себя искал нечто подешевле, чтоб имелось в магазинах, поменьше размером, с АЦП и ECCP модулями. И чтоб могло работать от батарейного питания 2-3V. Микрочипский селектор MAPS дал именно его. Один проект сделал, однако на втором получилось очень неприятное недоразумение со сторожевым таймером. Тупо просмотрел его структуру, вообще не вник, положился на информацию на картинке. В результате 10 дней бился как идиот, ругал компилятор. Как почти всегда ошибка моя. Что то не дочитал, не просмотрел, не разобрался. Плачу дань самоуверености. Такие дела.
Удачи!
__________________
Мыслю, следовательно существую
|
|
|
|
30.01.2010, 16:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: PIC16f684 и EEPROM
Сообщение от Sergey_ritm
|
Ставлю
BSF STATUS,RP0
SUBWF EEDAT,W
|
пишите так
BANKSEL EEDAT
SUBWF EEDAT,W
BANKSEL EECON1
MOVWF EECON1
и не думайте, в каком банке в каком роцессоре находится требуемый регистр.. и какое количество бит требуется установить или сбросить...
компилятор сам подставить нужное...
Последний раз редактировалось picavr; 30.01.2010 в 16:51.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:27.
|
|