Forum: Mikrocontroller und Digitale Elektronik Probleme mit EEProm auslesen, spring immer zu Reset


von sammy (Gast)


Lesenswert?

.include "tn15def.inc"
rjmp main

main:
  ldi r20,0x00
  rjmp EERead
    mov r16,r21
  INC r20    ;eeprom adresse um eins erhoehen
  rjmp EERead
  mov r17,r21
rjmp ende

EERead:
sbic EECR,EEWE
rjmp EERead
out EEAR,r20
sbi EECR,EERE
in r21,EEDR
ret

ende:
rjmp ende



.eseg ; EEPROM-Segment
.org 0; "start-adresse"
table1: .db 0xff,0xee,0xdd,0xcc,0xbb,0xaa,0x99,0x88





nach dem ersten einlesen des EEproms springt er immer wieder an den
Anfang der Main Prozedur.... er soll doch da weitermachen wo er vor dem
EEprom lesen war....
kann mir jemand helfen?

THx

von Christian D (Gast)


Lesenswert?

Hallo sammy,

wenn ich das richtig gesehen habe, springst Du EEread durch einen
relativen Sprung (rjmp) an (kein Unterprogrammaufruf). Den Rücksprung
machst Du mit ret, als wäre es ein Unterprogramm gewesen.
Also entweder, Du baust Dir die EEread als Unterprogramm und springst
sie mit CALL an, oder Du setzt zwei Rücksprungmarken, die Du mit RJMP
anspringst (Dann mußt Du Dir noch eine Unterscheidung überlegen, ich
würde einfach noch ein Register verwenden).

Gruß

Christian

von crazy horse (Gast)


Lesenswert?

völlig normal - man kann (im Normalfall) nicht ein Unterprogramm mit
rjmp anspringen und mit ret zurückkehren, Korrekter Aufruf wäre rcall.
Weiss jetzt nicht aus dem Kopf ob der Tiny15 RAM hat, wenn ja, musst du
auch vorher den Stackpointer initialisieren. Bei Hardwarestack ist dass
nicht nötig.

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.