- Messaggi: 43
- Ringraziamenti ricevuti 0
limite minimo di microsecondi interrupt con oscillatore interno
5 Mesi 2 Settimane fa #1
da Elby
limite minimo di microsecondi interrupt con oscillatore interno è stato creato da Elby
Buonasera gruppo,
sto cercando di interfacciare un pic18f44k22 con un chip per led rgb che utilizza un protocollo unifilare a 800Kb.
Il chip in questione decodifica:
- il bit 0 quando la linea va alta per 0.25us e poi bassa per 1 us
- il bit 1 quando la linea va alta per 0.75us e poi bassa per 0.5 us
Complessivamente quindi ogni bit viene decodificato nel tempo totale di 1.2 us con 4 interrupt da 0.25 us .
Sto lavorando con l'oscillatore interno da 16Mhz e le 4PLL per portare la Fosc a 64 Mhz ma qualunque timer utilizzi, a prescindere dal preset, non ha mai un interrupt inferiore ai 6 us.
A questo punto non mi viene che da pensare che vi siano dei limiti fisici del pic che mi impediscono di lavorare a certe velocità.
Ci sono suggerimenti a riguardo ?
sto cercando di interfacciare un pic18f44k22 con un chip per led rgb che utilizza un protocollo unifilare a 800Kb.
Il chip in questione decodifica:
- il bit 0 quando la linea va alta per 0.25us e poi bassa per 1 us
- il bit 1 quando la linea va alta per 0.75us e poi bassa per 0.5 us
Complessivamente quindi ogni bit viene decodificato nel tempo totale di 1.2 us con 4 interrupt da 0.25 us .
Sto lavorando con l'oscillatore interno da 16Mhz e le 4PLL per portare la Fosc a 64 Mhz ma qualunque timer utilizzi, a prescindere dal preset, non ha mai un interrupt inferiore ai 6 us.
A questo punto non mi viene che da pensare che vi siano dei limiti fisici del pic che mi impediscono di lavorare a certe velocità.
Ci sono suggerimenti a riguardo ?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Elby
- Autore della discussione
- Senior Member
Riduci
Di più
5 Mesi 2 Settimane fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic limite minimo di microsecondi interrupt con oscillatore interno
Salve Elby,
nelle librerie LTlib gestisco un LED RGB per mezzo di semplici NOP, al fine di ottenere il tempo giusto (per i PIC18), per i PIC32 supporto la funzione delay_us.
Ho tarato un poco con l'oscilloscopio per far funzionare il tutto.
Altro modo potrebbe essere quello di usare il modulo SPI.
Lavori ad una frequenza opportuna e invii tanti 1 o 0 a seconda di quello che ti serve.
Saluti,
Mauro
nelle librerie LTlib gestisco un LED RGB per mezzo di semplici NOP, al fine di ottenere il tempo giusto (per i PIC18), per i PIC32 supporto la funzione delay_us.
Ho tarato un poco con l'oscilloscopio per far funzionare il tutto.
Altro modo potrebbe essere quello di usare il modulo SPI.
Lavori ad una frequenza opportuna e invii tanti 1 o 0 a seconda di quello che ti serve.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
5 Mesi 2 Settimane fa - 5 Mesi 2 Settimane fa #3
da Elby
Risposta da Elby al topic limite minimo di microsecondi interrupt con oscillatore interno
L'idea del NOP() è buona ma non ci riesco comunque. Passando da un bit all'altro il tempo low non scendere sotto il tempo di 800 ns neppure eliminando i NOP(). Per quanto riguarda l'SPI dovrei lavorare a 4 MHz di clock per riuscire a inviare un bit (1 wire di ampiezza temporale totale pari a 1.15us) su 5 bit di analisi. Non so se sto perdendo qualcosa ma sta diventando un'impresa apparentemente impossibile. Immagino che mettendo un oscillatore esterno da 64Mhz e quindi non usando le PLL dovrei aumentare drasticamente la velocità e "forse" risolvere
Ultima Modifica 5 Mesi 2 Settimane fa da Elby.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Elby
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 43
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.