Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[mega8][BASCOM]Jak zapisać i odczytać dane z 24Cxx ?

monty_p 05 Jul 2008 22:47 16679 143
Computer Controls
  • #31
    monty_p
    Level 18  
    Nic nie wymyślę.

    Przerobiłem już troche Bascom College, szukałem jakiś zamków z kluczem dallas. Nie wychodzi i już :(

    Czy takie coś, jako zapis SN do Eproma, jest poprawny?
    Code:

    Odczyt:
    1wwrite &H33                                               
    For I = 1 To 8
    Ar(i) = 1wread()                                           
    Next I
    I = 0
    For I = 1 To 8
    Call Write_eeprom(licznik , Ar(i))                         
    Incr Licznik                                               
    Next I
    Return

    Sub Write_eeprom(adres As Byte , Value As Byte)
    I2cstart                                                   
    I2cwbyte I                                                 
    I2cwbyte Adres                                             
    I2cwbyte Value                                             
    I2cstop                                                     
    Waitms 10                                                   
    End Sub


    Dodano po 42 [sekundy]:

    ...Nie to, że chcę gotowca... Nie potrafię tego zrobić
  • Computer Controls
  • Helpful post
    #32
    Balu
    Level 38  
    Quote:

    Sub Write_eeprom(adres As Byte , Value As Byte)
    I2cstart
    I2cwbyte I
    I2cwbyte Adres
    I2cwbyte Value
    I2cstop
    Waitms 10
    End Sub

    Nie wiem jak w bascomie bo w nim różnie bywa;P Ale to I to jest zmienna globalna?

    Dodano po 1 [minuty]:

    A jeśli nie chcesz gotowca, ale nie potrafisz, to się za to nie bierz:)
    A jeśli musisz, zleć komuś na odpowiednim forum albo walcz;)
  • Computer Controls
  • Helpful post
    #33
    JmL(TM)
    Level 24  
    Popatrz tutaj: https://www.elektroda.pl/rtvforum/topic839640.html

    A z ta zmienna to uwazaj bo zmienna I to u ciebie zmienna globalna i pewnie sie przez to robi syf. Zmienna lokalna w funkcji deklarujesz dodajac na poczatku "Local". Tutaj masz przyklad:

    Code:
    Sub Wyswietl(c1 As Byte , C2 As Byte , C3 As Byte , C4 As Byte , C5 As Byte , C6 As Byte , Lp As Byte , Po1 As Byte , Po2 As Byte)
    
    'a to jest procedura wyświetlania cyfr na wyświetlaczu LED
    ' ta procedura musi być wywoływana co chwilę
    Local Led_addr As Byte
    Local Led_enn As Byte

    Incr C1
    Incr C2
    Incr C3
    Incr C4
    Incr C5
    Incr C6
    Led_addr = &B11111110
    For Led_enn = 1 To 7
      Portb = &B11111111
    {...}


    Ten fragment pochodzi z: http://www.edw.com.pl/forum/viewtopic.php?p=24483
    moze cos tam na niej przydatnego znajdziesz. W kazdym razie najpierw poczytaj troche z tego pierwszego linka, ktory na poczatku wkleilem, a pozniej pokaz co ci sie udalo zrobic :D
  • #35
    JmL(TM)
    Level 24  
    Balu zatem sciagnalem help'a do bascom'a i tam jest taki oto przyklad:

    Code:
    {...}
    

    Sub Testvar(b As Byte , I As Integer , W As Word , L As Long , S As String)
        Local X As Byte

        X = 5                                                     'assign local

        B = X
        I = -1
        W = 40000
        L = 20000
        S = "test"
    End Sub

    {...}
  • #36
    Balu
    Level 38  
    Tak tak, do Ciebie nic nei mam - masz rację zupełną:)

    Chodzi mi o to, że nie inicjalizował tej zmiennej wewnątrz funkcji, więc nie chodziło mu na pewno o local;)
  • #37
    monty_p
    Level 18  
    Nie myślcie, że czekam na gotowca :P

    Nie pisze nic, bo usiłuję zapisać i odczytać SN pastylki do EPROMa

    ...a co do I to sie o tym nie rozpisujcie bo ja wam podałem tylko część programu. Może nie jest to takie ważne :)
  • #39
    monty_p
    Level 18  
    niby żaden problem. Ale ja się dopiero tego uczę.
    Dla Ciebie to jest: " eeprom_write, eeprom read, gdzie problem?"
    dla mnie to parę godzin szukania i uczenia się tych procedur.

    ...po prostu nie miałem z tym NIGDY WCZEŚNIEJ do czynienia
  • #41
    JmL(TM)
    Level 24  
    No to ja troche popchne temat do przodu :D

    Code:
    //nie wiem jakie masz adresy wiec spr czy sie zgadzaja
    
    Const Adres_zapisu = 160
    Const Adres_odczytu = 161

    Odczyt:
      1wwrite &H33

      id_klucza(1) = 1wread(8)  // tu usunalem twoja petle i zrobilem to krocej

      For I = 1 To 8
        Call zapisz_do_eeprom(Licznik , id_klucza(i))
        Incr Licznik                                               
      Next I
    Return


    i teraz ten fragment:

    Code:
    Sub zapisz_do_eeprom(Adres As Byte , Wartosc As Byte)
    
      I2cstart
      I2cwbyte I               // nie wiem co tu robi to 'I' skoro podajesz adres pamieci eeprom w tym miejscu
      I2cwbyte Adres
      I2cwbyte Wartosc
      I2cstop

      Waitms 10
    End Sub


    zastap tym:

    Code:
    Sub zapisz_do_eeprom(byval Adres As Byte , Byval Wartosc As Byte)
    
      I2cstart
      I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres
        I2cwbyte Wartosc
        I2cstop

        Waitms 10
      End If
    End Sub


    i jak? dziala?
  • #42
    Balu
    Level 38  
    Quote:


    Odczyt:
    1wwrite &H33

    id_klucza(1) = 1wread(8) // tu usunalem twoja petle i zrobilem to krocej

    For I = 1 To 8
    Call zapisz_do_eeprom(Licznik , id_klucza(i))
    Incr Licznik
    Next I
    Return

    No fajnie fajnie, ale to będzie za każdym razem pisać pod ten sam adres;)
    Więc to info dla autora tematu,
    PS, pamiętajcie, że eeprom ma ograniczenie ilości zapisów;)
  • #43
    JmL(TM)
    Level 24  
    Narazie tak ale to jest tylko do testow i chodzi o sama idee, a autor tematu pozniej sobie zrobi adresowanie kolejnych komorek i zapis nastepnych kluczy bedzie juz poprawny :D

    Co do zywotnosci eeprom'ow to faktycznie jest to duzy minus, aczkolwiek AVR'y maja przeciez ten sam problem...
  • #45
    monty_p
    Level 18  
    Wrzuciłem to co mi napisałeś wyżej, dodałem wyświetlanie zapisywanych bajtów na LCD, podpiąłem dallasa i cały czas wyświetla mi 255.

    Code:

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7

    Config Lcd = 16 * 1a


    Config 1wire = Portd.5
    Config Scl = Portd.0
    Config Sda = Portd.1

    Declare Sub Zapisz_do_eeprom(byval Adres As Byte , Byval Wartosc As Byte)
    'Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte)

    Dim Id_klucza(8) As Byte
    Dim I As Byte
    Dim Licznik As Byte

    Licznik = 1



    Odczyt:
    Const Adres_zapisu = 160
    Const Adres_odczytu = 161

      1wwrite &H33

      Id_klucza(1) = 1wread(8)                                  'tu usunalem twoja petle i zrobilem to krocej
      Cls
      For I = 1 To 8
        Call zapisz_do_eeprom(Licznik , id_klucza(i))
        Incr Licznik
        Lcd Id_klucza(i);
      Next I
    Return

    Sub Zapisz_do_eeprom(byval Adres As Byte , Byval Wartosc As Byte)
      I2cstart
      I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres
        I2cwbyte Wartosc
        I2cstop

        Waitms 10
      End If
    End Sub

    End
  • #47
    monty_p
    Level 18  
    no tak... Gdzieś tu była (jeszcze jakiś czas temu) ;)

    ...to dla tego, że od rana nie wstałem jeszcze z fotela. Siedzę cały czas przy tym :(
  • #48
    JmL(TM)
    Level 24  
    Balu wrote:
    Wiem, że ten sam, chodziło mi o to, żeby nie zrobić jakiejś głupiej pętli
    do
    zapisz_eeprom
    loop:)


    To by go faktycznie szybko i skutecznie usmiercilo [RiP].

    Monty_p: Przy takim czyms to za wiele na LCD nie zobaczysz...

    Code:
      For I = 1 To 8
    
        Call zapisz_do_eeprom(Licznik , id_klucza(i))
        Incr Licznik
        Lcd Id_klucza(i);
      Next I


    Wstaw jakies opoznienie pomiedzy zapisem kolejnych bajtow do pamieci i bedzie cos widac.

    A tutaj masz jeszcze cos do odczytu:

    Code:
    Sub czytaj_z_eeprom(byval Adres As Byte , Byval Wartosc As Byte)
    
      I2cstart
      I2cwbyte Adres_zapisu
      I2cwbyte Adres
      I2cstart
      I2cwbyte Adres_odczytu
      I2crbyte Wartosc, Nack
      I2cstop
    End Sub


    A z ta ksiazka to Balu ma racje :D Jest niedroga w dodatku a pomoc nieoceniona.
  • #49
    monty_p
    Level 18  
    OK, dzisiaj Was nie męczę :) Do rana dużo czasu.

    Może i nie znam BASCOMa ale jestem uparty :) Coś mi na pewno wyjdzie. Dzisiaj usiłowaliście mnie nakierować (z marnym skutkiem). Przeanalizjuę to jeszcze raz, douczę się jeszcze na GOOGLE, napiszę kod na kartce (na monitorze się miesza) i jeszcze raz przetestuję.
  • #50
    JmL(TM)
    Level 24  
    Popatrz jeszcze tu: http://radzio.dxp.pl/eeprom/ i pamietaj, ze jest roznica w obsludze pamieci 24C01-24C16 i 24C32-24C512 ale to przeczytasz na stronie, ktora ci podalem...

    A tu pytanie do Balu - jak napisac odpowiednik w Bascom'ie? Ja niestety Bascom'a rzucilem w kat jak starego misia z urwana noga, gdy tylko rozpakowalem [czyt. zainstalowalem] nowiuskie AVR Studio + AVR-GCC :D

    Code:
    ((BYTE_ADDR & 0xFF00) >> 8);
    
    (BYTE_ADDR & 0x00FF);
  • #51
    monty_p
    Level 18  
    na razie mam na szynie 24c16. Jak już wszystko będzie OK ( o ile będzie) to wtedy będę kombinował z większą pamięcią :)
  • #52
    JmL(TM)
    Level 24  
    monty_p wrote:
    na razie mam na szynie 24c16. Jak już wszystko będzie OK ( o ile będzie) to wtedy będę kombinował z większą pamięcią :)


    A to zmienia postac rzeczy. Zapewne jak sie wyspisz to jutro sam z samego rana program skonczysz :D

    Pozdrawiam!
  • #53
    Balu
    Level 38  
    @JmL tzn co chcesz zrobić?
    Pomaskować bajty?
    Tak samo jak w c:>
    Tyle, że max 1 operacja na linię (główną porażka bascoma).

    Dodano po 5 [minuty]:

    (czyli :
    zmienna=source and &hff00
    shift zmienna, right, 8
    source=source and &h00ff

    U mnie bascup też leży jak miś bez nogi:P
    (Smutne, ale coraz częściej muszę do helpa zerkać bo nie pamiętam rozkazów;) )...

    @ZBeeGin a nie daloby się tego Twojego helpa zrobić jak tego na stronie mcselec żeby tak fajnie w htmlu był?:) Bo nie chce mi się ściągać za każdym razem (czytaj szukać tym bardziej:d)
    :)
    Pozdro Panowie i branoc:)
  • #54
    monty_p
    Level 18  
    Witam!!
    Stęskniliście się za marudą ?? ;)

    Dzisiaj nie miałem za dużo czasu, ale coś tam dorzuciłem do programu. Dorobiłem przycisk, po wciśnięciu którego ma wykonać zapis do pamięci. Oczywiście nie działa.

    Powiedzcie mi, proszę, jak adresować zapis poszczególnych komórek <prosi>

    Tutaj cały kod:
    Code:

    $regfile = "m8def.dat"
    $crystal = 1000000

    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7

    Config Lcd = 16 * 1a

    Config 1wire = Portd.5
    Config Scl = Portd.0
    Config Sda = Portd.1
    Config Pind.6 = Input

    Declare Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)

    Dim Dsid(8) As Byte
    Dim B As Byte
    Dim Addressw As Byte
    Dim Value As Byte

    Cursor Off
    Cls
    Lcd " START PROGRAMU "
    Wait 1

    Cls


    Do
    Reset Portd.5
    Waitms 100
    1wreset
    Set Portd.5
    Waitms 100
    If Err = 0 Then

    Dsid(1) = 1wsearchfirst()
    Set Portd.6
    If Dsid(8) = Crc8(dsid(1) , 7) Then
     Cls

     For B = 1 To 4
     Lcd Hex(dsid(b))
     Next


       If Pind.6 = 0 Then                                       'dorobiłem przycisk. Po jego wciśnięciu  wykonuje się zapis do eproma.

       For B = 1 To 4
      Value = Hex(dsid(b))
       Call Write_eeprom(10 , Value)

      Next

       Else
         'Locate 1 , 10
         ' Lcd "UP"
       End If

    End If

    Waitms 500
    Else
    Cls
    Lcd "Brak Pastylki"
    Waitms 100
    End If
    Loop

    End

    'Program wykonujący zapis do pamięci EEPROM
    Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)
    I2cstart
    I2cwbyte Addressw
    If Err = 0 Then
       I2cwbyte Adres
       I2cwbyte Value
       I2cstop
       Cls
       Lcd "Zapisano: " ; Value
       Waitms 10
    End If
    Cls
    Lcd "Nie zapisano: " ; Value
    Waitms 500
    End Sub


    Dodano po 1 [minuty]:

    ...za każdym razem na LCD wyskakuje informacja:

    Nie zapisano: "i tu wartość"
  • #55
    JmL(TM)
    Level 24  
    Po pierwsze dlaczego zmieniles to:

    Code:
    Const Addressw = 160


    na to:
    Code:
    Dim Addressw As Byte 


    Wiec teraz odpowiedz mi na pytanie: jaki adres ma twoj eeprom i czy po tej zmianie ma to prawo dzialac? Skoro adres jest zmienna i domyslnie przyjmuje wartosc '0'.

    Teraz to:

    Code:
    For B = 1 To 4
    
      Value = Hex(dsid(b))
       Call Write_eeprom(10 , Value) //zapisujesz wszystkie bajty pod tym samym adresem
                                     //czyli nakladasz na siebie dane

      Next


    Z tego co zobaczylem odnosze wrazenie, ze zrobiles krok w tyl od wczoraj zamiast pojsc w przod.
    Doradze ci jedna rzecz. A mianowicie jesli skupiasz sie na zapisie i odczycie eeprom'u to wrzuc sobie tylko ten fragment kodu do kompilatora i mecz go tak dlugo, az zacznie dzialac. Bedzie ci latwiej sie poruszac w malej garstce polecen niz gaszczu funkcji itp. Gdy juz bedziesz mial dzialajaca obsluge eeprom'u poskladaj wszystko do "kupy" i otrzymasz dzialajacy program.

    To na tyle ode mnie. Czekam na postepy :D
  • #56
    monty_p
    Level 18  
    Odnośnie adresu pamięci:
    Wpisałem w kość taki mały program...

    Code:

    For B = 150 To 200
    i2cstart
    I2cwbyte B
    i2cstop
    If Err = 0 Then
    Cls
    Lcd "Jest POD:" ; B
    Wait 1
    Else
    Cls
    Lcd "pod:" ; B ; "nie ma"
    end if
    wait 1
    Next B


    program co chwile informuje, ze:
    Jest POD: 150
    Jest POD: 160
    Jest POD: 161
    Jest POD: 163
    Jest POD: 164
    Jest POD: 165
    Jest POD: 167
    Jest POD: 168
    Jest POD: 170
    Jest POD: 171
    Jest POD: 172
    ...itd

    To normalne??
  • #57
    JmL(TM)
    Level 24  
    Zle kombinujesz! Popatrz na to co juz bylo wczesniej:

    Code:
    Const Adres_zapisu = 160 
    

    Sub Zapisz_do_eeprom(byval Adres As Byte , Byval Wartosc As Byte)
      I2cstart
      I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres
        I2cwbyte Wartosc
        I2cstop

        Waitms 10
      End If
    End Sub


    I porownaj z tym co napisales. Widzisz juz co robisz zle? Jesli nie to podalem tobie ostatnio linki o obsludze pamieci eeprom, wiec poczytaj i wtedy z pewnoscia bedziesz wiedzial co zrobiles zle.
  • #58
    monty_p
    Level 18  
    Poprawiłem się troszkę :)

    Dorzuciłem drugi przycisk do ATmegi.
    Teraz jeden robi ZAPIS a drugi ODCZYT eproma
    Na razie to są wartości na stałe.

    Program:
    Code:

    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7

    Config Lcd = 16 * 1a

    Config Scl = Portd.0
    Config Sda = Portd.1
    Config Pind.6 = Input                                       ' PRZYCISK DO ZAPISU EPROMA
    Config Pind.7 = Input                                       ' PRZYCISK DO ODCZYTU EPROMA

    Declare Sub Zapis_do_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)
    Declare Sub Odczyt_z_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)

    Dim Adres_zapisu As Byte
    Dim Adres_odczytu As Byte

    Dim C As Byte



    Adres_zapisu = 160
    Adres_odczytu = 161

    Do
    Set Portd.6
    Set Portd.7

    If Pind.6 = 0 Then
     Call Zapis_do_eproma(1 , 11)
     Waitms 500
     Call Zapis_do_eproma(2 , 22)
     Waitms 500
     Call Zapis_do_eproma(3 , 33)
     Waitms 500
     Call Zapis_do_eproma(4 , 44)
     Waitms 500

    Elseif Pind.7 = 0 Then
     Call Odczyt_z_eproma(1 , C)   ' bez C wywala mi blad przy kompilacji. Jak dam zmienna o nazwie Wartosc, tez
     Waitms 500
     Call Odczyt_z_eproma(2 , C)
     Waitms 500
     Call Odczyt_z_eproma(3 , C)
     Waitms 500
     Call Odczyt_z_eproma(4 , C)
     Waitms 500
    Else
     Cls
     Lcd "Co robimy?:"
     Waitms 500
    End If


    Loop

    End

    Sub Zapis_do_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)

    I2cstart
    I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres_komorki
        I2cwbyte Wartosc
        I2cstop

        Waitms 10
        Cls
        Lcd "Zapisano: " ; Wartosc
        Waitms 500
      End If
    End Sub

    Sub Odczyt_z_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)

    I2cstart
    I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres_komorki
        I2cstart
        I2cwbyte Adres_odczytu
        I2crbyte Wartosc , Nack
        I2cstop

        Cls
        Lcd "Odczytano: " ; Wartosc
        Waitms 500
      End If
    End Sub


    Program działa. Zapisuje i odczytuje wartości pod wskazane miejsce.

    Próbowałem też zapisać wartości w HEX, np &HDA (co stanowi 2 pierwsze znaki kodu mojej pastylki DALLASa).
    Odczytałem ten wpis (wyświetliło mi 218). Wrzuciłem go na LCD za pomocą komendy HEX(Wartosc) i wtedy otrzymałem DA :D

    Jak mogę zapisywać wartości HEX w pętli?
    Mogę użyć czegoś w stylu:
    Code:

    WARTOSC_W_HEXIE = DA
    Wartosc = &H ; WARTOSC_W_HEXIE

    ??
    Czy moja wartość będzie wtedy równa &HDA ??
    Tzn czy program łyknie tak podane dane??

    Na dzisiaj się poddaję. O 6 rano muszę wstać a już 1:30 :/

    Pozdrawiam, do jutra.
  • #59
    JmL(TM)
    Level 24  
    No faktycznie widac postepy :D

    Przerobilem troszke Twoj kod:

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 1000000

    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7
    Config Lcd = 16 * 1a

    Config Scl = Portd.0
    Config Sda = Portd.1

    Config Pind.6 = Input      'linia PD6 jako wejściowa [zapis]
    Config Pind.7 = Input      'linia PD7 jako wejściowa [odczyt]

    S1 Alias Pind.6            'przypisanie nazwie Pind.6 nazwy S1
    S2 Alias Pind.7            'przypisanie nazwie Pind.7 nazwy S2

    Set Portd.6                'dołączenie do linii PD6 rezystora podciągającego
    Set Portd.7                'dołączenie do linii PD7 rezystora podciągającego

    Const Adres_zapisu = 160   'adres zapisu pamieci eeprom na I2C
    Const Adres_odczytu = 161  'adres odczytu pamieci eeprom na I2C

    Declare Sub Zapis_do_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)
    Declare Sub Odczyt_z_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)

    Do
      If S1 = 0 Then             'jeśli przyciśnięty S1, to
        Waitms 25                'opóźnienie dla eliminacji drgań styków

        If S1 = 0 Then           'sprawdzenie ponownie, czy przycisk S1 dalej jest naciśniety, jeśli tak, to..
          'tutaj wykonaj zapis do pamieci eeprom [najlepiej w petli i pobieraj dane z tablicy ;]
        End If                   'koniec warunków
      End If

      If S2 = 0 Then             'jeśli przyciśnięty S2, to
        Waitms 25                'opóźnienie dla eliminacji drgań styków

        If S2 = 0 Then           'sprawdzenie ponownie, czy przycisk S2 dalej jest naciśniety, jeśli tak, to..
          'tutaj wykonaj odczyt z pamieci eeprom [najlepiej w petli i zapisuj dane do tablicy ;]
        End If                   'koniec warunków
      End If
    Loop

    End

    Sub Zapis_do_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)
      I2cstart
      I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres_komorki
        I2cwbyte Wartosc
        I2cstop

        Waitms 10
      End If
    End Sub

    Sub Odczyt_z_eproma(byval Adres_komorki As Byte , Byval Wartosc As Byte)
      I2cstart
      I2cwbyte Adres_zapisu

      If Err = 0 Then
        I2cwbyte Adres_komorki
        I2cstart
        I2cwbyte Adres_odczytu
        I2crbyte Wartosc , Nack
        I2cstop
      End If
    End Sub


    Teraz postaraj sie tylko zrobic zapis i odczyt w petli i z uzyciem tablicy. Moze pozniej bede mial wiecej czasu to wrzuce jakis fragment. W kazdym razie jesli chodzi o zamiane na hex'a i zapis to nic nie musisz robic bo jesli np. tak jak miales wczesniej zapiszesz zmienna C o wartosci 255 do eeprom'u to w pamieci ten zapis bedzie mial wartosc 0xFF czyli 255 dziesietnie.

    Pozdrawiam!
  • #60
    monty_p
    Level 18  
    Dzięki za modyfikację :)

    Faktycznie, jest bardziej czytelny :)

    Wieczorem będę dalej męczył temat. Jak wpleść w to kod, który pozwala odczytać SN z DALLASA?. Mogę zrobić podprogram, który wygląda mniej więcej tak:
    Code:

    Odczyt:

    .......
    ........
    . Program czytający pastylkę
    .........
    Return


    i wywołać go w głównej pętli programu ?
    Code:

    gosub Odczyt


    A jeżeli chodzi o tablice to proszę o jakiś przykład żebym załapał jak to działa.

    Pozdrawiam!