www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16-Bit Registerwert in 16-Bit Variablen speichern


Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leutz,
ich hab ein Problem ich arbeite mit Codevision und ich benutzen den 16
Bit Timer1 des ATMega16, so nun will ich den 16Bit-Wert einer 16-Bit
Variablen zuweißen allerdings, klappt es nicht, er speichert entweder
immer nur das Low-Byte oder das High-Byte in einer 16-Bit-Variablen.
Gibt es dafür einen bestimmten Befehl? Danke

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einige 16bit-Register sind in der der Definitionsdatei nicht deklariert,
warum weiss ich auch nicht. Schau mal nach.

Mega16.h
.
.
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c;  // 16 bit access
.
.

temp_int=TCNT1;  //klappt, wenn TCNT1 definiert ist

Ansonsten kannst du natürlich auch TCNT1H/L einzeln auslesen und zu
einer 16bit-Variablen zusammensetzen.

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
crazy horse: Danke werde es gleich mal ausprobieren!

"Ansonsten kannst du natürlich auch TCNT1H/L einzeln auslesen und zu
einer 16bit-Variablen zusammensetzen." Wie geht das am schnellsten?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned int timer1;
//...irgendwas
timer1 = TCNT1L;
timer1 += TCNT1H << 8;

Ganz wichtig: Auf die richtige Reihenfolge beim Auslesen der Register
achten (erst Low- dann High-Byte, beim Schreiben umgekehrt).

Da der Compiler das bei Zugriff auf die 16-Bit-Register automatisch und
in der richtigen Reihenfolge macht, ist die Methode jedoch
(Idioten-)sicherer.

Gruß

Johnny

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.