Gast
#20052
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