mikrocontroller.net

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


Autor: Dennis Strehl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert.G (Gast)
Datum:

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

Autor: Klaus2m5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Axel Rühl (Gast)
Datum:
Angehängte Dateien:

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

Autor: Dennis Strehl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.