Dotaz na PICe a Eprom

Martin Šaněk sanek.martin@volny.cz
Neděle Květen 23 20:49:49 CEST 2004


Hele chlapi (a damy jsou-li tu nejake) mozna se ptam blbe, ale tak zly
to se mnou zase neni.(alepon si myslim :-(() Na zacatku jsem posilal vypis zdrojaku a posilam
ho znovu:

program
         tady na tom miste jsou hodnoty k zapsani+adresa
       call      save_eprom
         tady na tom miste jsou hodnoty k zapsani+adresa
              .
              .
              .
       call      read_eprom
       sleep
         End

       
save_eprom
        bcf     INTCON,GIE
        banksel EEDATA
        movwf   EEDATA          ;data k zapsani do EEPROM
        banksel EECON1          
        bcf     EECON1,EEPGD    ;zapis do Datove casti pameti
        bsf     EECON1,WREN     ;v 1 povoluje zapis do EEPROM
        bcf     INTCON,GIE      ;zakazani vsech interrupts
        movlw   55h             ;nutna sequence 
        movwf   EECON2          ;nutna sequence 
        movlw   0AAh            ;nutna sequence 
        movwf   EECON2          ;nutna sequence 
        bsf     EECON1,WR       ;zapis do EEPROM
        banksel PIR2
        btfss   PIR2,EEIF       ;kontrola, zda uz je zapsano
        goto    $-1             ;neni -> zpet           
        bsf     INTCON,GIE
        banksel TMR0            ;banka 0
        return  


read_eprom
        movlw   20              ;adresa v EEPROM(snad uz je to dobre)
        call    rdee            ;precti hodnotu z pameti
        movwf   ZMENA           ;a uloz ji do RAM
        movlw   21              ;adresa v EEPROM
        call    rdee
        movwf   ROZBEH_CERPADLA
        movlw   22              ;adresa v EEPROM
        call    rdee
        movwf   TOPENI_TIME
        movlw   23              ;adresa v EEPROM
        call    rdee
        movwf   TEPLOTA_MAX
        movlw   24              ;adresa v EEPROM
        call    rdee
        movwf   FLAG_TOPENI
        return
rdee
       bsf     STATUS,RP1
        bcf     STATUS,RP0
        movwf   EEADR
        bsf     STATUS,RP0
        bcf     EECON1,EEPGD
        bsf     EECON1,RD
        bcf     STATUS,RP0
        movf    EEDATA,w
        banksel TMR0        ;navrat do banky0
        return

 No a jako dukaz, ze to je zapsane dobre si myslim je, ze kdyz to
 jenom zapisu a potom to prectu v programatoru, tak ty hodnoty jsou
 v EEPROM zapsane dobre a na spravnych mistech. Pouze to cteni je porad stejne
 spatne (0Fh). No ale kdyz se mezi obe volani da pauza (mam uz overeno
 100ms) tak to funguje. A ja se znovu ptam: PROC TAM MUSI BYT PAUZA???
 Martin
 p.s. cekam zdrcujici kritiku meho postupu :-()




Další informace o konferenci Hw-list