Salta la barra di navigazione [1] - Vai alla barra di navigazione [3] - Scrivimi una mail [4]

PIC18: EUSART in assembly

Assembly PIC18 - PIC18 in C - Sommario - Novità - Tutorial - Progetti - Risorse - Non solo elettronica

PIC18 e UART: connessione USB

L'interfaccia seriale asincrona è un "protocollo antico", ma ancora utilizzato sebbene in un contesto ben diverso da quello di 50 anni fa. In questa pagina vedremo come utilizzarla per trasmettere dati da un PIC18 ad un PC o ad un telefonino attraverso le interfacce USB oppure Bluetooth.

Il segnare seriale asincrono

Innanzitutto esaminiamo la "forma" del segnale che il PIC dovrà trasmettere:

Quando è necessario trasmettere e ricevere, vengono utilizzati due fili separati: Tx (trasmissione) e Rx (ricezione), ma l'esempio mostrato si limita ad una comunicazione simplex.

Esercizio

Negli esercizi qui sotto proposti trasmettitore e ricevitore si sono accordati per trasmettere secondo i seguenti parametri (nota 3):

Dato il seguente segnale, codificato con i dati sopra riportati, riconoscere il byte trasmesso.

Trasmissione seriale asincrona: 0x35

[Risposta: 0x35 - 0011 0101]

Esercizio (complesso)

Dato il seguente segnale, codificato con gli stessi dati sopra riportati, riconoscere i byte trasmessi. Notare il cambiamento nella base dei tempi rispetto al diagramma temporale precedente.

Esercizio

Il circuito

Il circuito è particolarmente semplice in quanto verranno utilizzati (in alternativa) due moduli già assemblati, facilmente reperibili in commercio per pochi euro:

Entrambi gli adattatori sono disponibili con connettori facili da inserire in una breadboard, come quello visibile nella fotografia di apertura; il secondo è anche uno dei moduli opzionali già presenti su PICdemo R2.

Il collegamento tra PIC e modulo è estremamente semplice:

Il codice

Il primo programma mostrato trasmette continuamente, circa 10 volte al secondo, ad un terminale USB oppure Bluetooth un saluto costituito da "Hi" seguito da un a capo (i due caratteri ASCII CR e LF).

Il nucleo del codice che trovate a fondo pagina è costituito da due subroutine:

  1. configura_uart. Questa subroutine deve essere richiamata all'inizio del programma, una sola volta, e permette di impostare correttamente il funzionamento della periferica EUSART interna al PIC18. In particolare:
  1. invia_byte Questa subroutine trasmette al modulo Bluetooth oppure USB il byte contenuto in WREG, attendendo la fine della trasmissione. Questa funzione va richiamata ad ogni trasmissione di un singolo byte, dopo aver caricato in WREG il byte da trasmettere. In particolare:

Non è necessario comprendere nel dettaglio il funzionamento di queste due subroutine, piuttosto tecniche in quanto modificano molti bit in molti registri. E' invece necessario avere chiare le funzioni svolte ed essere in grado di saperle utilizzare.

RCSTA

Tabella 18.3

Generatore di clock

Tabella 9.4

A fondo pagina è presente anche un secondo codice nel quale viene mostrato come trasmettere una stringa. In esso sono presenti anche tecniche non elementari, quali l'uso di stringhe e di variabili inizializzate.

Configurare il PC o il telefono per ricevere

USB (Linux)

Innanzitutto è necessario collegare il modulo USB al PC. Appena collegato, anche a PIC spento, dovrebbe apparire il device /dev/ttyUSB0 (o qualcosa dal nome simile), per esempio;

vv@vv-inspiron:~$ ls -l /dev/tty*
crw-rw-rw- 1 root tty 5, 0 ago 10 10:20 /dev/tty
crw--w---- 1 root tty 4, 0 ago 10 10:20 /dev/tty0
...
crw-rw---- 1 root dialout 188, 0 ago 10 10:20 /dev/ttyUSB0

Verificare inoltre che l'utente appartenga al gruppo dialout (oppure tty):

vv@vv-inspiron:~$ groups
vv dialout cdrom floppy audio dip video plugdev netdev bluetooth pico

Per leggere i caratteri inviati dal PIC occorre usare (o scrivere) un programma per visualizzare quanto ricevuto. Per esempio di seguito la configurazione e l'uso di PuTTY.

Configurazione PuTTY PuTTY

Bruetooth (Android)

Occorre preliminarmente installare una App per gestire terminali Bluetooth, per esempio Bluetooth Terminal. Quindi si procede all pairing tra telefono e modulo Bluetooth HC-06 / HC-04 usando i normali strumenti Android. Se richiesto, il codice di default è 1234. Prima del pairing il LED sul modulo Bluetooth dovrebbe lampeggiare lentamente, dopo dovrebbe rimanere acceso fisso.

Infine di avvia l'App, e si seleziona il modulo

 

Il codice

Note

  1. Il modulo USB è alimentato direttamente dal PC e quindi non necessita di essere alimentato dal PIC. E' possibile anche collegare le due alimentazioni e NON alimentare separatamente il PIC, per esempio disattivando il flag presente nella configurazione del PICkit
  2. In questa pagina non viene affrontata la trasmissione da PC/telefonino a PIC
  3. Ovviamente è solo un esempio (anche se questi parametri sono ampiamente usati nel mondo reale)

 

Data di creazione di questa pagina: marzo 2017
Ultima modifica: 18 settembre 2017


Assembly PIC18

Inoltre potrebbe essere utile la pagina: PIC18 - Suggerimenti, in ordine sparso

Licenza Creative Commons Attribuzione 4.0 Internazionale


EN - Pagina principale - Sommario - Accessibilità - Note legali e privacy policy - Posta elettronica

XHTML 1.0 Strict - CSS 3