PIC 16 o 32 bit...maggiore potenza di calcolo per PWM multiplexato

Ciao a tutti ho necessità di gestire una matrice di led utilizzando però dei pwm ... spero, credo, confido nel fatto...che si possa fare una sorta di pwm multiplexato una colonna per volta..

per fare questo immagino debba avere una potenza ben maggiore di un 18f4620 cloccato al massimo 40 Mhz

e mi chiedevo... con i PIC a 32 bit o a 16bit...ho più potenza?! riuscirei a realizzare un array di 32 colonne per 8 led.. multiplexando in pwm una colonna per volta?

scusatemi se mi sono espresso male

più mi spingo a largo e più mi rendo conto della vastita di questo oceano chiamato elettronica

grazie ancora...come sempre

Contrario

Reply to
Contrario
Loading thread data ...

"Contrario" wrote in message news:48a03d99$0$40302$ snipped-for-privacy@reader5.news.tin.it...

Hai considerato l'utilizzo di integrati specifici per il controllo PWM? Non ho sigle alla mano, ma recentemente ho visto un aggeggio con 16 uscite PWM e ingresso dati seriale (tipo I2C o SPI, non ricordo)

Comunque, così a naso mi sembra strano che non basti un PIC18. Tutto dipende anche dalla frequenza di multiplexaggio e dalla "precisione" del PWM (ovvero quanti livelli ti occorrono). Forse si tratta di ottimizzare il firmware (magari usando un po' di assembly) o anche l'hardware. Ad esempio, se ti bastassero 8 livelli di luminosità potresti fare un PWM hardware con un registro a scorrimento con caricamento parallelo: mandi gli otto bit (corrispondenti alla luminosità, più "1" più luminosità) attraverso una porta del PIC e ti risparmi l'onere di gestire tutto da firmware. Ovviamente ne devi fare uno per ogni riga...

Pensandoci, forse è molto più facile realizzare un generatorino di corrente programmabile, dove da firmware cortocircuiti più o meno resistenze a massa, a seconda della corrente che vuoi mandare al LED. Se ti interessa ti metto giù uno schemino...Comunque ci vuole solo un transistor e 3 resistenze (o una rete resistiva) per fare 8 livelli, più 3 uscite sul PIC per controllarlo.

Ciao

Pasu

Reply to
Pasu

Ciao grazie per la risposta

non so ancora come fare il pwm a 8 livelli... credo per bassa cultura dei pwm..in ogni caso ora come ora penso di intraprendere quella strada..

a me avanzerebbero 8 livelli di luminosità pwm

provo a gestirli da firmware perchè per il registro a scorrimento a caricamento parallelo...ad essere sincero..non saprei dove mettermi le mani ^_^ sono troppo ignorante....

grazie per la dritta... ti terrò informato sugli aggiornamenti..

grazie ancora

Contrario

Reply to
Contrario

Pestando alacremente sulla tastiera "Contrario" ebbe l'ardire di profferire:

Credi male. Basta ed avanza un normale PIC, basta abbia il numero di uscite necessarie a quelle che ti servono...

--
My sister opened a computer store in Hawaii. She sells C shells by the seashore.
News 2002 [v 2.08] / StopDialer / PopDuster - http://www.socket2000.com
Akapulce portal: http://www.akapulce.net
Reply to
Due di Picche

ciao grazie per la risposta

io pensavo di utilizzare tutti shift register ma riflettendo meglio credo che debba utilizzare i pin fisici del pic e non gli SR...

sbaglio?

Reply to
Contrario

Le strade che posso suggerirti sono le seguenti:

1- usi un numero limitato di PWM ad esempio 2 e implementi 8 sample- hold che "congelano" a comando il valore medio in uscita dal filtro PWM (2 alla volta) 2- ti scrivi tu il codice vero e proprio per implementare il PWM su 8 pin configurati come uscite (praticamente hai un contatore che ti da la risoluzione e 8 soglie con cui fare 8 confronti diversi): tenendo conto che devi pilotare dei led una banda di uscita (del segnale che arriva al led) di 20Hz potrbbe essere + che sufficente, sicch=E8 a monte del filtro PWM inietti 20*20=3D400Hz * 256valori=3D102400 Hz di interrupt su un timer (ad esempio timer0). Se fai andare il micro a 20Mhz hai 48 cicli di istruzione per poter scrivere il tuo programma (se usi l'assembler ti dovrebbero bastare, anche se non ho idea di come pensi di dare i comandi dall'esterno al micro). Comunque, anche se non ti bastano puoi ridurre i 256 valori a solo la met=E0di 128 (che =E8 comunque gi=E0 tanto per pilotare dei led) cos=EC hai a disposizone 96 cicli oer scrivere il tuo programma, se poi hai a disposizione un micro che va a 40MHz allora hai in quest'ultimo caso 96*4=3D 384 cicli istruzione ( ci potrebbe stare anche il C )

Ciao, Enrico

Reply to
Hexfet13

e

Chedo scusa per l'errore: "se poi hai a disposizione un micro che va a

40MHz allora hai in quest'ultimo caso 96*4=3D 384 cicli istruzione " =3D=3D=

i cicli sono solamente 96*2=3D192. Preciso che il fattore venti "....20Hz*20=3D400Hz....." deriva dal fatto che la frequenza a monte del pwm deve essere molto maggiore della frequenza di taglio del filtro passa basso del pwm ( e qui arbitrariamente ho usato un fattore 20, in generale pi=F9 alto =E8 e meglio =E8 ) Ciao

Reply to
Hexfet13

"Contrario" ha scritto nel messaggio news:48a03d99$0$40302$ snipped-for-privacy@reader5.news.tin.it...

I pic24 ed i pic32 hanno cicli di prefetch che consentono di dimezzare (a parità di freq. di clock e per il maggior numero di istruzioni) il tempo di esecuzione delle istruzioni dei pic ad 8 bit. Inoltre i pic18 hanno in hw solo l'istruzione di moltiplicazione. Se per il calcolo del valore chedevi assegnare al pwm, utilizzi anche divisioni, i pic24 e in maggior ragiore il pic32, eseguiranno l'operazione in tempi nettamente inferiori.

Roberto P.

Reply to
Roberto P.

o

oceano

o di

e

Beh, se comunque il comando dei led avviene tramite 232 o tramite lettura dell'adc non credo sia proprio necessario implementare moltiplicazioni o divisioni nel codice e usare un micro conarchitettura maggiore di 8 bit, anzi: basta adattare (nel caso del pilotaggio tramite lettura ADC) il segnale analogico al range di conversione del convertitore AD ed il gioco =E8 fatto (nel caso della

232 il problema proprio non c'=E8 perch=E8 si pu=F2 dare direttamente via seriale il valore di soglia pwm corretto)....comunque fin ch=E8 non =E8 noto come =E8 stato deciso/pensato di fornire il comando al micro si possono solo fare delle ipotesi. Ciao
Reply to
Hexfet13

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.