Atmega 48 schreibt in falsches Register

Gast #271752
Lesenswert?
• ▲
▼
Hallo Leute

Ich hab ein Problem mit meinem AtMega48. Wenn ich versuche, ins OCR0A-
oder OCR0B-Register zu schreiben, schreibt er stattdessen nach 0x3F,
also ans Ende des I/O-Bereichs. (Im Simulator schreibt er dahin, in
real funktioniert's auch nicht.) Kann mir das einer erklären? Im
Disassembler steht auch die Adresse 0x27/0x28 drin, also falsch
Assembliert wurde es nicht.

MfG
Angehängte Dateien:
Gast #271754
Lesenswert?
• ▲
▼
Hallo Dennis,

lies mal im Datenblatt das Ende von Kapitel 13.4 und Tabelle 13.8.

Die OCRs sind "double bufferred" und Deine Einstellung der WGM bits
erlaubt das Laden der OCRs erst nachdem der Timer den letzten Stand der
OCRs passiert hat. Nach der entsprechenden Anzahl von Clocks sollten die
korrekten Werte in den OCRs landen.

Im Status Register ($3F) landet mit Sicherheit nichts davon!

Gruß, Klaus
Gast #271756
Lesenswert?
• ▲
▼
@Hubert: Out schreibt in ein I/O-Register also alles bis 0x3F. OCR0A
liegt in dem Bereich, OCR2A liegt asserhalb und braucht deshalb den
sts-Befehl.

@Klaus: Scheint wohl daran zu liegen, aber bei den andren Countern wird
der Wert sofort eingesetzt, obwohl die WGM-Bits gleich eingestellt
sind.

Blöderweise liegt im SREG-Register der gleiche Wert (0x80) den ich
versucht hab, in die OCR-Register zu laden, deswegen sah es so aus als
würde er ins falsche Register schreiben.

Wie auch immer, es scheint jetzt zu funktionieren.

Danke vielmals!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren