Outpout compare (AVR) neu laden

OP #1757584
Lesenswert?
• ▲
▼
Mahlzeit,

ich hab nen ATMega168.
Ich würde gerne wärend des CompareA oder B im normal mode, den 
Comparewert neu laden, also einen anderen.
Ich bin aber der Meinung das daß nicht funktioniert, zmindest hab ich 
das Datenblatt so verstanden.
Hab ich recht? Und wenn ja, hat jemand vielleicht ne Alternative?

Greetz

Herb
Gast #1757676
Lesenswert?
• ▲
▼
Hi

>Also ich mein wärend der ISR von CompareA, einen neuen Wert ins Compare
>Register hineinschreiben. Mit B Genauso.

Was sollte dich daran hindern? Allerdings ist es u.U. günstiger das 
Update im Overflow-Interrupt zu machen.

MfG Spess
#1757677
Lesenswert?
• ▲
▼
Im normalen Mode geht das.

Worauf Du vermutlich anspielst, ist, dass das Output Compare Register in 
bestimmten Modes double buffered ist und dort Änderungen nur am Beginn- 
oder Endwert übernommen werden, was Dich auf einen einzigen 
Compare-Interrupt pro Zählerdurchlauf beschränkt.  Aber Du hast ja 
normal mode.
#1757718
Lesenswert?
• ▲
▼
Herb B. schrieb:

> Ich habs mir schon gedacht das es ziemlich u.U is aber ne bessere Lösung
> hab ich leider nicht für meine Problematik..

Dann schildere mal deine Problematik.

Denn bei diesem Verfahren gibt es eine Falle:

Wenn der neue Wert größer ist als der alte, dann werden dir ein einem 
Timerdurchlauf 2 Matches generiert.

Das kann egal sein, muss es aber nicht.
(Daher auch der Vorschlag von spess53 sich selbst eine Art double 
buffering mit dem Overflow Interrupt zu bauen)
#1757724
Lesenswert?
• ▲
▼
Herb B. schrieb:
> Ok ich dachte das geht halt nur wenns double buffered ist. Dann hab ichs
> falsch verstanden :)

wenns nicht double buffered ist, hast du unter umständen das Problem, 
dass der conter schon am comparewert vorbei ist.
dann kommt er erst das nächste mal, wenn er einmal übergelaufen ist.
Das kann bei zeitkritischen Prozessen oder bei langsamlaufenden Timern 
(zb 16bit) Probleme bereiten.
OP #1757841
Lesenswert?
• ▲
▼
Die Problematik is halt, wie Peter schon bemerkte das ich 2 Frequenzen 
ausgeben möchte...
Da wollt ich die Compare Werte genau wärend des Compares neu laden.
(Natürlich nur größere Compare Werte) ;)
Da ich ja die Timer Overflow ISR nur für eine der beiden frequenzen 
nutzen kann.

Ich werd eure Tips mal beherzigen. mal sehen was rauskommt ;)

Tnx
Gast #1757864
Lesenswert?
• ▲
▼
Hi

>Da ich ja die Timer Overflow ISR nur für eine der beiden frequenzen
>nutzen kann.

Du hast weiter oben von 'normal mode' geschrieben. Das heisst 
eigentlich, das der Timer einfach durchläuft.

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.