Softwareseitige Überlagerung von von PWM-Signalen?

OP #3566593
Lesenswert?

Hallo,

hat jemand eine Idee wie ich folgendes in Form von Software lösen kann?

Über Timer0 eines Atmega8515 erzeuge ich am OC0-Pin ein PWM-Signal mit 
dem ich eine LED dimmen kann.

Zusätzlich soll die LED noch mit einer variablen Frequenz blinken. Ich 
dachte dabei an den Timer1. Mit unterschiedlichen Werten in OCR1A 
bekomme ich schließlich Interrupts mit unterschiedlichen Frequenzen hin.

Nun würde ich in der ISR von Timer1 gerne eine Art "Enable" für den 
OC0-Pin aktivieren und deaktivieren, um der "Dimm-PWM" eine 
"Blink-Frequenz" überlagern kann.

Bitte nur Softwarelösungen, eine Hardwarelösung habe ich bereits.

Danke
matt
Gast #3566637
Lesenswert?

Matt B. schrieb:
> Nun würde ich in der ISR von Timer1 gerne eine Art "Enable" für den
> OC0-Pin aktivieren und deaktivieren, um der "Dimm-PWM" eine
> "Blink-Frequenz" überlagern kann.
>

Mit den COM0x Bits in TCCR0 kannst du doch den OC0 Pin ein- und 
ausschalten (zum Timer0 durchschalten und trennen). Das Setzen und 
Löschen der COM0x machst du dann in der Timer1 ISR.
OP #3566647
Lesenswert?

Hallo Grufti,

danke, so funktionierts.

Eine andere Möglichkeit wäre in das OCR0-Register eine 0 zu schreiben, 
wenn die LED aus sein soll und den entsprechenden Helligkeitswert wenn 
die LED ein sein soll. Hat aber den Nachteil, dass man den Wert im 
OCR0-Register zwischenspeichern muss, bevor man 0 rein schreibt.

Von meiner Seite aus kann das Thema damit auch schon geschlossen werden.

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