Forum: Mikrocontroller und Digitale Elektronik PWM parallel zu Programmablauf


von Michael F. (michael_f268)


Lesenswert?

Hallo zusammen,

ich hätte eine grundsätzliche Frage zur PWM an einem AVR-Port.

Wie kann ich denn, wenn auf einem AVR prinzipiell nur serielle 
Programmabläufe möglich sind, auf einen Portausgang zur Dimmung einer 
LED-Hintergrundbeleuchtung ein PWM-Signal parallel laufen lassen, 
während das Programm darauf normal weiterläuft?

Durch welchen Kniff kann ich denn das umsetzten?

Wäre sehr dankbar für ein Stichwort.

Danke,
Michael

von Jim M. (turboj)


Lesenswert?

Interrupt, Timer, DMA. Letzeres haben aber nur die XMEGA IIRC.

von Norbert S. (norberts)


Lesenswert?

Jim M. schrieb:
> Interrupt, Timer, DMA.

Wozu bitte DMA und Interrupt?
Hardware PWM mit Timer ist das Stichwort.

Gruß,
Norbert

von Hebi19 (Gast)


Lesenswert?

Stichworte:
Timer, Interrupt, Timer-Interrupt,  Multitasking,......

Auf deinem PC kannst Du ja auch surfen, gleichzeitig ein Video gucken 
und in einem anderen Fenster zusätzlich skypen.....

Aber du willst ja nur Stichworte....

von Einer K. (Gast)


Lesenswert?

Hebi19 schrieb:
> Stichworte:
> Timer, Interrupt, Timer-Interrupt,  Multitasking,......

Zu viele..

Stichwort: Timer
Ist voll ausreichend.

Im Datenblatt ist alles dazu nötige beschrieben.

von Norbert S. (norberts)


Lesenswert?

Hebi19 schrieb:
> Stichworte:
> Timer, Interrupt, Timer-Interrupt,  Multitasking,......
>
> Auf deinem PC kannst Du ja auch surfen, gleichzeitig ein Video gucken
> und in einem anderen Fenster zusätzlich skypen.....

Das wäre Soft-PWM.
@Michael:
Das wäre quasi-parallel, der µC macht die Sachen zwar immer noch 
hintereinander aber so schnell, daß es wie gleichzeitig aussieht.
Das geht auch ganz ohne Interrupt.
Mit Interrupt unterbricht er eben immer ganz kurz das Hauptprogramm, um 
die LED an- oder auszuschalten.

Noch besser ist Hardware PWM, da macht der Timer das ganz alleine, wenn 
er entsprechend eingestellt ist. Du wirfst ihm nur zu beliebiger Zeit 
den gewünschten Dimmwert vor die Füsse, brauchst Dich im Hauptprogramm 
um sonst nichts zu kümmern.

Gruß,
Norbert

von Michael F. (michael_f268)


Lesenswert?

Norbert S. schrieb:
> Noch besser ist Hardware PWM, da macht der Timer das ganz alleine, wenn
> er entsprechend eingestellt ist. Du wirfst ihm nur zu beliebiger Zeit
> den gewünschten Dimmwert vor die Füsse, brauchst Dich im Hauptprogramm
> um sonst nichts zu kümmern.

Der HW-PWM läuft auf dem Atmega328 dann wahrscheinlich nur auf bestimmen 
Pins, oder?

von Norbert S. (norberts)


Lesenswert?

Ja. Wie bei allen AVR8.
Das Datenblatt musst Du aber jetzt schon selber lesen.

Gruß,
Norbert

von Kurt (Gast)


Lesenswert?

Ja, bei µCs guckt man erst, was man an speziellen HW-Funktionen
braucht und an welchen Anschlüssen die verfügbar sind.
Oft gibt es noch Alternativen: Anderer Timer, inverser Ablauf,
inverse Pegel...

DANN entwirft man den Schaltplan. ;-)

Wer damit nicht zurecht kommt, sollte die Finger von den
minimalisierten Helferlein lassen.

von Gustav (Gast)


Lesenswert?


von Stefan F. (Gast)


Lesenswert?

PWM Signale erzeugst du am Besten mit einem Timer. Dadurch ist 
sichergestellt, dass die Signale sauber, ohne Aussetzer sind.

In meinem Buch http://stefanfrings.de/mikrocontroller_buch/ Band 3 
Kapitel 9 demonstriere ich anhand einer 7-Segment Anzeige, warum und wie 
man Multitasking auf Mikrocontroller implementieren kann.

Aber beschäftige zuerst mit dem PWM Timer, das wird Dich beim aktuellen 
Projekt sicher am ehesten weiter bringen.

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.