Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

monty_p 11 Lip 2008 19:01 16130 143
  • #91
    monty_p
    Poziom 18  
    :(

    ten co mam, 24c16 nie jest duży a też będzie wymagał adresowania większego niż 255.

    TO jak trzeba?? HI i LO ??

    ..nie będę patrzył ;) dzisiaj mi się nie chce nad tym siedzieć:D:D:D ;)
  • PCBway
  • #93
    monty_p
    Poziom 18  
    ...czy to jest podchwytliwe pytanie?

    wg mnie ma 2048 komórek. Chyba, że masz na ten temat inne zdanie?? ;)
  • #95
    JmL(TM)
    Poziom 24  
    Przypominam sie z moim postem :D

    JmL(TM) napisał:
    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);


    I ponizej mistrz Balu napisal:

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


    Wlasnie ten fragment bedziesz potrzebowal... ale najpierw poczytaj od "radzia" :D
  • #96
    dawid512
    Poziom 32  
    Zapis i odczyt danych na 24Cxx jest przykładem zwykłej komunikacji po I2C.
    Może ten przykład wyjaśni Ci choć troszkę:
    Code:
    Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)
    
        I2cstart                                                'start
        I2cwbyte Addressw                                       'adres eepromu
        I2cwbyte Adres                                          'adres
        I2cwbyte Value                                          'wartosc do wyslania
        I2cstop                                                 'stop
        Waitms 10                                               'czekaj 10ms
    End Sub


    Tak swoją drogą jakbyś trochę pomyślał to zajrzał byś najpierw do sampli Bascoma...
  • PCBway
  • #97
    JmL(TM)
    Poziom 24  
    :arrow: dawid512: tak swoja droga to jakbys sam spojrzal co bylo na poprzednich stronach to tez bys wiedzial, ze kolega monty_p juz dawno wie jak korzystac z pamieci eeprom na I2C i wykorzystuje dokladnie ta funkcje, ktora laskawie wkleiles.

    :arrow: monty_p: zapis/odczyt pamieci 24C32-24C512

    Code:
    Const Adres_zapisu = 160
    
    Const Adres_odczytu = 161

    Declare Sub Eeprom_zapisz_bajt(adres As Word , Wartosc As Byte)
    Declare Function Eeprom_czytaj_bajt(adres As Word) As Byte

    Dim L As Byte , H As Byte

    {...}

    Sub Eeprom_zapisz_bajt(adres As Word , Wartosc As Byte)
        H = High(adres)
        L = Low(adres)

        I2cstart
        I2cwbyte Adres_zapisu
        I2cwbyte H     'MSB
        I2cwbyte L     'LSB
        I2cwbyte Wartosc
        I2cstop

        Waitms 20
    End Sub

    Function Eeprom_czytaj_bajt(adres As Word) As Byte
        H = High(adres)
        L = Low(adres)

        I2cstart
        I2cwbyte Adres_zapisu
        I2cwbyte H     'MSB
        I2cwbyte L     'LSB

        I2crepstart
        I2cwbyte Adres_odczytu
        I2crbyte Eeprom_czytaj_bajt , Nack
        I2cstop
    End Function


    Teraz czekam na caly ukonczony kod :D
  • Pomocny post
    #98
    zumek
    Poziom 39  
    JmL(TM) napisał:

    :arrow: monty_p: 3maj gotowca! :D [zapis/odczyt pamieci 24C32-24C512]

    Nie wiem czy zauważyłeś , ale monty_p pisał o 24C16 , a tę "kostkę" adresuje się inaczej niż 24C32-512.Adres docelowy komórki pamięci , składa się z 8 bitów adresu komórki i 3 bitów adresu urządzenia.

    Piotrek
  • #99
    JmL(TM)
    Poziom 24  
    Zgadza sie zumek, ale o ta "kosc" 24C16 chodzilo autorowi postu na poczatku, gdyz wzial takowa tylko do testow. Pozniej chce zmienic na wieksza np. 24C128 zeby moc zapisac wiecej kluczy Dallas'a.
  • Pomocny post
    #100
    zumek
    Poziom 39  
    JmL(TM) napisał:
    ... Pozniej chce zmienic na wieksza np. 24C128 zeby moc zapisac wiecej kluczy Dallas'a.

    Skoro tak , to warto wykorzystać mechanizm PAGE WRITE , a nie "dłubać" po 1 bajcie :D

    Piotrek
  • #101
    monty_p
    Poziom 18  
    Witam :)

    Ostatecznie zostanie zamontowana 24C32 bo więcej jak 500 IDów nie muszę zapisywać

    :)
    Może przez weekend coś zmajstruję


    zumek napisał:
    JmL(TM) napisał:
    ... Pozniej chce zmienic na wieksza np. 24C128 zeby moc zapisac wiecej kluczy Dallas'a.

    Skoro tak , to warto wykorzystać mechanizm PAGE WRITE , a nie "dłubać" po 1 bajcie :D

    Piotrek


    ...kiedy mi pasuje dlubac po bajcie, bo podczas zapisu jednego ID dallasa, zużywam jedynie 4 bajty + 1 na dodatkowe info.
  • #102
    monty_p
    Poziom 18  
    Prace nad programem chwilowo wstrzymane, bo:
    - po pierwsze, uwaliłem atmegę :) (mam programator złożony jedynie z 4 oporników 200Ohm. Do tej pory służył :P
    - po drugie, nawał innej roboty.

    Zostało w sumie niewiele, bo tylko zmodyfikować część dotyczącą zapisu i odczytu eproma.

    Jak obrobię się z inną robotą oraz jak dostanę nową atmegę, będę kontynuował.

    ...jeszcze się odezwę :)

    Pozdrawiam
  • #103
    dawid512
    Poziom 32  
    monty_p napisał:

    - po pierwsze, uwaliłem atmegę :) (mam programator złożony jedynie z 4 oporników 200Ohm. Do tej pory służył :P


    Sam czasem używam tego programatora i jakoś nie udało mi się nim uwalić procka...
  • #104
    monty_p
    Poziom 18  
    Mi też długo się nie udawało ale widocznie miałem na sobie jakiś ładunek elektrostatyczny, bo całość mam w pająku złożoną, dotknąłem programującego się procka i poczułem przepływ prądu. Po tym, procek nie przyjmował już nic :)

    ...zdarza się. za 3 zł mam nowy :)
  • #105
    dawid512
    Poziom 32  
    Zainwestuj w obudowę do wtyczki DB25M...
  • #106
    JmL(TM)
    Poziom 24  
    Lub tez spraw sobie kompatybilny z STK500 pod USB :D
  • #107
    Balu
    Poziom 38  
    I co mu da stk500 jak ubił iskrą?:D
    (Choć wątpię w to - mnie się przez kilka lat nie zdarzyło).
  • #108
    monty_p
    Poziom 18  
    ...ludzie, nic sie nie stało. To tylko troszkę krzemu zamkniętego w plastikową obudowę :) Jakoś przeżyję tą stratę ;)
  • #109
    dawid512
    Poziom 32  
    Już nie chodzi o to że straciłeś jednego scalaka przez nieuwagę tylko o to żebyś tego nie powtórzył w przyszłości...
  • #110
    monty_p
    Poziom 18  
    hehe. Kupię sobie kilka i nie będę pchał rąk tam, gdzie nie trzeba :)
  • #111
    JmL(TM)
    Poziom 24  
    Balu napisał:
    I co mu da stk500 jak ubił iskrą?:D


    No w sumie nic to nie zmieni w "ubijaniu" iskra! :D Chodzilo mi tylko, ze zamiast kupowac obudowe DB25 i znow lutowac STK200 w pajaku lub wytrawiac PCB lepiej chyba za 30zl kupic STK500 pod USB. Gotowe i bez "grzebania", a w dodatku wiecej programow go obsluzy. Dodatkowym atutem wersji USB jest to, ze rowniez na laptopie mozna programowac bo niestety LPT to juz w dzisiejszej technologii wymarly dinozaur.
  • #112
    Balu
    Poziom 38  
    OT: ja tam wolałem sam złożyć stk500 :) - przynajmniej wiem po co tam jest jaki element:)
  • #113
    JmL(TM)
    Poziom 24  
    Tez racja, choc raczej wiekszosc z nas bez samodzielnego skladania i tak wie po co to wszystko tam jest upchane :D Ale przynajmniej masz teraz satysfakcje! 8)
  • #114
    monty_p
    Poziom 18  
    Balu, możesz mi podrzucić schemat STK500 ?? Może bym się pokusił o złożenie tego z elementów, które mam na stanie? :)
  • #116
    monty_p
    Poziom 18  
    ehh.... Za bardzo to skomplikowane. Nie, żebym nie dał rady tego zrobić, ale mam już jeden duży programator (EzoFlasher) i ma wszystko... Z wyjątkiem AVRów :(

    Chyba zmontuję coś prostego, na USB, albo dodam tylko do mojego programatora jakieś diody zennera na wszystkie wyjścia ISP :) Nie będzie wtedy możliwości uwalić AVRa poprzez przepięcie z portu LPT :P

    Myślałem, że STK500 to coś w stylu tego co ja mam , tyle że z zabezpieczeniami i pewnie z kontrolkami sygnalizującymi stan urządzenia :)


    ...a z innej beczki (a raczej na temat) przyszły użytkownik urządzenia, które wspólnymi siłami (waszymi siłami) majstruję stwierdził, że wystarczy mu, żeby urządzenie zapisywało 100-150 kluczy. Tak, że nie będę wyskakiwał przed orkiestrę i zostanę przy 24C16. Będzie aż nad to :)

    ...zastanawiałem się też nad czymś takim, żeby mógł sobie robić kopię bezpieczeństwa danych w pamięci...

    Co Wy na to, żeby wyprowadzić na zewnątrz urządzenia port (np COM) i zrobić mu coś w rodzaju klucza, który po wpięciu w ten port i wciśnięciu przycisku (na tym zewnętrznym kluczu) sczytywał by wewnętrzną pamięć i zapisywał do klucza. W kluczu znajdowała by się druga pamięć 24C16. Dane za każdym razem były by nadpisywane.

    Klucz był by prosty do zbudowania, bo można użyć do tego celu gniazdo RS232 + obudowa do tego gniazda. Było by to niewielkie i raczej nie uciążliwe w użytkowaniu. :)

    Czy to ma sens??
    Dodam tylko, że użytkownik tego ustrojstwa nie ma pojęcia o programowaniu, czytaniu pamięci za pomocą programatorów, itp.
  • #117
    Balu
    Poziom 38  
    Ma sens.
    STK500 to "standard" pewien wywodzący się z czegoś większego - czytaj w przyklejonych w AVR.
  • #118
    dawid512
    Poziom 32  
    Wpisz w alledrogo hasło: stk500 hid i nie żałuj tych paru groszy. Na pewno nie będziesz żałował.
  • #119
    monty_p
    Poziom 18  
    faktycznie, ciekawe. Do tego programuje z BASCOMA. Ja kompilowalem program i wrzucalem ponyprogiem.

    Dzięki !!

    Kupuję to :)
  • Pomocny post
    #120
    dawid512
    Poziom 32  
    Z Bascoma i AVRStudio.