Corso introduttivo sui microcontrollori · na_RS232 3...

46
na_RS232 Corso introduttivo sui microcontrollori A. S. 2011-2012 La comunicazione RS232 con i Pic Nicola Amoroso [email protected] 1 http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/

Transcript of Corso introduttivo sui microcontrollori · na_RS232 3...

Page 1: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232

Corso introduttivo sui microcontrollori

A. S. 2011-2012

La comunicazione RS232 con i Pic

Nicola Amoroso

[email protected]

1

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 2: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 2

La comunicazione RS-232La comunicazione seriale con un picmicro

Molti microcontrollori MicgroChip Pic contengono al loro interno

delle USART e i costi rispetto a quei microcontrollori che non la

contengono sono inesistenti.

Quando si vuole utilizzare la comunicazione RS-232 con i Pic - Micro

è bene scegliere un microcontrollore che abbia un sottosistema

hardware di tipo USART al suo interno. Per esempio si può utilizzare

il microcontrollore della Microchip PIC18F4620 [anche il celeberrimo

16F877/16F877A contiene questo componente hardware (a tal

proposito si consulti opportuna bibliografia e data-sheets)].Questi microcontrollori lavorano generalmente fino a 5V che rappresentaappunto la tensione tipica dei circuiti digitali, mentre la tensione richiestadal protocollo RS232 ha livelli differenti (+/- 12 V).

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 3: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 3

Qui ci viene in aiuto il MAX232, un opportuno integrato traslatore di livello

TTL/RS232 e viceversa, partendo solo da un'alimentazione a 5 V. Per

ottenere le tensioni positive e negative necessarie per il funzionamento

dell'integrato viene usata una configurazione a pompa di carica costituito

da circuiti interni all'integrato e quattro condensatori esterni. La capacità

effettiva dipende dal tipo di integrato e dalla relativa frequenza di

commutazione; a volte i condensatori sono presenti all'interno dell'integrato

stesso. Sono disponibili anche integrati che richiedono un'alimentazione di

soli 3,3 V (MAX3232). L’ingresso ricevente del MAX232 è costituito da due

porte invertenti che accettano in ingresso una tensione di +/- 12 V ed

in uscita presentano un segnale TTL compatibile. .

La comunicazione RS-232La comunicazione seriale con un picmicro

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 4: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 4

La comunicazione RS-232La comunicazione seriale con un picmicro

L’ingresso ricevente del MAX232 è costituito da due porte invertenti cheaccettano in ingresso una tensione di +/- 12 V ed in uscita presentano unsegnale TTL compatibile. .

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 5: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 5

La comunicazione RS-232La comunicazione seriale con un picmicro

Esempio di circuito a pompa di carica

Per ricavare le tensioni positive e negative necessarie per garantire i livellirichiesti dalla RS232 è pratica comune utilizzare un duplicatore ed uninvertitore di tensione a pompa di carica. Le figure A e B mostrano comeviene ottenuto il raddoppio della tensione. Un’immagine che rende l'idea èquella di un contenitore C2 che preleva acqua da una fonte e la riversa inun secondo contenitore C1 posto a maggiore altezza.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 6: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 6

La comunicazione RS-232La comunicazione seriale con un picmicro

Più in dettaglio:

• Inizialmente il condensatore C2 viene connesso tra massa e Vcc; quindila corrente (in blu) carica C2 alla tensione di alimentazione (in giallo).Quindi Vc2 = Vcc

• C2 viene successivamente connesso tra Vcc ed un secondocondensatore C1; la tensione ai capi di C1 deve essere uguale allasomma di Vcc e Vc2 e quindi C2 si scarica verso C1, che aumenta lapropria tensione rispetto a massa.

• Il processo è ripetuto fino a quando la tensione ai capi di C1 è uguale a2Vcc: in questo caso, infatti, C2 non si può più scaricare.

Analogamente le figure C e D mostra l'inversione di tensione:• Inizialmente C2 è caricato alla tensione di alimentazione (magari, come

nel disegno da 2Vcc, ricavata con il precedente circuito)• Quindi C2 è connesso tra massa e C1 avendo cura di invertire le

polarità. In questo modo C1 si carica a -2Vcc

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 7: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 7

La comunicazione RS-232La comunicazione seriale con un picmicro

Pic RS232 Tx

Pic RS232 Rx

AnxaPic v1.0 – Interfaccia seriale RS232 con traslatore di livello max232

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 8: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 8

La comunicazione RS-232La comunicazione seriale con un picmicro

Altro semplice schema elettrico per il collegamento di un Max232 con microcontrollore Pic 40 Pin

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 9: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 9

La comunicazione RS-232La comunicazione seriale con un picmicro

Il protocollo di comunicazione RS232 sui controllori Pic della MicroChip viene normalmente

implementato facendo uso della periferica di sistema USART (Universal Synchronous

Asynchronous Receiver Transmitter). Nel caso di interfacciamento con un PC si può utilizzare il

traslatore di livello MAX232 per l’adattamento dei valori logici dei segnali elettrici. Nelle due

pagine precedenti vengono proposti due semplici schemi applicativi.

La periferica USART può essere impostata, mediante il «set» di opportuni registri speciali del

micro, per lavorare sia in modalità asincrona full-duplex sia in modalità sincrona half-duplex

[master – slave].

Nel nostro caso abiliteremo sempre la periferica per lavorare in modalità asincrona full-

duplex.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 10: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 10

La comunicazione RS-232La comunicazione seriale con un picmicro

Per trasmettere e ricevere dati secondo il protocollo RS232 (e non solo) vengono utilizzate delle

semplici funzioni di libreria come: printf(…..); put(…); putc(…); putchar(…); getc(…); getch(…);

etc… . In Ansi C queste funzioni sono definite nella libreria standard <<stdio.h>>; prima del loro

utilizzo bisogna sempre includere questa libreria mediante la direttiva: #include ‘stdio.h’.

Il CCS Pic-C compiler non è propriamente un compilatore Ansi C standard; le definizioni e

uso delle funzioni di comunicazione RS232 vengono richiamate nella direttiva:

#USE RS232(… varie opzioni …) //Le opzioni sono separate da virgole

Esempio:

#USE RS232(baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)

Per la trasmissione RS232 usa il sottosistema Hardware di default, la velocità di trasmissione è

pari a 9600 bit al secondo, il pacchetto è composto da 8 bit di dati (oltre ai bit di start e stop),

nessuna parità, il PIN_C6 è il pin (Tx) per la trasmissione, il PIN_C7 (Rx) per la ricezione.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 11: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 11

La comunicazione RS-232La comunicazione seriale con un picmicro

Il wizard del CCS Pic-C compiler semplifica notevolmente la impostazione delle varie opzioni

della direttiva #USE RS232(…..); vedremo il suo impiego con qualche esempio. L’introduzione di

questa direttiva abilita anche all’uso delle funzioni di comunicazione alcune delle quali sono state

richiamate in precedenza.

Una delle funzioni principali e forse una delle più utilizzate è la funzione: printf(…….)

La funzione printf(…) riindirizza l’output (riportato tra le due parentesi tonde) verso

la periferica standard di I/O; nel caso del nostro sistema la periferica standard è

quella seriale (USART)

Quando vogliamo trasmettere una serie di caratteri via RS232 scriveremo una cosa del tipo:printf("Ciao ragazzi!\n\r");

I caratteri \n e \r sono due caratteri particolari che fanno parte di quei gruppi particolari di caratteri chiamatisequenze di escape. In pratica il carattere \n è il carattere di nuova linea (Line Feed o LF - in genere vieneidentificato più precisamente come carattere di controllo. Anche se non visualizza niente anche lui ha uncodice ascii e quindi occupa un byte di dati); il carattere \r è il ritorno carrello (Carriage Return o CR).In pratica inserendo \n, il cursore andrà sulla linea successiva, ma rimarrà sulla stessa colonna in cui si trovavaprima di cambiare linea, il carattere \r, invece, fa avanzare alla linea successiva e riporta il cursore alla primacolonna della stessa, il ritorno a capo completo, quindi, è l’effetto di una nuova linea seguito da un ritorno carrello(o anche prima il ritorno carrello e poi la nuova linea).

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 12: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 12

La comunicazione RS-232La comunicazione seriale con un picmicro

Come richiamato in precedenza la funzione printf(…) supporta

anche i parametri per la formattazione del testo in uscita [cfr.

manuale CCS Pic-C compiler] e le sequenze escape di

controllo.

Carattere Specifica

\r Ritorno a capo

\n Nuova linea

\t Tabulatore

\’ Apice singolo

\’’ Virgolette

\\ Backslash

\? Punto interrogativo

\0 Carattere Null

\% Simbolo %

\b Indietro di un carattereAlcune tra le più utili sequenze escape di controllo

Invia via RS232 il valore di una variabile (numero decimale) e il

carattere di controllo di «Ritorno a capo»

Printf(‘’ Il valore di i è: %d /r’’, i)

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 13: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 13

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1

Vediamo un semplice esempio di comunicazione seriale RS232 con un micro Pic18F4620;

questo microcontrollore è dotato di un opportuno sottosistema Hardware per la comunicazione

seriale chiamato EUSART (Enhanced Universal Synchronous Asynchronous Receiver

Transmitter) che può essere opportunamente configurato come un sistema asincrono full-duplex

per la comunicazione seriale con gli opportuni devices [cfr. Microhip data-sheet Pic18F4620].

Si vogliono trasmettere due semplici messaggi (stringa di catatteri, stringa di caratteri + valore

decimale di una variabile) verso un device collegato con il nostro microcontrollore via RS232

(TTL compatibile).

Pic18F4620 Device RS232RS232 TTL Comp

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 14: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 14

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1

Il semplice schema elettrico � [cfr. na_Ex1-RS232Pic.dsn --- Esempio simulazione con Proteus]

Nell’esempio di simulazione il «device RS232» viene sostituto con il terminale seriale (Virtual

terminal) fornito dal sistema Proteus VSM di simulazione

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 15: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 15

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

Il Pic Wizard del CCS Pic-C Compiler aiuta nella definizione Hardware del Microcontrollore:

Pic Wizart� General Tab Pic Wizart� Communications Tab

Use RS232Stream port1Baud 9600Parity NTx pin_C6Rx pin_C7

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 16: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 16

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

Il Pic Wizard genera il seguente codice caratteristico del controllore scelto.

Mediante il communication tab del Pic Wizard abilitiamo l’uso del sottosistema hardware

(EUSART) per la comunicazione seriale e scegliamo i PIN Tx e Rx e le varie opzioni per la

comunicazione.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 17: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 17

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

NOTA – Diversi controllori, in particolare quelli dell’ultima generazione con 40 e più pin

della serie 18F, contengono più sottosistemi di comunicazione seriale (EUSART) (alcuni

controllori possono abilitare addirittura più di 2 porte RS232). Per ogni porta possono essere

definite le varie opzioni di comunicazione e i rispettivi Pin per la trasmissione Tx e la ricezione

Rx. Il Pic wizard permette anche di associare un nome identificativo (opzione stream) per ogni

porta abilitata. Alcune built-in function del compilatore permettono la trasmissione dei dati

attraverso una opportuna porta seriale richiamando la stessa con il nome identificativo impostato

con la direttiva #USERS232(… options …). Vediamo qualche semplice esempio.

Il controllore 18F87K22 [80 pin] contiene due sottosistemi Hardware per la comunicazione

seriale definiti come EUSART1 ed EUSART2; questo controllore permette di abilitare due porte

hardware per la comunicazione RS232. Le direttive:

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)

#use rs232(baud=115200,parity=N,xmit=PIN_G1,rcv=PIN_G2,bits=9,stream=PORT2)

Abilitano le due porte RS232 hardware del controllore, con le rispettive opzioni di

comunicazione, identificate come PORT1 e PORT2

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 18: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 18

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

NOTA – Alcune funzioni del compilatore (built-in function) operano sulla porta

opportuna accettando l’identificativo (stream) come parametro. Esempio:

//Set baud Port1 a 19200 bps

Setup_uart(baud, stream) � Setup_uart(19200,Port1);

//Trasmette ‘Ciao mondo’ via RS232 su Port2

fprintf(stream,cstring) � fprintf(Port2, ‘’Ciao mondo’’);

//Trasmette il carattere ‘*’ via RS232 su Port1

fputc(cdata, stream) � fputc(‘*’, Port1);

Non tutte le built-in function (utilizzate per la trasmissione seriale) del compilatore accettano la

opzione identificativa (stream) per la porta seriale in uso; consultare il manuale del CCS Pic-C

compiler per maggiori dettagli sull’uso di questo identificativo.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 19: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 19

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

NOTA – Per il nostro esempio,

quando andiamo a definire le opzioni per la

comunicazione seriale nel Communication

Tab, notiamo che possono essere definite

sino a 4 porte RS232 di comunicazione

cosa abbastanza strana visto che il nostro

controllore 18F4620 presenta un solo

modulo HardWare EUSART per la

comunicazione seriale a cui sono associati

il pin RC6 per la trasmissione Tx e il pin

RC7 per la ricezione Rx.

Il CCS Pic-Compiler permette la definizione

di ulteriori porte di comunicazione, con le modalità viste in precedenza, e implementa il rispettivo

protocollo in modalità software.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 20: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 20

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

NOTA – Naturalmente i Pin RC6 e RC7 sono associati al modulo HardWare di

comunicazione seriale mentre per le altre porte che si vogliono definire, bisogna associare

opportuni pin, tra quelli disponibili, per la trasmissione Tx e ricezione Rx dei dati.

Per le porte il cui protocollo di comunicazione viene impostato in modalità software, la velocità

di trasmissione dipende anche dalla frequenza del clock di sistema.

Consiglio una lettura del manuale del CCS Pic-Compiler e una visita all’ottimo forum della CCS

[http://www.ccsinfo.com/forum/] sulle modalità di impostazioni e uso della comunicazione

seriale definita via software; Naturalmente consultare il Data-Sheet del controllore, nel nostro

caso Pic18F4620, per le definizioni Hardware in uso.

NOTA – Nel nostro esempio utilizziamo una sola porta di comunicazione (quella Hw

del micro); in questo caso è superflo definire anche l’identificativo per la porta in uso in quanto

le funzioni implementate per la comunicazione seriale automaticamente reindirizzano verso la

unica porta definita dalla direttiva #USERS232(… option …)

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 21: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 21

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

NOTA – Se usiamo una unica porta di comunicazione (come nel nostro caso la unica

porta HardWare del Pic18F4620) possiamo omettere il nome identificativo (stream) in quanto la

porta in uso è unica e tutte le funzioni definite per la comunicazione seriale indirizzano verso la

porta definita prima del loro utilizzo. In particolare la direttiva #USE RS232(… option …) sarà:

#USE RS232(baud=9600, parity=N, xmit=Pin_C6, rcv=Pin_C7, bits=8);

Per la comunicazione seriale utilizza la porta HardWare con Pin_C6=Tx e Pin_C7=Rx

(corrispondente all’unico modulo Hardware del micro).

Ricordiamo: tutte le funzioni definite e in uso per la comunicazione seriale

reindirizzano verso la periferica seriale di I/O definito e in uso.

Ad esempio ricordiamo ancora che:

La funzione printf(…) riindirizza l’output (riportato tra le due parentesi tonde) verso la periferica

standard di I/O; nel caso del nostro sistema la periferica standard è quella seriale (USART)

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 22: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 22

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

Dopo queste dovute considerazioni torniamo al nostro esempio [file proteus VSM: na_Ex1-

RS232Pic.dsn]. Mediante il Pic Wizard è stato impostato il codice per le definizioni Hw del micro:

Per le considerazioni viste in precedenza questa direttiva può anche essere definita come:

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 23: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 23

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

Il main program – part1:

// Carattere Escape di controllo ‘\r’ per // il ritorno carrello

// Definizioni Hw del sistema// Driver display LCD 4x20// Definizioni per scheda AnxaPic v4.5

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 24: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 24

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Il software

Il main program – part2:

// Notare il codice ‘%d’ per la formattazione // del valore inviato

Il programma è molto semplice e di facile comprensione; coloro che hanno qualche dubbio

possono verificare la simulazione software in ambinte Proteus VSM � file: na_Ex1-

PicMicro.dsn + codice di simulazione.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 25: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 25

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 1 – Simulazione

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 26: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 26

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempi 2,3 – Il software

Dopo aver analizzato nel primo esempio come inviare dati via seriale (linea Tx collegamento

RS232), con il secondo esempio viene riproposto qualcosa di analogo con alcune ulteriori

delucidazioni sui tipo di dati trasmessi; consiglio di scaricare e analizzare con attenzione questo

esempio.

Con l’esempio 3 vedremo come leggere dei dati via seriale (linea Rx del collegamento Rs232).

Vengono proposte tre semplici buil-In function del CCS Pic-C compiler; come le funzioni

analizzate in precedenza queste nuove funzioni sono abilitate con l’inclusione della direttiva

#USE RS232(…..) come ampiamente spiegato in precedenza.

Le funzioni sono:

getc(); getch(); getchar();

Queste funzioni attendono la ricezione di un carattere sul pin Rx della RS232 e

ritornano il corrispondente valore.

Una ulteriore estensione è la funzione fgetc(stream) del tutto simile alle precedenti

con l’opzione del nome indicativo della porta seriale in uso.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 27: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 27

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 3 – Il software

Consultare opportunamente il manuale del compilatore per ulteriori delucidazioni sulle modalità

di impiego di queste funzioni.

Nel nostro 3° esempio proponiamo la lettura e visualizzazione di caratteri immessi via seriale

RS232; l’esempio è molto semplice e non merita sicuramente chiarimenti. Viene riportato il

codice sorgente della main function; tutte le considerazioni viste precedentemente valgono

anche in questo caso (e per gli esempi che seguiranno).

Una analisi step-by-step dellla simulazione in ambiente Proteus VSM agevolerà

sicuramente nelle comprensioni dovute.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 28: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 28

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 3 – Il software

Il main program – part1:

Per impostazioni e uso della RS232 del Pic18F4620 vedere le indicazioni dell’esempio 1

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 29: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 29

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 3 – Il software

Il main program – part2:

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 30: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 30

Il main program – part3:

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 3 – Il software

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 31: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 31

Il main program – part4:

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 3 – Il software

Leggi dato sino a quando non viene rilevato un carattere opportuno

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 32: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 32

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 4 – Il software

Con il 4° esempio viene proposto la lettura e visualizzazione di stringhe di caratteri, via seriale

RS232, utilizzando due built-In function del CCS Pic-C compiler.

Le funzioni sono: gets(stringa); puts(stringa);

Ulteriore estensioni sono le funzioni: fgets(stringa,stream) fputs(stringa, stream) del tutto

simile alle precedenti con l’opzione (stream) del nome indicativo della porta seriale in uso.

gets(stringa) � legge una serie di caratteri, via seriale RS232, sino a quando non viene

rilevato il carattere RETURN (\r - CR carriage return codice ascii 13 – Equivalente tasto «invio»

della tastiera di un PC); stringa è un opportuno array di carattere definito prima dell’uso della

funzione.

puts(stringa) � invia, via seriale RS232, una stringa di caratteri argomento della funzione piu i

due caratteri di controllo \r e \n (codice asscii 13 [CR] e 10 [LF]). Questa funzione è

equivalente a printf(….) la quale è preferibile perché più utile e duttile.

Una analisi step-by-step dellla simulazione in ambiente Proteus VSM agevolerà

sicuramente nelle comprensioni dovute.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 33: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 33

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

Tutti i controllori dotati di USART hanno la possibilità di abilitare un «Interrupt

seriale» quando viene ricevuto un dato via RS232; il segnale di «Interrupt» avverte

che un dato è disponibile sul buffer (registro) seriale e può essere comodamente

letto. Con l’utilizzo dell’Interrupt sulla ricezione seriale ottimizziamo il lavoro del nostro

controllore il quanto la lettura dei dati su RS232 viene effettuata solo quando gli stessi sono

realmente disponibili.

Come tutti gli «Interrupts» disponibili per il nostro controllore, anche in questo caso, l’interrupt

su ricezione di un dato sul registro (buffer) seriale, deve essere opportunamente abilitato in

fase di impostazione Hardware del controllore; al solito il Pic Wizard del nostro sistema ci

agevola di molto il lavoro.

Con questo esempio vedremo come ricvere dati via RS232 con l’impiego della notifica di

interrupt sulla ricezione seriale.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 34: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 34

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

Fondamentalmente via RS232 (Seriale) vengono trasmessi e ricevuti dati come

caratteri (char); un array contenente una serie di caratteri con il carattere NULL

(‘\0’) come terminatore, viene definito «stringa».

Anche i numeri possono essere rappresentati come una stringa: ad es. ‘1267’ rappresenta una

stringa di 4 caratteri mentre il valore 1267 rappresenta un numero di 4 cifre.

Nella trasmissione seriale anche i numeri vengono trasmessi (e ricevuti) come caratteri; Nel

linguaggio C esistono particolari funzioni, contenute nella libreria standard di base, che

permettono la conversione da stringa a valore numerico: es. atoi(stringa) � converte la

«stringa» di caratteri, rappresentata secondo il codice ascii, in valore numerico intero; in modo

analogo atof(stringa) � converte la «stringa» di caratteri, rappresentata secondo il codice

ascii, in valore numerico decimale; etc… .

Nel nostro esempio vedremo come utilizzare queste funzioni.

Una analisi step-by-step dellla simulazione in ambiente Proteus VSM agevolerà

sicuramente nelle comprensioni dovute.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 35: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 35

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

Esempio 5: ricezione di caratteri via RS232 mediante utilizzo dell’interrupt che notifica la

disponibilità di un dato (char) sul buffer (registro) hardware della USART del controllore.

L’informazione ricevuta sarà composta dall’insieme di tutti i caratteri ricevuti e sarà completa

con la ricezione del carattere speciale RETURN (INVIO) della tastiera [CR � Carriage Return,

codice ascii = 13 decimale, 0x0D esadecimale, ‘\r’ controllo escape).

Analizziamo i punti fondamentali per definire la informazione ricevuta via RS232.

1. Definiamo un array di tipo char sul quale immagazineremo tutti i caratteri letti sino alla ricezione delcarattere speciale CR. La dimensione dell’array dipende dal massimo numero di caratteri che si vuolricevere; nel nostro caso il massimo numero di caratteri in ricezione sarà di 10 quindi dimensioneremo unarray di caratteri (Char) con 11 elementi. Ricordiamo che un array di caratteri è una «stringa» avente ilcarattere speciale NULL (‘\0’) come terminatore; per 10 caratteri si dovrà definire una stringa con 11elementi.

Stringa di tipo char di 11 elementi

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 36: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 36

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

2. Per ogni carattere ricevuto e letto, dopo aver verificato che non è il carattere CR, immagazziniamo lo stessonel nostro array

C

Stringa di tipo char di 11 elementi

3. Incrementiamo l’indice dell’array e verifichiamo che il suo valore non superi la dimensione massimadell’array; se questa condizione si verifica riportiamo il valore dell’indice a zero (cfr. Concetto di buffercircolare) e proseguiamo nella memorizzazione altrimenti continuiamo nella memorizzazione sino alricevimento del carattere speciale CR.

C i a

Stringa di tipo char di 11 elementi

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 37: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 37

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

4. Per ogni carattere ricevuto e letto, verifichiamo se è il carattere CR; se questa condizione è veraconcludiamo la nostra stringa con il carattere terminatore NULL

C i a o

Stringa di tipo char di 11 elementi

\0

5. La nostra informazione a questo punto è completa e può essere opportunamente elaborata. Possiamoriazzerare tutti gli indici e acquisire una nuova informazione.

N.B. � Nel nostro semplice esempio vedremo come ricevere ed elaborare stringhe di caratteri,

numeri interi e decimali acquisiti come stringhe di caratteri. L’esercizio proposto è molto

semplice ed è solo indicativo su come ricevere e trattare dati via RS232, naturalmente

l’argomento è molto vasto e và opportunamente elaborato e approfondito in modo adeguato.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 38: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 38

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

Esempio 5 � Acquisizione e lettura di stringhe e caratteri via RS232; uso dell’interrupt nella

ricezione di un carattere sul buffer (registro) della USART del Micro (Pic18F4620).

1. Pic Wizard � Definizioni e impostazioni delle caratteristiche hardware del Micro

General Tab Communications Tab

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 39: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 39

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

1. Pic Wizard � Definizioni e impostazioni delle caratteristiche hardware del Micro

Interrupts Tab

Viene abilitato l’interrupt sulla ricezione seriale

Il codice Main() generato dal Pic Wizard

impostazioni hardware del Micro

La routine di interrupt seriale (RS232)

Interrupt seriale (RS232) abilitato

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 40: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 40

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

2. Software � Aggiungiamo il codice a quello generato dal Pic-Wizard

1. Definiamo un array di tipo char sul quale immagazineremo tutti i caratteri letti sino alla ricezione delcarattere speciale CR. La dimensione dell’array dipende dal massimo numero di caratteri che si vuolricevere; nel nostro caso il massimo numero di caratteri in ricezione sarà di 20 quindi dimensioneremo unarray di caratteri (Char) con 21 elementi [buf_size+1]. Ricordiamo che un array di caratteri è una «stringa»avente il carattere speciale NULL (‘\0’) come terminatore; per 20 caratteri si dovrà definire una stringa con21 elementi.

«Includiamo» i driver indispensabili al funzionamento del sistema; siccome lavoreremo con stringhe di caratteribisogna includere la libreria standard dell’Ansi C per il trattamento delle stringhe.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 41: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 41

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

3. Software � Aggiungiamo il codice a quello generato dal Pic-Wizard

2. Per ogni carattere ricevuto e letto, dopo aver verificato che non è il carattere CR, immagazziniamo lo stessonel nostro array

3. Incrementiamo l’indice dell’array e verifichiamo che il suo valore non superi la dimensione massima dellostesso; se questa condizione si verifica riportiamo il valore dell’indice a zero (cfr. Concetto di buffercircolare) e proseguiamo nella memorizzazione sino al ricevimento del carattere speciale CR (‘\r’).

La routine di «Interrupt»

Viene letto il carattere CR (‘\r’)� Attiva flag per «informazione completa»

� Aggiungi terminatore NULL fine stringa (‘\0’)

� Azzera indice array per nuova lettura

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 42: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 42

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

4. Software � Aggiungiamo il codice a quello generato dal Pic-Wizard

«Main» function

«Main» function – Inizializzazioni, dichiarazioni variabili e visualizzazioni su display LCD

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 43: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 43

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

5. Software � Aggiungiamo il codice a quello generato dal Pic-Wizard

«Main» function

Su terminale Virtuale (Serial terminal) avviso per immissione nome + Enter. Per ogni carattere immesso einviato via RS232, sul controllore il carattere è disponibile sul buffer seriale; la routine di «Interrupt» intercettail dato disponibile e lo memorizza in un array. Quando viene letto il carattere CR (‘\r’) la stringa è completa eviene ablitato il flag (data_rx=TRUE) di informazione disponibile.

Il «nome» disponibile viene letto e ritrasmesso su terminale seriale con opportuno messaggio di saluto.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 44: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 44

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

6. Software � Aggiungiamo il codice a quello generato dal Pic-Wizard

«Main» function

La procedura viene ripetuta per immissione e lettura via RS232 di un numero intero trasmesso come stringa dicaratteri. La stringa viene convertita in valore numero e visualizzato su display LCD.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 45: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 45

La comunicazione RS-232La comunicazione seriale con un picmicro – Esempio 5 – Il software

7. Software � Aggiungiamo il codice a quello generato dal Pic-Wizard

«Main» function

Passaggio identico per la ricezione e visualizzazione di un numero decimale.

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 46: Corso introduttivo sui microcontrollori · na_RS232 3 QuicivieneinaiutoilMAX232,unopportunointegratotraslatoredilivello TTL/RS232eviceversa,partendosolodaun'alimentazionea5V.Per ...

na_RS232 46

La comunicazione RS-232La comunicazione seriale con un picmicro – Proteus VSM Sim

File: na_Ex5-RS232Pic.dsn

http://www.mrscuole.net/anxapic/http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/