Softstarter und TIMER0

OP #1741603
Lesenswert?

Hallo,

ich habe folgendes Problem.
Ich realisiere zurzeit einen Softstarter für Motoren und die Hardware 
funktioniert prima und ist auch nicht das Prob.
Sondern die Software... Genauergesagt der Timer0.
Daten:
Prozessor: ATMEGA168
11,0592 Mhz
Phasenanschnitt
Der Nulldurchgang kommt über ne fallende Flanke jede Periode rein und 
löst den Interrupt0 aus.
Die Triacs hängen an OC0A und OC0B bzw. PD5 und PD6.
Ich synchronisiere jeden Nulldurchgang den Timer0 im Interrupt und lade 
dann die Zündvariable OCR0B ins Compare Register um den ersten triac bei 
Compare in der ISR zu zünden, durch setzen der Ausgänge oder toggeln des 
timers.
 Bei diesem CompareB ISR lade ich dann auch den nächsten Wert ins OCR0B 
um beim 2. Compare wieder abzuschalten.

Jetzt sieht es aber so aus als ob ich wärend des laufenden Timers keinen 
neuen Wert in OCR0B oder A schreiben kann.
Zumindest habe ich nur ein Compare wärend einer Periode... Das ist 
merkwürdig. Weiß da einer genau über den compare bescheid???
Mir ist schon klar das die Werte größer sein müssen da sonst der timer 
schon vorbei is ;)

TNX
#1741643
Lesenswert?

Ja, das ist so.  Du bekommst pro Durchlauf nur einen Interrupt / eine 
Flanke, da die Änderung erst beim Überlauf übernommen wird:
1
The OCR0x Registers are double buffered when using any of the Pulse Width Modulation
2
(PWM) modes. [..] The double buffering synchronizes the update of the OCR0x Compare
3
Registers to either top or bottom of the counting sequence.
#1741654
Lesenswert?

Wenn Du den PWM-Ausgang abschaltest, kannst Du das Compare-Register so 
oft setzen, wie Du lustig bist und bekommst jedes Mal (bei jedem Match) 
einen Interrupt.  Vielleicht ist es also eine Lösung, den OC0x nicht von 
der PWM-Logik aus setzen zu lassen, sondern „von Hand“ im 
OC0x-Interrupt.  Der Jitter ist dann natürlich größer.

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