Signallänge korrekt vermessen

Gast #2121126
Lesenswert?
• ▲
▼
Hallo, ich habe eine technische Schwierigkeit. Ich möchte mit Atmega48 4 
Signallänge jeweils an 4-Pins(PD0-PD0) messen lassen. Bei Pegelwechsel 
wird Interuppt  auslösen. Die Zeit wird mit 16-Bit-Timer1 ausgemessen. 
Ich möchte den Messwert  aus OCR1AH und OCR1AL korrekt auslesen. Wenn 
ich  den Messwert direkt aus aus OCR1AH und OCR1AL auslese, dann könnte 
es zum falschen Ergebnis führen. Weil man liest erst  OCR1AH und dann 
OCR1AL oder umgekehrt. Dabei gebt ein Problem: Der Übergang von 8-Bit zu 
9bit.
 Um das zu vermeiden soll man die zwei Register gleichzeitig ablesen.

Gibt es eine vernünftige Lösung?
Gast #2121149
Lesenswert?
• ▲
▼
Hi

>Tut mir leid , der Messwert steht in TCNT1 Register nicht in  OCR1A

Macht nichts:

To ensure that both the high and low bytes are read and written
simultaneously when the CPU accesses these registers, the access is
performed using an 8-bit temporary High Byte Register (TEMP).
This temporary register is shared by all the other 16-bit registers.

MfG Spess

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.