Forum: Mikrocontroller und Digitale Elektronik AVR Studio Simulator lädt Z-Pointer nicht (ASM)


von tanka (Gast)


Lesenswert?

Hallo,
ich verwende in meinem Atmega32 den Code aus dem AVR-Tutorial für das 
Lesen und Schreiben eines Registers im EEprom.
Betrachte ich nun den Ladevorgang des Z-Pointer im AVR- Studio Simulator 
muss ich leider feststellen, dass weder R30 noch R31 irgend eine 
Änderung aufweisen. In Hardware funktionierts ebenfalls nicht.

Weis jemand was ich falsch mach?

Danke schonmal
tanka


    ldi     ZL,low(daten)               ; Z-Zeiger laden
    ldi     ZH,high(daten)
    rcall   EEPROM_read                 ; Daten aus EEPROM lesen

...
...
EEPROM_read:
    sbic    EECR,EEWE                   ; prüfe ob der vorherige 
Schreibzugriff
                                        ; beendet ist
    rjmp    EEPROM_read                 ; nein, nochmal prüfen

    out     EEARH, ZH                   ; Adresse laden
    out     EEARL, ZL
    sbi     EECR, EERE                  ; Lesevorgang aktivieren
    in      r16, EEDR                   ; Daten in CPU Register kopieren
    ret

; Daten im EEPROM definieren
.eseg
daten:
    .db     0b10101010

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Speicher

von paul (Gast)


Lesenswert?

Hallo,hast du auch die eep datei in den mega32 geschrieben?
gruss
Paul

von tanka (Gast)


Lesenswert?

Ja hab ich mit programmiert.
Ich vermute das irgendwas am Syntax nicht stimmt, denn im Simulator 
zeigt der Zpointer auch nichts an.

von Hannes Lux (Gast)


Lesenswert?

Der Simulator hat 'ne Macke, er erkennt die EEP-Datei nicht automatisch. 
Da gibt's im Menü einen Punkt zum Up/Download Memories (nur bei aktivem 
Simulator verfügbar), mit dem man die EEP-Datei einbinden kann. 
Überprüfen kann man das auch im Memory-Fenster mit Einstelliung EEPROM.

...

von Hannes Lux (Gast)


Lesenswert?

> denn im Simulator zeigt der Zpointer auch nichts an.

Doch, er zeigt 0 an. Denn "Daten" liegt an Adresse 0 im EEP.

...

von paul (Gast)


Lesenswert?

Hallo,also in dem abschnitt den du geschickt hast ist alles in Ordnung.
Der Fehler muss in dem Rest stecken.Häng es doch mal an.
gruss
Paul

von spess53 (Gast)


Lesenswert?

Hi

>Ja hab ich mit programmiert.

Muss aber im Simulator separat geladen werden.

-> Debug->Up/Download Memory

>Ich vermute das irgendwas am Syntax nicht stimmt, denn im Simulator
>zeigt der Zpointer auch nichts an.

Was soll er anzeigen? 'daten' liegen auf Adresse $0000. Mach mal ein
 ' .org 10' zwischen '.eseg' und 'daten:' dann ändert sich das.

MfG Spess

von tanka (Gast)


Lesenswert?

Ok kann sein.
Allerdings liest er dann von Adresse 0 im EEP einen Registerinhalt 0xFF, 
welchen ich nicht brauch. Ich würde gerne diese Bitfolge gemeldet 
bekommen.

.eseg
daten:
    .db     0b10101010


Sehr komisch.

von spess53 (Gast)


Lesenswert?

Hi

Nochmal: Du musst das eep-File in den Simulator laden .

MfG Spess

von Hannes Lux (Gast)


Lesenswert?

@tanka:
Lies erst nochmal alle Antworten, ich vermute, Du hast welche übersehen.

...

von tanka (Gast)


Lesenswert?

ahhh...
sehr richtig. Dem Simulator hat das eep file gefehlt.
Mit Debug-> Up/Download Memory klappt das.
Mal schaun wie es jetzt um die Hardware steht.

Besten Dank. Vergelts Gott.

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.