mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik "Standard" Initialisierung von Registern


Autor: Steffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich beschäftige mich gerade mit den ersten Gehversuchen von (AVR) 
Mikrocontrollern.
Nun frage ich mich, welchen Wert Register haben, die nicht explizit 
initialisiert sind. Sind die bits in den Registern automatisch gelöscht?
Konrektes Beispiel:
Ich möchte einen Timer starten im Compare Match Modus (Atmega 8, Timer1 
16-bit).
Hierzu müssen im TCCR1A Register COM1A0 und COM1A1 gelöscht sein. Muss 
ich diese bei der Initialiisierung explizit löschen oder sind diese 
bereits 0?
Gleiches gilt für den Timer selbst. Muss ich schreiben TCNT1=0 oder 
startet der Timer automatisch bei 0?

Danke.

Grüßchen
Steffi

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Muss ich diese bei der Initialiisierung explizit löschen
> oder sind diese bereits 0?
Was/Das steht im Datenblatt bei der Registerbeschreibung.

Autor: Drachenbändiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffi,

im Datenblatt des µC findest Du die Register einzeln beschrieben. Zu 
jedem ist erklärt, welche Funktion die einzelnen Bits haben. Darunter 
steht der "initial value", der meist 0 ist.

Autor: Steffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist der "initial value" der Wert hinter dem Doppelpunkt im Datenblatt, 
z.B. COM1Ax1:0? Oder wo steht das?

Autor: Steffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommando zurück, eben sehe ichs, wo das steht.
Danke

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade, wollte gerade den Screenshot mit "roter Einrahmung" absenden ;-)

Ach ja, noch als Hinweis:

Wenn Du den Controller nicht über einen Reset zurücksetzt, sondern z.B.
durch eine Sprung auf Adresse 0 (Startadresse), dann werden die 
Initialen Werte nicht wiederhergestellt.

Auch wenn man von einem Bootloader (der z.B. einen Timer oder UART 
initialisiert hat) in das Hauptprogramm springt, dann muss man den
Urzustand der Register vor dem Sprung selber wiederherstellen. Vor allem
wenn die eigentliche Applikation bei der Initialisierung von den 
Defaultwerten ausgeht! (Sollte bei einem "sauberen" Programmierstil 
eigentlich nicht sein....)

Autor: Klaus De lisson (kolisson)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weil es so schön zu thema passt, hier noch ein fundstück.

gruss klaus

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.