Forum: Mikrocontroller und Digitale Elektronik Atmega 48 schreibt in falsches Register


von Dennis Strehl (Gast)


Angehängte Dateien:

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

von Hubert.G (Gast)


Lesenswert?

Ich bin kein ASM-Spezialist aber out schreibt doch auf ein Port?
Das OCR2A Registet bescheibst du mit sts

von Klaus2m5 (Gast)


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

von Axel Rühl (Gast)


Angehängte Dateien:

Lesenswert?

diese Theater mit in,out,sts etc. mache ich auch gerade durch.
ich verwende seitdem diese Macrodefinition aus der AVR001 Appnote von
Atmel.

von Dennis Strehl (Gast)


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!

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.