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
Ist das EEPROM auch mit programmiert bzw. ein entsprechendes Datenfile bei der Assemblierung erzeugt worden? Dies geschieht bei Default-Einstellungen nicht automatisch.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.