LDS Befehl funktioniert im controller nicht.

Gast #4622270
Hallo zusammen

bei folgendem Programmteil geht offensichtlich der lds (1. Zeile nach 
Timer1_comp_B:)Befehl nicht.
Im Simulator klappt alles, aber die serielle Schnittstelle gibt nur hx00 
aus. Wenn ich temp3 mit anderen Werten lade funktioniert alles.
Kann es sein dass man den Timer nicht auslesen kann, oder was mache ich 
denn da verkehrt. Und warum geht das im Simulator??
Der Timer läuft definitif, denn an PORTD,2  bekomme ich ein schönes 
Signal.

  Timer1_overflow:    //Beginn einer neuen PCM-Periode
  push  temp1
  in    temp1,sreg
  push  temp1
  cbi    PORTD,2      ;LED ausschalten(Lebenszeichen)
  clr     temp1
  sts    TCNT1H,temp1
  sts    TCNT1L,temp1
  ldi    temp1,0b00111111
  out    PORTB,temp1      ;Bits setzen
  out    PORTC,temp1
  sbi    PORTD,4
  sbi    PORTD,5
  ldi    status,0
  pop    temp1
  out    sreg,temp1
  pop    temp1
  reti
;*******************************************************
Timer1_comp_B:
  lds    temp3,TCNT1H
  sts    udr0,temp3
  sbi    PORTD,2      ;LED einschalten(Lebenszeichen)
  reti
Gast
Kommentiere mal das Programm etwas besser und fang mit einer
CPU-Legende an. Ich bin nicht sicher, aber gibts im Simulator
keinen Interruptkonflikt gegenüber der Hardware ?
Gast
Sebastian S. schrieb:
> Ich freu' mich schon auf den ersten Aufruf von Timer1_comp_B,
> außerhalb
> der Entwicklungsumgebung.

Da passiert nichts, keiner der Befehle verändert SREG.

@haderlump, Zitat DB: "Accessing the low byte triggers the 16-bit read 
or write operation."
Gast
Hallo Leute
Ich habe den Fehler gefunden. Man muss zuerst das Low-Byte lesen, auch 
wenn man das nicht braucht. Dan klappt es. Der Simulator berücksichtigt 
das nicht, sondern gibt einfach das High-Byte zurück.

Gruß Fritz

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.