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
Ich bin kein ASM-Spezialist aber out schreibt doch auf ein Port? Das OCR2A Registet bescheibst du mit sts
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
diese Theater mit in,out,sts etc. mache ich auch gerade durch. ich verwende seitdem diese Macrodefinition aus der AVR001 Appnote von Atmel.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.