Hardware PWM

Gast #2159371
Lesenswert?

Hi

Ich möchte eine Hardware PWM generieren, also Pin toggeln ohne 
Interrupt.
Ich verwende einen ATTiny44.
Das Problem ist, dass OC1B(PinA5) nicht automatisch toggelt.
Wenn ich über TIMSK1 |= (1<<OCIE1B); das Interrupt freischalte dann 
springt er in die ISR --> ISR (TIM1_COMPB_vect) .
Aber das muss doch auch automatisch gehen?
Hab ich bei den Registern was falsch gesetzt.

TCCR1A |= (1 << COM1B0); // Toggle OC1B on Compare Match
TCNT1 = 0;               // Counter auf 0 stellen
OCR1A=62500;
TCCR1B |= ((1<<WGM12)|(1<<CS11));   // Teiler 8, CTC Mode

Gruß Martin
Gast #2159396
Lesenswert?

Und warum dann das:

>TCCR1B |= ((1<<WGM12)|(1<<CS11));   // Teiler 8, CTC Mode

Mit WGM12 stelle ich doch den CTC Mode ein.
Was soll daran falsch sein, oder kann ich mit dem CTC Mode nicht das 
OC1B toggeln lassen?
Gast #2159403
Lesenswert?

Hi

>Was soll daran falsch sein, oder kann ich mit dem CTC Mode nicht das
>OC1B toggeln lassen?

Was denn nun? PWM oder CTC?

>oder kann ich mit dem CTC Mode nicht das OC1B toggeln lassen?

Nein. Nur mit OC1A. Siehe 'Table 12-5. Waveform Generation Modes'

MfG Spess
Gast #2159411
Lesenswert?

In Table 12-2 steht --> Toggle OC1A/OC1B on Compare Match.
Wenn ich also OCR1A einen Werte gebe, müsste doch bei einem Compare des 
Timerwertes das OC1B toggeln.
Oder muss ich jetzt auf FastPWM zurückgreifen, ich möchte ja nur eine 
LED blinken lassen?

Gruß Martin
Gast #2159432
Lesenswert?

Hi

>In Table 12-2 steht --> Toggle OC1A/OC1B on Compare Match.

Richtig. Aber nur bei OC1A wird bei CTC auch der Timer zurückgesetzt. 
Ist dein OC1A-Pin schon belegt, oder was hindert dich daran die LED an 
PA6 zu hängen?

>Oder muss ich jetzt auf FastPWM zurückgreifen, ich möchte ja nur eine
>LED blinken lassen?

Es gibt mehrere Möglichkeiten. Du kannst auch CTC mit dem ICR1 machen 
und im TIM1_CAPT-Interrupt ein Pin togglen. Beim ATTiny44 geht das recht 
einfach: Einfach eine 1 in das entsprechende PIN-Register schreiben.

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