Hallo, ich versuche im AVR Studio aus dem DSEG Bytes einzulesen. Im Assemblercode: .DSEG .ORG 0X0060 symbols: .DB 0x0005, 0x0007, 0x0009, 0x000A Sieht im Listingfile dann so aus: .DSEG .ORG 0X0060 000060 05 000061 07 000062 09 000063 0a symbols: .DB 0x0005, 0x0007, 0x0009, 0x000A jetzt versuche ich diese 4 byte zu lesen ldi r30, LOW(symbols) ldi r31, HIGH(symbols) defnext: LD r0, Z+ ..... brne defnext Statt der erwarteten bytes steht in R0 jedesmal 0xFF Vielleicht habe ich eine Blockade oder aber den LD Befehl nicht richtig verstanden. Kann mir einer auf die Sprünge helfen? Gruß Peter
Du kannst mit dem Assembler im .dseg nur Adressen festlegen, aber keine Werte hineinschreiben, dafür muss auch das .cseg herhalten (LPM statt LD, Faktor 2 berücksichtigen). Willst du andere Werte im SRAM außer 0xFF haben, musst du sie nach Reset erst ins SRAM schreiben (bspw. vom Flash kopieren).
Hi >.DSEG >.ORG 0X0060 >symbols: .DB 0x0005, 0x0007, 0x0009, 0x000A Das funktioniert nicht im Ram. Entweder du lädst die Werte beim Programmstart an die Stelle: .dseg symbols: .byte 4 .cseg .... ldi ZL,Low(symbols) ldi ZH,High(symbols) ldi r16,$05 st Z+,r16 ldi r16,$07 st Z+,r16 ldi r16,$09 st Z+,r16 ldi r16,$0A st Z+,r16 oder du machst das ganze im Flash: .... ldi ZL,Low(symbols<<1) ldi ZH,High(symbols<<1) lpm r16,Z .... .DB $05,$07,$09,$0A MfG Spess
Hallo Mark, Man hätte auch selber darauf kommen können. Bin ich aber nicht. Darum: Danke für den Tip Gruß Peter
Hi
> .DB $05,$07,$09,$0A
Muss natürlich
symbols: .DB $05,$07,$09,$0A
MfG Spess
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.