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.

zapisywanie zmiennej WORD do pamięci eeprom

romantv 22 Nov 2009 19:13 3016 15
  • #1
    romantv
    Level 17  
    Witam, z pewnością ten temat był juz poruszany, jednak prosze o pomoc.

    Potrzebuję zapisać wartość np. 23458 (zmienna typu WORD) do pamięci EEPROM, a następnie ją odczytać do zmiennej word. Jak to powinienem zrobić

    Zapisuję i odczytuję dane ale nie typu Word.
    Mam problem z tym.
    Proszę o jakiś kod programu.

    Dziękuję.
  • #3
    pburczyn
    Level 12  
    Proponuje napisać dwie funkcje, do odczytu i zapisu zmiennych typu WORD z/do eepromu. W funkcji do zapisu musisz rozbić zmienną typu WORD na pojedyncze bajty i dopiero je zapisać do eepromu, a w funkcji do odczytu zrobić coś zupełnie odwrotnego.

    Pozdrawiam.
  • #4
    romantv
    Level 17  
    Przepraszam fakt nie napisałem w jakim języku :).

    Bascom
    kod:
    Dim zmienna1 as word
    zmienna1 = 23456

    Sub zap_eeprom
    ...........
    Locate 2 , 1 : Lcd "Wartość: " ; zmienna1
    Wait 2
    end sub


    Sub od_eeprom
    .........
    Locate 2 , 1 : Lcd "Wartość: " ; zmienna1
    Wait 2

    End Sub


    Jak zapisać zmienną zmienna1 do pamięci eeprom.
    Znalazłem coś takiego ale nie wiem jak podejść do tematu:

    Dim zmienna As long ,long1 as byte at long overlay, long2 As Byte At long + 1 Overlay, long3 as byte at address + 2 overlay, long4 as byte at address +3

    Jeśli zmienne typu Byte , adres zwiększasz o 1
    Jeśli zmienne typu Word , adres zwiększasz o 2
    Jeśli zmienne typu Integer , adres zwiększasz o 2
    Jeśli zmienne typu Long , adres zwiększasz o 4
    Jeśli zmienne typu Single , adres zwiększasz o 6
  • #6
    romantv
    Level 17  
    zgadza się ale jak to napisać w kodzie.
    może kolega więcej napisze, tam gdzie są kropki zapis i odczyt.
    dziękuję.
  • #9
    romantv
    Level 17  
    dziękuję za pomoc, działa poprawnie jednak musi być :

    Dim Aeeps(10) As Eram Word At 1

    ale jak to działa ??
  • #12
    romantv
    Level 17  
    Właśnie też nie wiem co to:
    Dim Aeeps(10) As Eram Word At 1

    Aeeps(10) zmienna, ale to At 1 - ?

    Pytanie tylko czy samo :
    Dim Aeeps(10) As Eram Word

    będzie działać poprawnie ?, muszę sprawdzić.Wydaje mi się, że będzie poprawnie.
    Wcześniej nie działało ponieważ nie rezerwowałem wystarczającej ilości miejsca w pamięci eeprom.

    I moje drugie pytanie jak działa ten mechanizm zapisywania do pamięci mam cyfrę np. 234568 i jest poprawnie zapisana w pamięci a następnie odczytana z pamięci.
  • #13
    mirekk36
    Level 42  
    marekmarszal i romantv ---> to zrozumiałe, że ktoś może "toszkę klikać" w Bascoma ale nie być biegłym.

    Jednak jesli ktoś już wam podaje jak na talerzu rozwiązanie (żeby już dobitniej tego nie nazwać)

    Code:
    Dim Aeeps(10) As Eram Word At 1 


    oraz sposób zapisu i odczytu takiej zmiennej

    atom1477 wrote:
    Zapis:
    zmienna1 = 1244

    Odczyt:
    zmienna_RAM = zmienna1


    co jak widać w Bascomie jest proste jak mega drut i już prościej się nie da

    ..... to proszę , koledzy - zajrzyjcie sobie łaskawie do HELPA! tegoż Bascoma w którego "klikacie" jak piszecie

    wystarczy w helpie wpisać DIM - i poczytać , żeby się wszystkiego albo nawet więcej dowiedzieć

    zamiast wkółko tutaj powtarzać nadal pytanie "ale o co chodzi?" po otrzymaniu takiej jak już pisałem odpowiedzi - wprost na talerzu!

    ----------------------------

    a jeśli już zadajesz takie pytanie:

    romantv wrote:
    I moje drugie pytanie jak działa ten mechanizm zapisywania do pamięci mam cyfrę np. 234568 i jest poprawnie zapisana w pamięci a następnie odczytana z pamięci.


    i chodzi ci o to jak to Bascom robi wewnątrz swoich procedur - to polecam zapoznać się z językiem asembler i dokładną budową i działaniem procka - wtedy wszystko stanie się jasne
  • #14
    romantv
    Level 17  
    Panowie bardzo dziękuję za odp.
    Po pierwszej pomocy wszystko działa poprawnie,
    miałem tylko jedno pytanie.
    Co w deklaracji zmiennej

    Dim Aeeps(10) As Eram Word At 1

    robi At 1 co to jest.

    Myślę, że temat należy zamknąć, pozdrawiam i jeszcze raz dziękuję za pomoc.
  • #16
    romantv
    Level 17  
    Tak zgadza się tylko jak szukałem materiałów to trafiłem na A1.

    ________________________________________________________________________

    Witam problem z zapisem zmiennej do pamięci EEprom typu string lub innej zmiennej rozwiązałem tak:

    'Parametr opcjonalny AT pozwala na umieszczenie zmiennej
    'w ściśle określonej komórce pamięci lub rejestrze.
    'Gdyby pod podanym adresem znajdowała się już jakaś zmienna,
    'zmiennej definiowanej zostanie przydzielony pierwszy wolny adres.

    'Jeśli zmienne typu Byte , adres zwiększasz o 1
    'Jeśli zmienne typu Word , adres zwiększasz o 2
    'Jeśli zmienne typu Integer , adres zwiększasz o 2
    'Jeśli zmienne typu Long , adres zwiększasz o 4
    'Jeśli zmienne typu Single , adres zwiększasz o 6

    Dim Aeeps(10) As Eram Word At 1

    sub zap_sram

    Aeeps(adres) = 622356

    Czas(adres) = Aeeps(adres)


    '------------------------------
    Writeeeprom Czas(adres) , 1
    Writeeeprom Czas(adres) , 3 'uwaga rezerwacja adresu (adres zwiększasz o...)
    '------------------------------
    Cls
    Locate 1 , 1
    Lcd "Word1: " ; Czas(adres)

    end sub


    sub Od_sram

    '------------------------------
    Readeeprom Czas(adres) , 1
    Readeeprom Czas(adres) , 3
    '------------------------------
    Cls
    Locate 1 , 1
    Lcd "Word1: " ; Czas(adres)

    end ram

    Jeszcze raz dziękuję za okazaną pomoc