logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[bascom atmega] odczyt danych z wew eeprom dane BIT

IMEX 06 Kwi 2011 09:31 1985 3
REKLAMA
  • #1 9366488
    IMEX
    Poziom 20  
    Witam serdecznie
    Tym razem to ja mam problem.

    Sprawa dotyczy odczytu do programu danych z wew eepromu

    żeby nie przeciagać - mam kilka zmiennych BIT
    Readeeprom Hbyte(1) , 2
         Ar_tr1 = Hbyte(1).0
         Term_ena = Hbyte(1).1
         Tryb_letni = Hbyte(1).2
         Tryb_letni1 = Hbyte(1).3
         Tryb_letni2 = Hbyte(1).4
         Tryb_letni3 = Hbyte(1).5
         C_praca = Hbyte(1).6
         Light_on = Hbyte(1).7
    
    
    Readeeprom Hbyte(2) , 4
         Light1_on = Hbyte(2).0
         Ap_on = Hbyte(2).1
         Wiatr_ena = Hbyte(2).2
         Op5 = Hbyte(2).3
         Op6 = Hbyte(2).4
         P_1_ena = Hbyte(2).5
         P_2_ena = Hbyte(2).6
         P_3_ena = Hbyte(2).7
    
    Readeeprom Hbyte(3) , 6
         P_4_ena = Hbyte(3).0


    jest to odczyt - poprawnie czyta dane z 2 komórki i jest oki - program rozumie te dane - ale problem powstaje z 4
    Dane napewno zapisują sie poprawnie bo stosuje tylko tak dla siebie odczyt bitów dla sprawdzenia
    
    ' ******* odczyt
    Readeeprom Xyz , 4
    
    ' ******* wyświetl na lcd co pobrałeś
           Locate 2 , 3
           Lcd Bin(xyz)

    Ten frabment potwierdza fakt że dane są zapisywane do pamięci - po resecie są poprawnie odczytywane stan 0 lub 1 w zależności jak zostały zapisane w następujący sposów
    Hbyte(1) = 1
    
            Hbyte(1).0 = Ar_tr1
            Hbyte(1).1 = Term_ena
            Hbyte(1).2 = Tryb_letni
            Hbyte(1).3 = Tryb_letni1
            Hbyte(1).4 = Tryb_letni2
            Hbyte(1).5 = Tryb_letni3
            Hbyte(1).6 = C_praca
            Hbyte(1).7 = Light_on
    
    Writeeeprom Hbyte(1) , 2
    
    Hbyte(1) = 1
            Hbyte(1).0 = Light1_on
            Hbyte(1).1 = Ap_on
            Hbyte(1).2 = Wiatr_ena
            Hbyte(1).3 = Op5
            Hbyte(1).4 = Op6
            Hbyte(1).5 = P_1_ena
            Hbyte(1).6 = P_2_ena
            Hbyte(1).7 = P_3_ena
    
    Writeeeprom Hbyte(1) , 4
    
    Hbyte(1) = 1
           Hbyte(1).0 = P_4_ena
    
    
    Writeeeprom Hbyte(1) , 6


    Po odczycie dane nie są importowane do ustawień w programie czyli nie następuje poprawnie ich odczyt.

    Gdzie jest błąd w odczycie danych z eeprom

    dziękuję za pomoc
  • REKLAMA
  • REKLAMA
  • #3 9366671
    IMEX
    Poziom 20  
    czytaj dokładnie

    jak odczytam cały bajt i go wyświetlę to jest OK Lcd Bin(xyz) - znaczy w ten sposób sprawdziłem sobie czy dane mi się zapisują ale jak czytam pojedynczo to nie pobiera danych

    Jak zauważyłeś lub nie podzieliłem odczyt po 8 bit-ów
    Pierwsza ósemka jest odczytywana i rozumiana dla programu natomiast druga ósemka już nie - i tu mam właśnie ten problem - dlaczego tak się dzieje
  • #4 9367343
    nsvinc
    Poziom 35  
    Nie da się zaadresować jednego bitu. Adresuje się po 8 bitów, więc jak czytasz całość, bascom spod konkretnego adresu pobiera bajt w miejscu.
    Najpewniej bascom nie obsługuje wyłuskiwania pojedynczych bitów z zmiennej będącej w eepromie.

    Odczytaj cały bajt do zmiennej w ramie, a dopiero wtedy dziel go na bity - metoda fool-proof.
REKLAMA