- Messaggi: 43
- Ringraziamenti ricevuti 0
PIC Master-Slave con Uart in parallelo per eleborare segnale DMX o SPI?
8 Anni 10 Mesi fa - 8 Anni 10 Mesi fa #1
da Elby
PIC Master-Slave con Uart in parallelo per eleborare segnale DMX o SPI? è stato creato da Elby
Salve a tutti, sto avendo un dubbio circa la possibilità di fare un collegamento di tipo MASTER-SLAVE tra un pic18 (master) ed una decina di pic16 (slave).
La domanda principale è: cosa succede se metto in parallelo gli ingressi UART-RX di dieci pic all'uscita UART-TX di un pic per trasmettere dati seriali? i livelli dovrebbero farcela ?
Sto progettando un light controller per dmx512 (250Kbps di velocità trasmissione). Chi conosce questa linea sa che necessita di una resistenza terminale da 120 ohm per l'adattamento ed è proprio l'adattamento dei segnali ed i livelli che mi preoccupano. Detto questo vi spiego cosa voglio fare.
La mia intenzione è quella di creare una centralina in cui ciascun pic slave elabora quattro canali dmx (in pratica uno smistatore del segnale). Diciamo che quando la centralina ha il codice identificativo "00000001" i primi quaranta canali dmx sono presi ed il pic 18 deve smistare i vari byte in gruppi da 4 su ciascun pic. Le soluzioni prese da me in considerazione sono:
1) I2C...scartata per la scarsa velocità di trasmissione dato che se considero che a ciascun pic devo inviare un byte di indirizzo e quattro byte di dato il tutto mentre sulla uart entrano dati a 250 Kbps rischio di perdere il sincronismo anche a 400 kbps o peggio ancora, come già mi è successo) rischio che si impalli in attesa di un ack da uno degli slave
2) SPI...non l'ho mai utilizzata ma è interessante la velocità di trasmissione.
3) UART...con I2C per settare le funzioni di ogni canale
In quest'ultimo caso l'idea che sta prendendo il sopravvento per semplicità e facilità d'uso ma che pone dubbi sui livelli e la chiusura della linea.
In pratica una volta giunto il segnale dmx, individuata la parte di codice di competenza in funzione dell'indirizzo del master, prenderei i 40 byte di interesse e li invierei (aggiungendo un mio personale protocollo per sincronizzare) ad i vari slave in contemporanea. Ciascuno poi avendo un suo personale indirizzo dovrebbe elaborare la sua porzione di codice.
La domanda principale è: cosa succede se metto in parallelo gli ingressi UART-RX di dieci pic all'uscita UART-TX di un pic per trasmettere dati seriali? i livelli dovrebbero farcela ?
Sto progettando un light controller per dmx512 (250Kbps di velocità trasmissione). Chi conosce questa linea sa che necessita di una resistenza terminale da 120 ohm per l'adattamento ed è proprio l'adattamento dei segnali ed i livelli che mi preoccupano. Detto questo vi spiego cosa voglio fare.
La mia intenzione è quella di creare una centralina in cui ciascun pic slave elabora quattro canali dmx (in pratica uno smistatore del segnale). Diciamo che quando la centralina ha il codice identificativo "00000001" i primi quaranta canali dmx sono presi ed il pic 18 deve smistare i vari byte in gruppi da 4 su ciascun pic. Le soluzioni prese da me in considerazione sono:
1) I2C...scartata per la scarsa velocità di trasmissione dato che se considero che a ciascun pic devo inviare un byte di indirizzo e quattro byte di dato il tutto mentre sulla uart entrano dati a 250 Kbps rischio di perdere il sincronismo anche a 400 kbps o peggio ancora, come già mi è successo) rischio che si impalli in attesa di un ack da uno degli slave
2) SPI...non l'ho mai utilizzata ma è interessante la velocità di trasmissione.
3) UART...con I2C per settare le funzioni di ogni canale
In quest'ultimo caso l'idea che sta prendendo il sopravvento per semplicità e facilità d'uso ma che pone dubbi sui livelli e la chiusura della linea.
In pratica una volta giunto il segnale dmx, individuata la parte di codice di competenza in funzione dell'indirizzo del master, prenderei i 40 byte di interesse e li invierei (aggiungendo un mio personale protocollo per sincronizzare) ad i vari slave in contemporanea. Ciascuno poi avendo un suo personale indirizzo dovrebbe elaborare la sua porzione di codice.
Ultima Modifica 8 Anni 10 Mesi fa da Elby.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Elby
- Autore della discussione
- Senior Member
Riduci
Di più
8 Anni 9 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic PIC Master-Slave con Uart in parallelo per eleborare segnale DMX o SPI?
Il protocollo dmx512 fa uso delle terminazioni da 120ohm perché utilizza il protocollo RS485.
Non hai il collegamento diretto tra il TX e i vari RX slave ma hai un transceiver RS485 sul master ed ogni slave ha anche un transceiver in ricezione.
Con questo setup non hai problemi nel collegare ad un singolo TX più RX...altrimenti lo avresti, soprattutto a 250Kb/s
Viste le velocità, tra i vari PIC-PIC puoi usare l'SPI o considerare ogni PIC come un nodo del BUS.
Non conosco i dettagli del protocollo, i consigli dati sono generici.
Ho visto velocemente che i vari nodi sono collegati in daisy chain quindi ogni nodo ha il TX collegato all'RX del nodo successivo...
Saluti,
Mauro
Non hai il collegamento diretto tra il TX e i vari RX slave ma hai un transceiver RS485 sul master ed ogni slave ha anche un transceiver in ricezione.
Con questo setup non hai problemi nel collegare ad un singolo TX più RX...altrimenti lo avresti, soprattutto a 250Kb/s
Viste le velocità, tra i vari PIC-PIC puoi usare l'SPI o considerare ogni PIC come un nodo del BUS.
Non conosco i dettagli del protocollo, i consigli dati sono generici.
Ho visto velocemente che i vari nodi sono collegati in daisy chain quindi ogni nodo ha il TX collegato all'RX del nodo successivo...
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
8 Anni 9 Mesi fa - 8 Anni 9 Mesi fa #3
da Elby
Risposta da Elby al topic PIC Master-Slave con Uart in parallelo per eleborare segnale DMX o SPI?
Grazie Mauro, hai pienamente risposto alla mia domanda. A questo punto provvedo a interfacciare il pic18 con i dieci pic16 con un'interfaccia spi.
Ma quale (affidabile) sistema ho per non dover occupare dieci pin del pic? Un demux potrebbe essere una buona soluzione? Come ho giá detto non ho mai adoperato la seri a le come spi ma solo come i2c.
Altra cosa, normalmente sulla linea di trasmissione dmx gli utenti sono tutti in parallelo e la linea quindi è aperta salvo terminazione. Nel mio caso in cui il collegamento é di tipo serie (il segnale entra tramite un max485 nel RX del micro ed esce dal TX con un nuovo max485), è necessaria la terminazione? Il micro non interrompe automaticamente la linea?
Ma quale (affidabile) sistema ho per non dover occupare dieci pin del pic? Un demux potrebbe essere una buona soluzione? Come ho giá detto non ho mai adoperato la seri a le come spi ma solo come i2c.
Altra cosa, normalmente sulla linea di trasmissione dmx gli utenti sono tutti in parallelo e la linea quindi è aperta salvo terminazione. Nel mio caso in cui il collegamento é di tipo serie (il segnale entra tramite un max485 nel RX del micro ed esce dal TX con un nuovo max485), è necessaria la terminazione? Il micro non interrompe automaticamente la linea?
Ultima Modifica 8 Anni 9 Mesi 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, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.