Forum: Mikrocontroller und Digitale Elektronik Wieso (fast) immer nur 2 PWMs pro Timer? (billig MCU)


von olitheone (Gast)


Lesenswert?

Hallo!

Hab zur Zeit folgendes Problem:
Es sollen für eine LED Ansteuerung (R,G,B) 3 PWM Signale erzeugt werden.
Die PWM Werte werden über ein einfaches Protokoll über eine serielle 
Scnittstelle empfangen.

Nur irgendwie hab ich das Gefühl das fast alle (halbwegs erhältlichen) 
MCUs Immer nur 2 max. PWMs pro Timer können. Sicher könnt ich 2 Timer 
"gleichschalten" aber dann bleibt für den Programmablauf meißt keiner 
übrig weil eine CPU mit 3 Timer dann oft schon wieder eine (Preis)Klasse 
höher liegt. Oder überseh ich irgendwas? (sooooviel hab ich mit 
Mikrocontrollern in der Regel nicht zu tun)

So schreibt zwar TI bei den MSP430 was von 3CCR aber mehr als 2 
sinnvolle PWM Signale bekomm ich da nicht raus (weil das CCR0 Register 
braucht man ja für den Vorgabenwert). Die Varianten mit den 7CCR sind 
dann wieder sündhaft teuer und groß.

ATMEL AVR hat sowieso irgendwie immer nur OCxA und OCxB kommt mir vor 
und oft nur 8 Bit PWM.

PIC hab ich nur überflogen da nicht sehr sympatisch, scheint sowas aber 
auch nicht zu bieten.

Was ich halt brauchen würd sind: 3PWMs (mind. 12 Bit)  die nur 1 Timer 
verbrauchen, einen 2ten Timer für Programmsteuerung, einen externen 
Interruptpin und einen UART, 4kB Flash, 256Byte Ram, und irgendein 
klitzekleines (QFN) sagen wir mal 20pin Gehäuse. Stückpreis sollte sowas 
1,5€ bei 10Stück sein (falls dann mal mehr wird entsprechend weniger).
Habt ihr nen Geheimtip? Gibts vieleicht was 8051er artiges?
Billige Entwicklungsumgebung wär halt fürn Anfang auch wichtig.

MfG Oli

von Stefanie B. (sbs)


Lesenswert?


von Thomas W. (thomasw)


Lesenswert?

Oder du bastelst dir PWM per Software:
http://www.mikrocontroller.net/articles/Soft-PWM

von Gast (Gast)


Lesenswert?

Das liegt wohl daran, daß diese MCUs für solch anspruchsvolle Aufgaben 
nicht konzipiert sind. Aber auch die Doppelkern CPUs bieten kein PWM im 
geforderten Maß.
Blinkende LEDs sind eben eine richtige Herausforderung :-)

von Jörg B. (manos)


Lesenswert?

olitheone wrote:
> Was ich halt brauchen würd sind: 3PWMs (mind. 12 Bit)  die nur 1 Timer
> verbrauchen...
Wie wäre es mit Software-PWM? Alles eine Frage der Anforderung (z.B. 
Frequenz).

von Andreas K. (a-k)


Lesenswert?

Unter den PIC30 sind einige, die auf PWM spezialisiert sind und eine 
entsprechend hohe Anzahl PWMs implementieren.

Auch allerlei LPC2000 sind dahingehend gut ausgestattet.

Bei Atmel solltest du mal unter AT90PWM suchen. Zwar eher für 
Motorsteuerung gedacht, aber evtl. auch dafür nutzbar.

von Carsten (Gast)


Lesenswert?

Infineon's XC866 ist ganz nett für sowas. Hat eine 3-phasige PWM-Einheit 
drauf (CAPCOM6). Weiß nur nicht wie man als Bastler an die Dinger ran 
kommt.

Aber wie auch schon die Vorredner erwähnt haben, um ne LED anzusteuern 
kann man auch locker alles in Software machen. Es reicht ja ne Frequenz 
von 100Hz.

von olitheone (Gast)


Lesenswert?

Hallo!

@Gast:
Anspruchsvoll? Ok wenn ich mit der PWM nen Motor betreib und alle 10us 
ne neue Vorgabe mach (für z.B. Sinusansteuerung) aber bei meiner 
Anwendung kommt max. alle 100ms ein neuer Wert.

Es ist halt generell meine Frage was es den MCU Herstellern so schwer 
macht mehr PWMs an einen Timer zu koppeln (die muß auch keinen 
Spezialitäten wie symmetrische PWM oder so können). Oder bin ich der 
einzige der sowas braucht. Ich erinnere mich dunkel an ein Praktikum in 
meiner Ausbildung wo wir bei einem C517 mit einem Timer ein ganzes 8Bit 
Port PWMen konnten.

@Thomas & Jörg:
Hmmm - an SoftPWM hab ich garnet gedacht. Meint ihr das geht sich aus? 
3x PWM bei 12Bit Ausflösung bei ca. 120Hz PWM Frequenz und zusätzlich 
die Protokollverarbeitung (wird in die Richtung verstümmeltes DALI 
Protokoll gehen)? Die CPU soll nicht allzuschnell laufen müssen 
(vielleicht interner Oszillator) und wichtig ist auch bei hoher UART 
Last kein Flackern oder so zu sehen.

@Andreas Kaiser:
LPC 2101 würd vom Preis her fast hinkommen, jedoch zu groß und mit 
Dual-Versorgung zu nervig :-)


MfG Oli

von Michael Wilhelm (Gast)


Lesenswert?

Na dann wäre der alte 68332 mit der TPU was für dich. ;-)

MW

von Eduard (Gast)


Lesenswert?

Interner Oszi und UART? Viel Spaß :-)

Aber nur so nebenbei: Der PIC18F1330 hat z.B. 3 14bit-PWM-Ausgänge, 8k 
Flash, 256 Byte RAM, 16 I/O, int. Oszillator, EUSART, etc...
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en022957

von Rufus Τ. F. (rufus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Der Timer_B des MSP430 könnte was für Dich sein.

Anbei ein Codebeispiel von TI, Beschreibung:
1
//  MSP-FET430P140 Demo - Timer_B, PWM TB1-6, Up Mode, DCO SMCLK
2
//
3
//  Description: This program generates six PWM outputs on P4.1-6 using
4
//  Timer_B configured for up mode. The value in CCR0, 512-1, defines the PWM
5
//  period and the values in CCR1-6 the PWM duty cycles. Using ~800kHz SMCLK
6
//  as TBCLK, the timer period is ~640us.
7
//  ACLK = na, SMCLK = MCLK = TBCLK = default DCO ~800kHz.

Reicht das?

von olitheone (Gast)


Lesenswert?

@Eduard:
Interner Oszillator und UART ist problematisch ich weiß aber bei 1200Bps 
sollts noch laufen.
Der PIC is übrigends leider zu teuer.

@rufus:
Das is genau so ein MSP430 Derivat mit dem 7CCR welches nicht unter 6€ 
zu haben ist.


Trotzdem mal danke an alle!

MfG Oli

von Benedikt K. (benedikt)


Lesenswert?

olitheone wrote:
> @Eduard:
> Interner Oszillator und UART ist problematisch ich weiß aber bei 1200Bps
> sollts noch laufen.

Wieder mal einer, der bei Prozentrechnung geschlafen hat...

von Eduard (Gast)


Lesenswert?

@olitheone:

Umsonst ist nur der Tod....

von Peter D. (peda)


Lesenswert?

olitheone wrote:
> Das is genau so ein MSP430 Derivat mit dem 7CCR welches nicht unter 6€
> zu haben ist.

Der AT89LP4052 kostet bei progshop 1,73€ ab 18St.

Durch die Interruptprioritäten kann man die Software-PWM mit der 
höchsten Priorität machen und der UART eine niedrigere geben.

120Hz * 2^12 = 500kHz Interrutprate = 40 Zyklen bei 20MHz, ist zu 
schaffen.

Mit ner intelligenten PWM (Tabelle mit den 3 Timerreloadwerten für die 3 
Ausgänge), sind die 40 Zyklen auch nur die Spitzenlast (max 3* je 
120Hz-Periode).

Wobei kein Mensch 12Bit unterscheiden kann, 10Bit sollten reichen.


Peter

von Michael P. (desilva)


Lesenswert?

Nur am Rande: Mein Lieblingschip kostet in der Tat 12 Euro, hatte aber 
nie Probleme auf allen seinen 32 GPIO Beinchen 32 verschiedene PWM 
Signale mit 100 ms Perioden und einer Auflösung von 10 Bits auszugeben. 
Natürlich alles in Software :-)
Auflösung des Rätsels: Parallax Propeller

von Andreas K. (krempel)


Lesenswert?

Hallo oli,
das gleiche Problem mit nahezu identischer Aufgabenstellung habe ich 
auch. Momentan fahre ich die RGB-Steuerung mit Soft-PWM in einem Mega8 
und 8MHz Resonator (billiger und kleiner als Quarz). Der Controller wird 
seriell vom Master gesteuert und funktioniert auch ganz ordentlich, aber 
die Adressierung im (eigenen) Bus ist nervend und die Auflösung von 8 
Bit sind uns zu wenig. Die PWM-Frequenz ist irgendwas um die 130 Hz und 
zumindest bei Kopfbewegungen und kleiner Einschaltdauer sieht man das 
flackern ganz eindeutig.

Bei kleinen Einschaltwerten ist auch der Stufenunterschied sehr deutlich 
auszumachen und fast kein langsamer flüssiger Dimmvorgang möglich.
Das waren zumindest die Rückmeldungen vom Vertrieb ;-)

Daher habe ich mich auf die Suche nach einem Controller gemacht, der 1. 
sehr günstig, 2. sehr klein (MLF-Gehäuse nicht mehr als 7 mm 
Kantenlänge), 3. vier PWM's in Hardware mit 12 Bit kann und 4. mit 
open-source-Tools programmierbar ist.
Bei Atmel gab's das nur in riesengroßem TQFP (mega64 und seine Brüder), 
die kleinen LPC-ARM's gibt's auch nur in TQFP, zu 8051 wollte ich nicht 
zurück und so lächelte auf einmal die PIC24F Familie. Der C-Compiler ist 
sehr günstig, das MPLAB-ICD-Zeugs scheint zu funktionieren und ein 
Eval-Board gibt's auch für kleine Steine. Der Gag ist aber, daß es den 
PIC24FJ16GA04 für unter 2$ im 28-poligen QFN gibt. Da kotzt nur noch der 
Bestücker ;-)))
Schau ihn Dir mal an, für mich scheint er ideal für diese gehobene 
LED-Beleuchtungsklamotte.
Lange her, daß ich den Pic's wegen der grausligen Bankswitcherei den 
Rücken zugewandt hatte, aber Atmel hat halt nix im Programm was passt. 
Außerdem hat Microchip die Dinger für Umsonst flott als Muster auf 
meinen Tische geschafft, was sonst nur TI und National so hinbekommen.
Und Motorolla oder wie die heute heißen sind mit dem 68332 ja in einer 
ganz anderen Gehäuse- und Preisklasse.

Ciao
Krempel

von Andreas K. (a-k)


Lesenswert?

Die PIC24/30/33 sind an und für sich recht gut designed, leiden 
allerdings etwas unter der Implementierung (d.h. dem Inhalt vom Errata 
Sheet). Insbesondere die noch ziemlich frischen PIC24.

von Peter D. (peda)


Lesenswert?

Michael P. wrote:
> Nur am Rande: Mein Lieblingschip kostet in der Tat 12 Euro, hatte aber
> nie Probleme auf allen seinen 32 GPIO Beinchen 32 verschiedene PWM
> Signale mit 100 ms Perioden und einer Auflösung von 10 Bits auszugeben.


100ms ist bestimmt ein Schrehbfeiler.

100ms a 10Bit sind doch nur 10,24kHz, da gähnt jeder 8Bitter nur.


Peter

von Kopfkratzer (Gast)


Lesenswert?

Was ich nicht verstehe:

1. Mega8 hat 3 Timer mit 2x16bit PWM + 1x8bit PWM
2. Mega88 hat 3 Timer mit 2x16bit PWM + 4x8bit PWM
3. Tiny25 hat zwei Timer mit 2x8bit High-Speed PWM + 2x8bit PWM

Und die kosten alle < 3 Teuronen !
Und gibt's alle im DIP !
Solange es nicht um DDS im MHz Bereich geht ist der Tiny25 wohl die 
beste Wahl für LED Flackerei inklusive USI Steuerung.
Und Software PWM mit einem 8MHz Quarz sollte auch bei drei Kanälen über 
100Hz kommen.
Kopfkratz

von Andreas K. (krempel)


Lesenswert?

Ja, aber für das was wir damit machen wollen, sind die Erratas scheinbar 
okay. Ansonsten hast Du recht, die Liste liest sich beeindruckend ;-)))
Was auch noch ginge, wären die PsOC's von Cypress, aber da ist bei drei 
PWM's und einer seriellen Schnitte die Bude schon reichlich voll. 
Außerdem wieder nur im Tqfp-Gehäuse und das ist zumindest bei mir zu 
groß. Ich habe als Zielvorgabe 7 mm Platinenbreite, da wird die Auswahl 
sehr klein....

von Sebastian Heyn (Gast)


Lesenswert?

@Eduard:

>Umsonst ist nur der Tod....

kennst wohl die Preise der Bestatter nicht? ;-)

von olitheone (Gast)


Lesenswert?

@Andreas Ke.
Hey der PIC gefällt mir irgendwie. Ich glaub der wird gesampelt.
Danke für den Tip - hätte ansonsten Microchip eher gemieden.


MfG Oli

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Sebastian Heyn wrote:
> @Eduard:
>
>>Umsonst ist nur der Tod....
>
> kennst wohl die Preise der Bestatter nicht? ;-)
i.A. kostet er einem aber das Leben...

von Michael P. (desilva)


Lesenswert?

Peter Dannegger wrote:
> Michael P. wrote:
>> Nur am Rande: Mein Lieblingschip kostet in der Tat 12 Euro, hatte aber
>> nie Probleme auf allen seinen 32 GPIO Beinchen 32 verschiedene PWM
>> Signale mit 100 ms Perioden und einer Auflösung von 10 Bits auszugeben.
>
>
> 100ms ist bestimmt ein Schrehbfeiler.
> Peter

Ja, dumm :-( Es sollte 20 ms heißen, was aber egal ist... Der Clou ist 
natürlich, dass der DutyCycle zwischen 10% und 0,01% davon beträgt ;-)

von olitheone (Gast)


Lesenswert?

Hallo!

So - ICD2-Clone ist bestellt.

Hab mir zusätzlich zum kleinen PIC auch die dsPICs angeschaut. Wenn die 
Geschwindigkeitsmäßig so halbwegs mit einem kleinen ARM (so 50MHz 
Klasse) mithalten können las ich die ARMs fürs erste mal sterben.

Jetzt brauch ich nur noch eine Bezugsquelle für die PICs. Weiß jemand wo 
man die 16Bit PICs (24F, dsPIC33) als Privatperson (über die Firma würds 
im Not-Notfall auch gehen) in kleinen Stückzahlen (max. 25 auf einmal) 
bekommt?
Die 8bitter bekommt man ja an jeder Ecke, nur mit den 16Bittern schauts 
schlecht aus.
Sampling ist bei Microchip offenbar nicht so einfach - bringt aber auch 
nicht die Welt weil ich im Laufe der Zeit sowieso einige Stück brauche.

MfG Oli

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.