Forum: Mikrocontroller und Digitale Elektronik Softwareseitige Überlagerung von von PWM-Signalen?


von Matt B. (mattb)


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

: Bearbeitet durch User
von Grufti (Gast)


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.

von Matt B. (mattb)


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.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.