Forum: Mikrocontroller und Digitale Elektronik ATMega88 PWMs synchronisieren


von Newbie (Gast)


Lesenswert?

Hallo liebe Gemeinde,

ich versuche gerade, die Ansteuerung für eine RGBW-Anwendung zu 
realisieren und habe nur folgende PINs meines µCs dafür zur Verfügung:

// PD6/PIN12 > OC0A
// PD5/PIN11 > OC0B
// PB1/PIN15 > OC1A
// PD3/PIN5  > OC2B

Ich probiere nun schon seit einiger Zeit herum und hab die 
Registerbeschreibungen dazu jetzt schon unzählige Male durchgeackert, 
bekomme aber keine vier synchrone Ausgangssignale hin. Temporär sieht 
mein Code wie golgt aus:
1
// Konfiguration der I/Os
2
  DDRB = 0xFF;
3
  DDRD = 0xFF;
4
    // Modi-Festlegung der Timer/Counter auf nicht-invertierte 10-Bit PWMs:
5
  // COMnxn = Ausgabeart des PWM-Signals(pro PWM-Kanal)
6
  // WGMnn = Pulsweiten-Modulatorbits, um den PWM-Modus zu aktivieren und einzustellen(pro Timer)
7
  TCCR0A = (1<<COM0A1) | (1<<COM0B1)              | (1<<WGM01) | (1<<WGM00);
8
  TCCR1A = (1<<COM1A1)               | (1<<WGM12) | (1<<WGM11) | (1<<WGM10);
9
  TCCR2A =               (1<<COM2B1)              | (1<<WGM22) | (1<<WGM21) | (1<<WGM20);
10
  // Clock Select Bits(CSnx = Vorteiler):
11
  TCCR0B = (1<<CS02) | (1<<CS00);
12
  TCCR1B = (1<<CS12) | (1<<CS10); // 1024
13
  TCCR2B = (1<<CS22) | (1<<CS21) | (1<<CS20);
14
    // Festlegung der PWM-Startwerte:
15
  // OCRnx = Pulsbreite(pro PWM-Kanal)
16
  OCR0A = OCR0B = OCR2B = 200;
17
    OCR1A = 512;

Viele Grüße

von Newbie (Gast)


Lesenswert?

Niemand einen Rat?

Viele Grüße

von Jiro (Gast)


Lesenswert?

Eventuell eine soft pwm ?

von Newbie (Gast)


Lesenswert?

Ich denke, dass ich die Hardware-PWM nutzen sollte, wenn sie schon 
vorhanden sind. Es fehlt halt nur die richtige Einstellung... nur wie?

Viele Grüße

von spess53 (Gast)


Lesenswert?

Hi

Was verstehst du unter 'synchrone Ausgangssignale' und warum meinst du, 
das du das brauchst.

MfG Spess

von Newbie (Gast)


Lesenswert?

Hallo Spess,

mit synchron meine ich synchron^^ - also vier Signale in gleichem Takt 
(fester Startpunkt, gleiche Pulsbreite, gleicher Endpunkt).
Der Einfachheit halber würde ich gern von Anfang an im selben Format für 
die Ansteuerung der PWMs arbeiten. Also nicht noch irgendwelche eventl. 
Anpassungen (Rechnungen) zur Laufzeit...
Das müsste doch mit den vorhandenen PWMs leicht gehen, oder?

Viele Grüße

von holger (Gast)


Lesenswert?

>mit synchron meine ich synchron^^ - also vier Signale in gleichem Takt
>(fester Startpunkt, gleiche Pulsbreite, gleicher Endpunkt).

Häng deine LEDs an einen PWM Pin, dann hast du dein Ziel erreicht;)

von Karl H. (kbuchegg)


Lesenswert?

Newbie schrieb:
> Niemand einen Rat?

1) wie lautet die genaue Fehlerbeschreibung?
   nicht synchrones PWM ist ein wenig sehr schwammig.

2) Wenn du willst, dass das hier
1
  TCCR0A = (1<<COM0A1) | (1<<COM0B1)              | (1<<WGM01) | (1<<WGM00);
2
  TCCR1A = (1<<COM1A1)               | (1<<WGM12) | (1<<WGM11) | (1<<WGM10);
3
  TCCR2A =               (1<<COM2B1)              | (1<<WGM22) | (1<<WGM21) | (1<<WGM20);
4
  // Clock Select Bits(CSnx = Vorteiler):
5
  TCCR0B = (1<<CS02) | (1<<CS00);
6
  TCCR1B = (1<<CS12) | (1<<CS10); // 1024
7
  TCCR2B = (1<<CS22) | (1<<CS21) | (1<<CS20);
jemand für dich überprüft, wäre die Kentniss des Prozessors notwendig. 
Ansonsten ist das nämlich einfach nur toter Code.

von Newbie (Gast)


Lesenswert?

EDIT:

Hey Spess,

hat sich erledigt. In meiner RGBW-Anwendung wird die Farbe 'weiß' 
sowieso separat betrieben. Und 3 PWMs laufen schon synchron.

LG

von Karl H. (kbuchegg)


Lesenswert?

> mit synchron meine ich synchron^^ - also vier Signale in gleichem Takt
(fester Startpunkt, gleiche Pulsbreite, gleicher Endpunkt).

Dazu müsstest du die Timer absolut gleichzeitig starten können. Was dau 
aber nicht kannst. D.h. du wirst immer einen (kleinen) Versatz haben.

Allerdings: Wozu soll es bei einer RGBW (Wofür steht das W?) Ansteuerung 
notwendig sein, dass die einzelnen Farbkanäle exakt gleiche PWM-Pulse 
haben?

von spess53 (Gast)


Lesenswert?

Hi

>hat sich erledigt. In meiner RGBW-Anwendung wird die Farbe 'weiß'
>sowieso separat betrieben. Und 3 PWMs laufen schon synchron.

Interessiert eh nur den Gasmann. Sehen kannst du das sowieso nicht.

MfG Spess

von Newbie (Gast)


Lesenswert?

RGBW steht für Rot-Grün-Blau-Weiß. Neueste RGB-LED-Chips haben aus 
Gründen der Effizienz noch zusätzliche Farben eingebaut - mit einem 
zusätzlichen weißen Chip kann man so z.B. die restlichen Farben (die man 
ja für die Erzeugung von weiß benötigt) einsparen und braucht so nur 1/3 
der ursrünglichen Energie.

Ich hab', glaub ich, ein wenig um die Kurve gedacht.^^ Die PWM im 
Hintergrund wird man ja eh niemals optisch sehen können. Hat sich also 
wirklich erledigt...^^ Danke.

LG

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.