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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren