PIC16F84 problem z pisaniem do EEPROM



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Tomasz Bednarz" <tb_at_nospam_internet.pl>
Subject: PIC16F84 problem z pisaniem do EEPROM
Date: Thu, 16 Jan 2003 13:13:21 +0100


Prubuje pisac do EEPROM (procedurka ponizej) i pisze sie - lecz jak
sprawdzam bit WR w EECON1 po zapisie i czekam na jego wyzerowanie to sie
zapetla - miejsce zaznaczylem gwiazdkami
Wiec co jest grane ?


_wreeprom movlw 0x00 ;adres min
movwf EEADR ;adres eeprom
movlw 0x35
movwf EEDATA ;dane
call _inicwr
bsf STATUS,RP0

_wrnnap1 btfsc EECON1,WR ;spr bitu wr; *****
goto _wrnnap1 ;wpis nie skonczony wr=1
bcf EECON1,WREN
bcf STATUS,RP0
return

_inicwr bsf STATUS,RP0 ;bank 1
bcf INTCON,GIE ;blokuj przerwania
bsf EECON1,WREN ;pozwolenie na wpis
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR ;start wpisu wr=1
bsf INTCON,GIE ;odblokuj przerwania
bcf STATUS,RP0 ;bank 0
return





Poprzedni Następny
Wiadomość
Spis treści
From: "alcon" <arturs_at_nospam_simplusnet.pl>
Subject: Re: PIC16F84 problem z pisaniem do EEPROM
Date: Thu, 16 Jan 2003 19:40:57 +0100



Użytkownik "Tomasz Bednarz" <tb_at_nospam_internet.pl> napisał w wiadomości
news:b067p5$il3$1_at_nospam_portraits.wsisiz.edu.pl...
Prubuje pisac do EEPROM (procedurka ponizej) i pisze sie - lecz jak
sprawdzam bit WR w EECON1 po zapisie i czekam na jego wyzerowanie to sie
zapetla - miejsce zaznaczylem gwiazdkami
Wiec co jest grane ?


_wreeprom movlw 0x00 ;adres min
movwf EEADR ;adres eeprom
movlw 0x35
movwf EEDATA ;dane
call _inicwr
bsf STATUS,RP0

_wrnnap1 btfsc EECON1,WR ;spr bitu wr; *****
goto _wrnnap1 ;wpis nie skonczony wr=1
bcf EECON1,WREN
bcf STATUS,RP0
return

_inicwr bsf STATUS,RP0 ;bank 1
bcf INTCON,GIE ;blokuj przerwania
bsf EECON1,WREN ;pozwolenie na wpis
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR ;start wpisu wr=1
bsf INTCON,GIE ;odblokuj przerwania
bcf STATUS,RP0 ;bank 0
return


Witam!

Jesli to dobrze przeanalizowałem to najpierw wlaczasz przerwanie a potem
dopiero czekasz na koniec zapisu do eeprom. (a przerwanie sie wylacza po to
zeby spokojnie mogl osbie zapisac dana do pamieci co trwa do 10ms!!!) byc
moze to jest przyczyna

moja sugestatia jest taka:

_wreeprom movlw 0x00 ;adres min
movwf EEADR ;adres eeprom
movlw 0x35
movwf EEDATA ;dane


_inicwr bsf STATUS,RP0 ;bank 1
bcf INTCON,GIE ;blokuj przerwania
bsf EECON1,WREN ;pozwolenie na wpis
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR ;start wpisu wr=1

btfsc eecon1,wr ;CZY ZAKONCZONY
ZAPIS
goto $-1 ; CZEKAJ
bcf eecon1,wren ; WYLACZENIE
ZEZWOLENIA NA ZAPIS

bsf INTCON,GIE ;odblokuj przerwania
bcf STATUS,RP0 ;bank 0

RETURN

Pozdrawiam Artur









Poprzedni Następny
Wiadomość
Spis treści
From: "Tomasz Bednarz" <tb_at_nospam_internet.pl>
Subject: Re: PIC16F84 problem z pisaniem do EEPROM
Date: Thu, 16 Jan 2003 21:58:43 +0100


[...]
Jesli to dobrze przeanalizowałem to najpierw wlaczasz przerwanie a potem
dopiero czekasz na koniec zapisu do eeprom. (a przerwanie sie wylacza po
to
zeby spokojnie mogl osbie zapisac dana do pamieci co trwa do 10ms!!!) byc
moze to jest przyczyna

Tak jak przelozylo sie odblokowanie przerwania na pozniej to zadzialalo
ale i pierwsze podejscie bylo dobre - po co trzymac tak dlugo przerwania
zablokowane !
problem byl w tym ze mialem ustawione przerwanie od TIMERA1 ale
na koncu jego obslugi nie zerowalem znacznika przerwania T0IE w INTCON
poprzwilem i dziala ale ....
teraz zapis do eeprom cosik psuje mi kierunkowosc portow i pewnie blad tez
jest nie tu gdzie mysle :-(
ech te PICe :-(

TB



Poprzedni Następny
Wiadomość
Spis treści
From: antispam_verox_at_nospam_a4.pl (Verox)
Subject: Re: PIC16F84 problem z pisaniem do EEPROM
Date: 17 Jan 2003 14:33:20 GMT


On Thu, 16 Jan 2003 21:58:43 +0100, Tomasz Bednarz napisał:
[...]
Jesli to dobrze przeanalizowałem to najpierw wlaczasz przerwanie a potem
dopiero czekasz na koniec zapisu do eeprom. (a przerwanie sie wylacza po
to
zeby spokojnie mogl osbie zapisac dana do pamieci co trwa do 10ms!!!) byc
moze to jest przyczyna

Tak jak przelozylo sie odblokowanie przerwania na pozniej to zadzialalo
ale i pierwsze podejscie bylo dobre - po co trzymac tak dlugo przerwania
zablokowane !

Ja robie tak:

write_ee:
bcf intcon,gie ; przerwania zablokowane
movf debug_eeadr,w ; adres
movwf eeadr
movf freql,w ; dana
movwf eedata

bsf status,rp0
bsf eecon1,wren
movlw 0x55
movwf eecon2
movlw 0xaa
movwf eecon2
bsf eecon1,wr

nop
nop
nop

bcf eecon1,wren
bcf status,rp0
bsf intcon,gie ; przerwania odblokowane
retlw 0

i nie czekam na koniec zapisu, działa świetnie od dwóch lat :-)

--
begin 666 signature.exe
[verox <at> a4 <dot> pl] vy 73! de SP9UOB
Proud to be 100 percent microsoft free. op. Tomek