mi sa che tu confondi quello che viene fatto dentro l'interrupt (la gestione del pwm "software") con quello che devi fare fuori (la rampa di accensione o spegnimento).davideciarm ha scritto:grazie mille per le dritte...
vorrei capire una cosa, come faccio dal main a memorizzare "a piacimento" i tempi di PWMtmr[x]?
ti spiego, per come l'ho fatto io, se pwmtmr[x]= contatore fa l'azione e poi devo memorizzare il successivo valore, perchè così sono sicuro che il valore che scrivo (es.10,) avviene dopo preciso 10 scatti del contatore...non so se mi sono spiegato...per come l'ho fatto io mi esegue tutto il fade su un led (tempi per un solo led...se 2 led dovrebbe cambiare per i calcoli in più) in circa 150uS, aumentabile tramite trimmer esterno. nel main andrei bene se avessi tempi più ampi, o sbaglio?
La domanda if (pwmtmr[x]== contatore) la fa solo l'interrupt, tu te la devi scordare, poi la tempistica di accensione spegnimento (semplicemente scrivendo i valori da 0 a 32 in pwmtmr[x]) la fai nel main in base a un'altra temporizzazione molto più lenta, che può essere data da un altro timer hw (inutile) o dallo stesso timer che usi per il pwm, utilizzato come base dei tempi che incrementa una variabile per farne un multiplo più lungo, e che puoi vincolare al trimmer che dice ogni quanto incrementare questa variabile (anch'io non so se mi sono spiegato...).
Altra cosa che non ho capito: per fade su un led intendi la rampa da 0 a luminosità massima? e la fai in 150us?
nessuno, solo che io non ci capisco...che problema potrei avere lasciandolo così?
