limite minimo di microsecondi interrupt con oscillatore interno

1 Settimana 6 giorni fa #1 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 ?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Elby
  • Senior Member
  • Senior Member
Di più
1 Settimana 5 giorni fa #2 da Mauro Laurenti
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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
1 Settimana 5 giorni fa - 1 Settimana 5 giorni fa #3 da Elby
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 1 Settimana 5 giorni fa da Elby.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Elby
  • Senior Member
  • Senior Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login