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

Jak poprawnie zapisać dane do EEPROM w asemblerze na AVR?

grzesio14 03 Lip 2006 14:02 1383 6
REKLAMA
  • #1 2786377
    grzesio14
    Poziom 14  
    Posty: 138
    Witam.
    Progamując nie korzystałem z EEPROM, a jeśli już to z zapisu i odczytu i to w bascomie.
    Tam sprawa jest prosta 2 komendy.
    Pisząć w asemblerze na AVR chciałbym aby program pobierał dane z pamięci EEPROM.
    Zdeklarowałem w pamięci EEPROM miejsce od którego mają być dane zapisywane.
    Następnie muszę wpisać dane - tylko nie wiem w jaki sposób to umieścić (tabela??)
    .eseg
    .org 0x0000
    Table:
    .db 0xff,0x01
    Zrobiłem to w tej formie ale nie działa.
    Program pobiera ciągle tą samą wartość(FFh).
    Jak to rozwiązać.
    Podprogram do odczytu danych działa prawidłowo.
    Grzegorz.
  • REKLAMA
  • #2 2787037
    ijon_tichy
    Poziom 13  
    Posty: 68
    Pomógł: 4
    Potrzebnne ci będą dwie dyrektywy:
    .DSEG (do pokazania kompil. ile bajtow danych bedziesz chciał zarezerwowac)
    oraz .ESEG(do definiowania kolejnych bajtów)
    jak wsadzic w to wszystko .org - nie wiem

    np.:
    .DSEG
    Table: .BYTE 0xFF // 256 znakow zarezerwowanych

    .ESEG
    var1 .DB 0x01
    var2 .DB 0x02
  • REKLAMA
  • #3 2787106
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    ijon_tichy napisał:
    Potrzebnne ci będą dwie dyrektywy...

    Po co :?:
    Szkoda tylko , że grzesio14 pisząc "Program pobiera ciągle tą samą wartość(FFh). " , nie wspomniał w jakim środowisku ten program pracuje - symulator czy procek.Symulator nie ładuje pliku *.eep wygenerowanego przez kompilator assemblera, a do proca należy załadować go osobno.

    Piotrek
  • #4 2787250
    grzesio14
    Poziom 14  
    Posty: 138
    ijon_tichy napisał:

    Szkoda tylko , że grzesio14 pisząc "Program pobiera ciągle tą samą wartość(FFh). " , nie wspomniał w jakim środowisku ten program pracuje - symulator czy procesor.Symulator nie ładuje pliku *.eep wygenerowanego przez kompilator assemblera, a do proca należy załadować go osobno.


    Symulację przeprowadzam w AVRStudio.
    Ale w układzie docelowym mam ten sam efekt.
    Program wgrywam PonyProg2000.
  • REKLAMA
  • #5 2787338
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Po 1-sze , moje słowa "wsadziłeś" w usta kolegi ijon_tichy
    Po wtóre , czy wczytujesz do Pony'ego obydwa pliki (*.hex i *.eep) :?:
    Po trzecie , czy wybierasz Write Program(FLASH) , czy Write All :?:
    itp.

    Piotrek

    PS
    W symulatorze , dane do EEPROM-u możesz wpisać ręcznie i przetestować .
  • #6 2788052
    grzesio14
    Poziom 14  
    Posty: 138
    Za pomyłkę w cytowaniu bardzo przepraszam. Mam nadzieję że nikogo nie uraziłem.
    Co do wgrywania programu to wyniki podam jutro.
    Dziękuję Grzegorz.
  • REKLAMA
  • #7 2788846
    grzesio14
    Poziom 14  
    Posty: 138
    wgrywanie programu przebiega prawidłowo.
    Jeszcze nie spotkałem się z programem który ma w EEPROM wpisane dane (podczas pisania programu) będące później wykorzystywane w programie.
    Jak zdeklarować dane i w jaki sposób umieścić je w programie.
    Grzegorz.

    P.S. może jakiś przykład?

Podsumowanie tematu

✨ Dyskusja dotyczy poprawnego zapisu danych do pamięci EEPROM w asemblerze na mikrokontrolerach AVR. Autor deklaruje dane EEPROM za pomocą dyrektywy .eseg i .org, jednak program odczytuje stale wartość 0xFF, co wskazuje na problem z zapisem lub wczytywaniem danych. Wskazano, że do rezerwacji pamięci danych należy użyć dyrektyw .DSEG (segment danych RAM) i .ESEG (segment EEPROM), a także poprawnie zadeklarować dane w EEPROM, np. za pomocą .DB. Podkreślono, że wgrywanie plików do mikrokontrolera wymaga załadowania zarówno pliku *.hex (program) jak i *.eep (dane EEPROM) osobno, np. za pomocą programatora PonyProg2000, wybierając opcję Write All. W symulatorze AVRStudio dane EEPROM można wprowadzić ręcznie, ponieważ symulator nie ładuje pliku *.eep automatycznie. Autor poszukuje przykładu deklaracji i umieszczenia danych w EEPROM w asemblerze AVR, aby program mógł je poprawnie odczytać i wykorzystać.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA