Letar processor med 8 individuella hårdvaru PWM
- ChristianS
- Inlägg: 229
- Blev medlem: 7 januari 2009, 11:13:58
- Ort: Limhamn
Letar processor med 8 individuella hårdvaru PWM
Har ett projekt på gång där jag vill kunna styra 8 stk pwm utgångar ~1kHz är lagom, helst vill jag att det finns HW för det i processorn men är villig att kompromissa.
Kommer att behöva styra dem snabbt så SW PWM kommer inte på tal.
Har som hastigast kollat lite på externa PWM kretsar men hittar bara massa konstiga grejor så har ni tips om bra externa PWM generatorer så är jag tacksam för det också.
/ /Christian
Kommer att behöva styra dem snabbt så SW PWM kommer inte på tal.
Har som hastigast kollat lite på externa PWM kretsar men hittar bara massa konstiga grejor så har ni tips om bra externa PWM generatorer så är jag tacksam för det också.
/ /Christian
Re: Letar prcessor med 8 individuella hårdvaru PWM
PIC32 har 5 st HW, eftersom den gör upp till 120 DMIPS, så tror jag inte en SW-PWM blir speciellt långsam.
Re: Letar prcessor med 8 individuella hårdvaru PWM
> Kommer att behöva styra dem snabbt så SW PWM kommer inte på tal.
Definiera "snabbt". En spansk skogssnigel är "snabb" i jämförelse med
en svensk trädgårdssnigel...
Eftersom grundfrekvens ska vara 1 KHz, så har du ju alltid 1 ms på dig
för att justera periodtiden (det var väl det du menade med att "styra" ?).
På 1 ms hinner man göra ganska mycket på vilken processor som helst.
Problemet är snarare vilken upplösningen du vill ha, d.v.s hur många steg
(olika lägen) ska PWM signalen ha. Det har större påverkan på om en SW PWM
är möjlig eller inte. Det kan även bli lite mer jitter och andra störningar
i en SW PWM, men det vet vi inte hur känslig den aktuella applikationen
är för det.
Definiera "snabbt". En spansk skogssnigel är "snabb" i jämförelse med
en svensk trädgårdssnigel...

Eftersom grundfrekvens ska vara 1 KHz, så har du ju alltid 1 ms på dig
för att justera periodtiden (det var väl det du menade med att "styra" ?).
På 1 ms hinner man göra ganska mycket på vilken processor som helst.
Problemet är snarare vilken upplösningen du vill ha, d.v.s hur många steg
(olika lägen) ska PWM signalen ha. Det har större påverkan på om en SW PWM
är möjlig eller inte. Det kan även bli lite mer jitter och andra störningar
i en SW PWM, men det vet vi inte hur känslig den aktuella applikationen
är för det.
Re: Letar prcessor med 8 individuella hårdvaru PWM
> ~1kHz är lagom
1 kHz är ju jättelångsamt, det kan ju inte vara några problem att ordna PWM på varje I/O i den hastigheten. Beror iofs på vilken upplösning som krävs.
Enligt Atmels parametriska sök finns flera med ATmega som har >= 8 "Output compare channels"
http://www.atmel.com/dyn/products/param ... ily_id=760
Går säkert att hitta hos Microchip ifall du använder deras sökverktyg.
Freescale har också processorer med >= 8 PWM.
1 kHz är ju jättelångsamt, det kan ju inte vara några problem att ordna PWM på varje I/O i den hastigheten. Beror iofs på vilken upplösning som krävs.
Enligt Atmels parametriska sök finns flera med ATmega som har >= 8 "Output compare channels"
http://www.atmel.com/dyn/products/param ... ily_id=760
Går säkert att hitta hos Microchip ifall du använder deras sökverktyg.
Freescale har också processorer med >= 8 PWM.
Re: Letar prcessor med 8 individuella hårdvaru PWM
Men "channels" betyder inte alltid *oberoende* kanaler, ofta är det
komplementära eller quadratur utgångar. Och om man tittar på
något exempel på de AVR som anger många PWM channels, så
är de ofta implementerade på olika typer av timers (8/16 bit t.ex)
så de är inte likvärdiga till funktionen. Jag tror att det är svårt att
hitta en standardprocessor som AVR eller PIC med 8 oberoende
och likvärdiga PWM generatorer.
komplementära eller quadratur utgångar. Och om man tittar på
något exempel på de AVR som anger många PWM channels, så
är de ofta implementerade på olika typer av timers (8/16 bit t.ex)
så de är inte likvärdiga till funktionen. Jag tror att det är svårt att
hitta en standardprocessor som AVR eller PIC med 8 oberoende
och likvärdiga PWM generatorer.
Re: Letar prcessor med 8 individuella hårdvaru PWM
Jag hade tagit en Renesas M16C-65 och låtit den tugga på 40MHz. Den har ett antal timers som kan ställas till PWM men om det finns 8 utgångar är jag osäker på.
Men låt säga att det är 8 bits upplösning på PWM-utgångarna, med 1kHz frekvens blir varje tidslucka 256kHz, vid 40MHz blir det 156 instruktioner per puls. Det hinns lätt med!
Man gör en enkel grej med en buffer på 256 bytes, dessa "spelas upp" på en port. En rutin som tar hand om att ändra antal bits som är på hhv. av i varje kanal ska fixas men det är knappast ett större problem. En timer-interrupt som kommer med en frekvens på 256kHz hämtar alltså en byte från minnet, indexerat med en byte. Den hämtade byte smällas ut på en port, index-räknaren räknas upp med 1, klart.
Samma teknik kan såklart användas på andra processortyper som kan jobba snabbt nog. Med lägre upplösning kan man köra med långsammare processor.
Men låt säga att det är 8 bits upplösning på PWM-utgångarna, med 1kHz frekvens blir varje tidslucka 256kHz, vid 40MHz blir det 156 instruktioner per puls. Det hinns lätt med!
Man gör en enkel grej med en buffer på 256 bytes, dessa "spelas upp" på en port. En rutin som tar hand om att ändra antal bits som är på hhv. av i varje kanal ska fixas men det är knappast ett större problem. En timer-interrupt som kommer med en frekvens på 256kHz hämtar alltså en byte från minnet, indexerat med en byte. Den hämtade byte smällas ut på en port, index-räknaren räknas upp med 1, klart.
Samma teknik kan såklart användas på andra processortyper som kan jobba snabbt nog. Med lägre upplösning kan man köra med långsammare processor.
Re: Letar prcessor med 8 individuella hårdvaru PWM
Samma metod kan även användas m.h.a av ett externt 8-bit parr-SRAM
minne (gärna dubbelportat så att man kan skriva och läsa oberoende).
Det behövs också en 8-bit (eller mer om man vill det) räknare som
adresserar minnet och "kör" PWM generatorn.
Nackdelen med denna lösning (oavsett om det är internt i Icecap
beskrev det eller med ett extern minne) är att det inte bara är att
justera ett värde i ett register för att ändra pulsvidden. Samma bit
i (i värsta fall) 256 minnespositioner kanske ska ändras, och man måste
ha logik för att räkna om en viss pulsvidd till motsvarande adress area.
minne (gärna dubbelportat så att man kan skriva och läsa oberoende).
Det behövs också en 8-bit (eller mer om man vill det) räknare som
adresserar minnet och "kör" PWM generatorn.
Nackdelen med denna lösning (oavsett om det är internt i Icecap
beskrev det eller med ett extern minne) är att det inte bara är att
justera ett värde i ett register för att ändra pulsvidden. Samma bit
i (i värsta fall) 256 minnespositioner kanske ska ändras, och man måste
ha logik för att räkna om en viss pulsvidd till motsvarande adress area.
Re: Letar prcessor med 8 individuella hårdvaru PWM
Någon STM32 kanske, de flesta har 3-4 timers som klarar av 4 pwm signaler vardera. Timer 1 brukar även klara av att skicka ut komplementära signaler.
- ChristianS
- Inlägg: 229
- Blev medlem: 7 januari 2009, 11:13:58
- Ort: Limhamn
Re: Letar processor med 8 individuella hårdvaru PWM
Kollade på MSP430F vissa kan ha upp till 7 stk, varför inte 8 när man ändå håller på.
Kollar lite nu på AT91SAM7S128 visserligen bara 4 PWM men är nog kapabel till att köra det mesta med SW.
Att generera 8 stk PWM i SW har jag koll på men sedan skall de pulsas med 40 Hz så man kan säga PWM på PWM. Blir lite rörigt i min hjärna men man får nog göra ett försök.
Annars har hittat en krets som kanske kan vara en lösning för mig http://focus.ti.com/lit/ds/symlink/tlc5940.pdf

Kollar lite nu på AT91SAM7S128 visserligen bara 4 PWM men är nog kapabel till att köra det mesta med SW.
Att generera 8 stk PWM i SW har jag koll på men sedan skall de pulsas med 40 Hz så man kan säga PWM på PWM. Blir lite rörigt i min hjärna men man får nog göra ett försök.
Annars har hittat en krets som kanske kan vara en lösning för mig http://focus.ti.com/lit/ds/symlink/tlc5940.pdf
Re: Letar processor med 8 individuella hårdvaru PWM
Jo vilken stm32 som helst klarar det. (Alla jag tittat på i alla fall).
Eller ATMega640/1280/2560
4 16 bits timers med tre PWM-kanaler på varje (inga komplementära dock)
2 8 bits timers med två kanaler var.
Men en 16 bits-kanal och en 8 bits är på samma pinne.
Räcker det med 8 bits så går det väl med ATMega1281/2561.
Mega128 har 8 PWM, men en 8 och en 16 överlappar så bara 7 samtidigt.
Eller ATMega640/1280/2560
4 16 bits timers med tre PWM-kanaler på varje (inga komplementära dock)
2 8 bits timers med två kanaler var.
Men en 16 bits-kanal och en 8 bits är på samma pinne.
Räcker det med 8 bits så går det väl med ATMega1281/2561.
Mega128 har 8 PWM, men en 8 och en 16 överlappar så bara 7 samtidigt.
- ChristianS
- Inlägg: 229
- Blev medlem: 7 januari 2009, 11:13:58
- Ort: Limhamn
Re: Letar processor med 8 individuella hårdvaru PWM
Såja nu har jag hittat dsPIC'arna har 8 stk output compare som man kan använda bla en som jag använt tidigare i en motorstyrning och motor PWM enheten har fyra individuella jag har inte noterat output compare på denna förrän nu. Dessutom har jag nog ett labbkort kvar.
dsPIC33FJ256MC710A blir det.
Tack för tipsen!
dsPIC33FJ256MC710A blir det.
Tack för tipsen!