Problemy z zapisem do EEPROM w PIC16F84: działanie funkcji WŁĄCZ a WYŁĄCZ
Zapis do EEPROM w PIC16
From: "planettt" <planettt_at_nospam_wp.pl>
Subject: Zapis do EEPROM w PIC16
Date: Sun, 10 Mar 2002 03:09:32 +0100
Pytanie z samej ciekawosci.....
Chcemy zapisac sobie jakies dane w wewnetrznym epromie PIC16F84
No i zaleznie od ustawien flagi COS1 I COS2 maja to byc inne dane.
Zapisu do eeprom dokonujemy przy pomocy sprawdzonej i przetestowanej
procedury, ktora zawsze dzialala
bez problemow. W ponizszym przykladzie (bardzo uproszczonym) wszystko
powinno byc OK, ale gdy wykonuje sie fynkcja WYLACZ wszystko dziala, gdy ma
wykonac funkcje WLACZ nie zapisuja sie dane do eeprom, reszta funkcji
wykonuje sie prawidlowo...w MPLAB obydwie funkcje dzialaja prawidlowo..
Nie ma znaczenia pod jakim adresem w eeprom zapisujemy dane i tak nie
zapisze ich z funkcji WLACZ.
Na innej sztuce procesora wszystko dziala poprawnie.
Czyzby wszystko wskazywalo na uszkodzony procesor ???
Czy jakas inna wersja PICa (ma niezbyt czytelny numer), ktora nie pozwala
na zapis do eeprom podczas obslugi przerwania ???
OBSLUGAPRZERWANIATIMERA
.
.
BTFSS COS1
CALL WLACZ
BTFSC COS2
CALL WYLACZ
.
.
RETFIE
WLACZ
MOVLW 0X0C ;ADRES W EEPROM
MOVWF EEADR
MOVLW 0X10 ;WARTOSC DO ZAPISANIA
CALL EEWRITE ;ZAPIS DO EEPROM
BSF PORTB,1
RETURN
WYLACZ
MOVLW 0X0D
MOVWF EEADR
MOVLW 0X20
CALL EEWRITE
BCF PORTB,1
RETURN
From: "Wojtek Sujkowski" <wpsujkowski_at_nospam_qdnet.pl>
Subject: Re: Zapis do EEPROM w PIC16
Date: Sun, 10 Mar 2002 20:10:24 +0100
No coz...najbardziej nasuwa mi sie takie wyjasnienie:
jesli flaga COS1=0 i jednoczesnie flaga COS2=1 to Twoj program wywola
procedure WLACZ a zaraz potem WYLACZ i masz koncowy efekt tak jak go
opisales.
Inna przyczyna moga byc roznice w wersji ukladow - C84, F84 i F84A .
Roznia sie one znacznie (p. www.mmicrochip.com) . Jesli do tego nie
masz najnowszej wersji MPLABa (nie tej z CD) to symulacja nie
odzwierciedla rzeczywistosci (dla tych prockow) - niestety :((.
Pozdrawiam,
Wojtek
Użytkownik "planettt" <planettt_at_nospam_wp.pl> napisał w wiadomości
news:a6efak$ltc$1_at_nospam_news.tpi.pl...
Pytanie z samej ciekawosci.....
Chcemy zapisac sobie jakies dane w wewnetrznym epromie PIC16F84
No i zaleznie od ustawien flagi COS1 I COS2 maja to byc inne dane.
Zapisu do eeprom dokonujemy przy pomocy sprawdzonej i przetestowanej
procedury, ktora zawsze dzialala
bez problemow. W ponizszym przykladzie (bardzo uproszczonym)
wszystko
powinno byc OK, ale gdy wykonuje sie fynkcja WYLACZ wszystko dziala,
gdy ma
wykonac funkcje WLACZ nie zapisuja sie dane do eeprom, reszta
funkcji
wykonuje sie prawidlowo...w MPLAB obydwie funkcje dzialaja
prawidlowo..
Nie ma znaczenia pod jakim adresem w eeprom zapisujemy dane i tak
nie
zapisze ich z funkcji WLACZ.
Na innej sztuce procesora wszystko dziala poprawnie.
Czyzby wszystko wskazywalo na uszkodzony procesor ???
Czy jakas inna wersja PICa (ma niezbyt czytelny numer), ktora nie
pozwala
na zapis do eeprom podczas obslugi przerwania ???
OBSLUGAPRZERWANIATIMERA
.
.
BTFSS COS1
CALL WLACZ
BTFSC COS2
CALL WYLACZ
.
.
RETFIE
WLACZ
MOVLW 0X0C ;ADRES W EEPROM
MOVWF EEADR
MOVLW 0X10 ;WARTOSC DO ZAPISANIA
CALL EEWRITE ;ZAPIS DO EEPROM
BSF PORTB,1
RETURN
WYLACZ
MOVLW 0X0D
MOVWF EEADR
MOVLW 0X20
CALL EEWRITE
BCF PORTB,1
RETURN
From: "planettt" <planettt_at_nospam_wp.pl>
Subject: Re: Zapis do EEPROM w PIC16
Date: Sun, 10 Mar 2002 23:16:47 +0100
Jest to najprawdopodobniej jakas wersja F84.... C84 ma mniej pamieci RAM a w
tym dziala cala do 0X4F.
Procesor ma jakies moze niecale 2 lata wiec F84A chyba odpada...
Flagi COS1 i COS2 sa ustawiane tak, ze nie ma mozliwosci wykonania WLACZ i
WYLACZ jednej po drugiej...
Na innym PIC16F84-04/P dziala prawidlowo....
No coz...najbardziej nasuwa mi sie takie wyjasnienie:
jesli flaga COS1=0 i jednoczesnie flaga COS2=1 to Twoj program wywola
procedure WLACZ a zaraz potem WYLACZ i masz koncowy efekt tak jak go
opisales.
Inna przyczyna moga byc roznice w wersji ukladow - C84, F84 i F84A .
Roznia sie one znacznie (p. www.mmicrochip.com) . Jesli do tego nie
masz najnowszej wersji MPLABa (nie tej z CD) to symulacja nie
odzwierciedla rzeczywistosci (dla tych prockow) - niestety :((.
Pozdrawiam,
Wojtek
Użytkownik "planettt" <planettt_at_nospam_wp.pl> napisał w wiadomości
news:a6efak$ltc$1_at_nospam_news.tpi.pl...
Pytanie z samej ciekawosci.....
Chcemy zapisac sobie jakies dane w wewnetrznym epromie PIC16F84
No i zaleznie od ustawien flagi COS1 I COS2 maja to byc inne dane.
Zapisu do eeprom dokonujemy przy pomocy sprawdzonej i przetestowanej
procedury, ktora zawsze dzialala
bez problemow. W ponizszym przykladzie (bardzo uproszczonym)
wszystko
powinno byc OK, ale gdy wykonuje sie fynkcja WYLACZ wszystko dziala,
gdy ma
wykonac funkcje WLACZ nie zapisuja sie dane do eeprom, reszta
funkcji
wykonuje sie prawidlowo...w MPLAB obydwie funkcje dzialaja
prawidlowo..
Nie ma znaczenia pod jakim adresem w eeprom zapisujemy dane i tak
nie
zapisze ich z funkcji WLACZ.
Na innej sztuce procesora wszystko dziala poprawnie.
Czyzby wszystko wskazywalo na uszkodzony procesor ???
Czy jakas inna wersja PICa (ma niezbyt czytelny numer), ktora nie
pozwala
na zapis do eeprom podczas obslugi przerwania ???
OBSLUGAPRZERWANIATIMERA
.
.
BTFSS COS1
CALL WLACZ
BTFSC COS2
CALL WYLACZ
.
.
RETFIE
WLACZ
MOVLW 0X0C ;ADRES W EEPROM
MOVWF EEADR
MOVLW 0X10 ;WARTOSC DO ZAPISANIA
CALL EEWRITE ;ZAPIS DO EEPROM
BSF PORTB,1
RETURN
WYLACZ
MOVLW 0X0D
MOVWF EEADR
MOVLW 0X20
CALL EEWRITE
BCF PORTB,1
RETURN