# PIC mikrokontrolleri >  Darba reģistrs

## kvaris

Sveiki!

Varbūt kādam ir nācies ar kaut ko tādu saskarties, vai tomēr es kļūdos? Ja man EECON1,EECON2,EEADR un EEDATA reģistri atrodas iekš bank1, tad, lai nolasītu baitu kādā adresē, laikam jau jāiet uz bank1. Tur pēc nolasīšanas es datus, kas atrodas EEDATA, ievietoju darba reģistrā W un pēc tam atgriežos bank0. Vai varētu būt tā, ka banku mainīšanas laikā izmainās W reģistrā ievietotā vērtība? Es zinu, ka EEDATA esmu ievietojis b'11111101', bet, atgriežoties 0-jā bankā, tas ir mainījies uz kaut ko pavisam citu? Lūdzu, iesakiet kaut ko, vai pasakiet, ko, iespējams, daru nepareizi!   ::

----------


## abergs

PICxxxx?
Kods?
Tad arī varēs kaut ko konkretāk pateikt.  ::

----------


## kvaris

::  
PIC16F676

Fragments no koda:

BSF                  STATUS,RP0         ;esam 1. bankā
MOVLW            0x00                    ;lasīsim baitu šajā adresē
MOVWF            EEADR                 ;uz EEADR reģistru sūtām 0x00
BSF                  EECON1,RD         ;sākam lasīšanu
MOVF               EEDATA,W           ;nolasītā vērtība darba reģistrā
BCF                  STATUS,RP0        ;atkal 0-tā banka

Kādai tagad vajadzētu būt vērtībai W reģistrā?  ::   Šķiet, ka tādai pašai kāda bija pēc komandas
MOVF               EEDATA,W
Liekas, ka 1. bankā W reģistrā jābūt EEDATA datiem. Droši vien tā arī ir. Bet, izejot no 1. bankas, W reģistra vērtība ir cita. Par to esmu pārliecinājies, sūtot W reģistra saturu bitu pa bitam uz I/O pinu un skatoties ar osciloskopu.
Lūk, tā...  ::  
kvaris

----------


## malacis

Kā tu bez debugera vari zināt, kas tajā EEDATA nolasās?

----------


## kvaris

Jā, ar debugeru nevaru pārliecināties, jo man tāda nav  ::  Kā to varētu uzzināt bez debugera, ja vispār var?

----------


## abergs

Ko ieteiktu:
1.ja EEPROM raksta programmators- pamainīt rakstīsanas adresi, piefiksēt kaut kādu sakarību starp nolasītajiem 
un vajadzīgajiem datiem;
2.ja datus raksta programma - uzlikt WRITE VERIFY (51lpp.) un skatīties kas sanāk  ::

----------

