Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega 8535][assembler/AvrStudio] programowanie eeprom

domija 22 Sie 2011 23:10 1323 2
  • #1 22 Sie 2011 23:10
    domija
    Poziom 9  

    Witam,
    szukam informacji na temat programowania wbudowanej w uc pamięci eeprom. Wszędzie znajduje tylko jak programować zewnętrzne pamięci natomiast o wewnętrznych ani du du. Mam niewielką ilość danych z których procesor ma korzystać w trakcie swojej pracy, które nie będą zmieniane i pasowałoby je wgrać raz i już, ale nie wiem w sumie jak się za to zabrać. Interesują mnie następujące kwestie:
    1. gdzie napisać wsad do tej pamięci tzn. w programie, posługując się .ESEG czy też ma to być zupełnie oddzielny plik.
    2. jak pisze się takie wsady? jak można zauważyć posługuję się assemblerem, więc wgranie np. jednej danej do jednego bajta pamięci ma się odbywać tak :?

    Code:

    out eearh, r18 //adres hi
    out eearl, r17  //adres low
    out eedr, r16 // dane

    3. jak to skompilować? jak się domyślam jeżeli zrobię to w pliku razem z programem avr studio mi to skompiluje i nie będzie problemu. hmmmm chociaż ciekawy jestem jak po resecie uc interpretowane wówaczas będą części kodu .ESEG, za każdym razem będą wczytywane te dane?? no ale to z kolei mija się z celem.
    4. jeżeli to zewnętrzny plik ma być to czy pisze się go tak samo jak wyżej napisałem i później kompiluje i jeżeli tak to czy wtedy avrs też mi go skompiluje.
    5. do programowania używam pony proga no i tam też jest taka ikonka do programowania eepromu, ale może tylko samych kości eeprom.

    jak widzicie pełen mętlik w głowie mam, ale potrzebuje tylko żeby pchnąć mnie w dobrą stronę. dziękuję za wszelką pomoc.

  • Pomocny post
    #2 23 Sie 2011 10:07
    LordBlick
    VIP Zasłużony dla elektroda

    Używając etykiet w .eseg nie zastanawiasz się nad fizycznymi adresami, robi to za ciebie kompilator. Tym niemniej aby operować na tych danych należy oczywiście użyć "okienka podawczo - odbiorczego" w EEDR, zgodnie z notą katalogową ( http://www.atmel.com/dyn/resources/prod_documents/2502S.pdf ).
    Wszystko z .eseg ląduje w pliku .eep, którym możesz za pomocą programatora programować EEPROM niezależnie od pamięci flash. Możesz również pominąć programowanie programatorem i obarczyć tym zadaniem sam program, który wygrywałby że EEPROM jeszcze nie jest zaprogramowany.
    Przykładowy kod (niekoniecznie optymalny - blokowanie pętli głównej, brak wsparcia dla stronicowania) przepisujący cL(używam nazewnictwa symbolicznego zamiast r_cośtam, co ułatwia ogarnięcie programowania) bajtów z pamięci RAM zaczynającej się na adresie załadowanym do XH:XL, do pamięci EEPROM zaczynającej się na adresie załadowanym do ZH:ZL :

    Kod: asm
    Zaloguj się, aby zobaczyć kod
    Kilka przydatnych tutaj makr i definicji (AVRasm2 zawierający preprocesor C):
    Kod: asm
    Zaloguj się, aby zobaczyć kod
    Przykład kodu wywołującego :
    Kod: asm
    Zaloguj się, aby zobaczyć kod

  • #3 26 Lip 2012 13:57
    domija
    Poziom 9  

    Dziekuje za pomoc. Zapis powiódł sie bez problemowo. Makra to przydatna sprawa.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME