Forum: Mikrocontroller und Digitale Elektronik ATMEL EEPROM Hilfe


von Sebastian Schildt (Gast)


Lesenswert?

Hallo!

Noch eine Newbie Frage (nebenbei: Assembler ist irgendwie cool; 
Silvester wusste ich gerade mal wie man "Assembler" schreibt und heute 
kann ich schon Strings vergleichen...)

Ich möchte Daten aus dem EEPROM eines Atmel AVR (8515) auslesen. Ich 
habe in meinen Sources folgendes:

.ESEG
EEP_UUID: .DB 2,3,12,0xFE

Folgendes:

sendUUID:
; Programm holt ein Byte aus dem Epromspeicher
  ldi  XL,LOW(EEP_UUID) ; Übergibt die zu lesende Adresse
  ldi  XH,HIGH(EEP_UUID) ; Low/High-Byte wird separat

s1_loop:
  out  EEARL,XL ; im EEPROM an den EEPROM-Port
  out  EEARH,XH ; übergeben, da 512 Byte verfügbar

EERead:
  sbic  EECR,EEWE  ;if EEWE not clear
  rjmp  EERead    ;    wait more

  sbi  EECR,EERE ; Setze des Read-Enable-Bit EERE im
              ; EEPROM-Control-Register EECR

  in  temp,EEDR ; Lese das Byte aus dem EEPROM-Speicher
  cpi temp,0xFE ;String zu Ende?
  breq s1_end
  rcall sendByte
  adiw XL,1
  rjmp s1_loop
s1_end:
ret

ergibt im Register temp aber immer "falsche" Werte. Als ersten Wert 
erhalte ich z.B. nicht wie erwartet "2" sondern 234, das allerdings 
reproduzierbar. Was mache ich falsch?

MfG

Sebastian

von mikki merten (Gast)


Lesenswert?

Ist das EEPROM auch mit programmiert bzw. ein entsprechendes Datenfile 
bei der Assemblierung erzeugt worden? Dies geschieht bei 
Default-Einstellungen nicht automatisch.

von Sebastian Schildt (Gast)


Lesenswert?

Also ich habe die Lösung - zumindest fast.

mikki hatte recht: Das EEPROM muss seperat geladen werden. Wenn ich beim 
AVRStudio im Debug Modus bin, kann ich im Menü "Debug->Up/Download 
Memories" wählen und die erzeugte "tut.eep" hochladen. Dann funktioniert 
alles so, wie ich mir das erhofft habe ;-)

Denoch bleiben Fragen:

Meine eep Datei ist 113 Bytes groß. Wenn ich im AVRStudio Dialog die 
Standardeinstellungen lasse (Save from Address[SfA] 0x0 / Bytes to 
save[BtS] 512) und auf "load and program" klicke dann sagt AVRStudio:

"Selected size is greater than available size with given start address, 
size adjusted to 32. Continue?"

Wenn ich auf Continue klicke, geht alles.

Geb ich im Dialog SfA=0x0, BtS=113 kommt das gleiche

Mit SfA=0x0 und BtS=32 erhalte ich "Nicht genügend Speicher"

Was will mir AVRStudio mit diesen Dialogen sagen?

Zweite Frage: Kann ich AVRStudio4 irgendwie dazu bringen, das EEPROM 
automatisch zu laden sobald ich auf "Debug" klicke? Ich habe keine 
passende Option gefunden.

MfG

Sebastian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.