3.- Definizione degli I/O
Abbiamo stabilito quale microcontroller intendiamo impiegare, ora può
essere utile fornire qualche informazione su come è collegato il processore,
l' uso degli I/O, ecc. Tutte queste informazioni servono non solo a chi legge,
ma anche a se stessi per avere le idee chiare sulle risorse disponibili e su
come usarle.
Una cosa che quasi sempre manca in un sorgente è: come sono collegati i
pin. Non si tratta di una informazione trascurabile, in quanto può evitare di
avere l' obbligo di accompagnare il tutto con uno schema elettrico o comunque
rende chiaro perchè un pin sia programmato come uscita oppure come ingresso.
Vediamo un esempio in forma "grafica" (per quanto possibile in
editor di testo).
Siccome i pin solitamente hanno più funzioni assegnabile, sono riportate le
alternative, il che evita la necessità di consultare il foglio dati.
;****************************************************************************
; MAPPA I/O
;
; Pinout : PIC16F1826/7 @ 18 pin PDIP / SOIC
; ----------
;
; |¯¯\/¯¯|
; RA2 -|1 18|- RA1
; RA3 -|2 17|- RA0
; RA4 -|3 16|- RA7
; MCLR/RA5 -|4 15|- RA6
; Vss -|5 14|- Vdd
; RB0 -|6 13|- RB7/PGD
; PGM/RB1 -|7 12|- RB6/PGC
; RB2 -|8 11|- RB5
; RB3 -|9 10|- RB4
;
|______|
;
; Impiego pin :
; ----------------
; PIC16F1826-27
18 pin Impiego
;
; Vdd
14: Vdd
; Vss
5: Vss
;
; RA0/AN0/CPS0/C12IN0-/SDO
17: AN0 - livello
; RA1/AN1/CPS1/C12IN1-/SS
18: AN1 - temperatura
; RA2/AN2/CPS2/C12IN2-/C12IN+/Vref-/DACOUT 1: in - pulsante on
; RA3/AN3/CPS3/C12IN3/C1IN+/C1OUT/SRQ/CCP3 2: in - pulsante
off
; RA4/AN4/CPS4/C2OUT/SRNQ/T0CKI/CCP4
3: -
; RA5/MCLR/Vpp/SS1
4: MCLR
; RA6/P1D/P2B/SDO1/OSC2/CLKOUT/CLKR
15: -
; RA7/P1C/P2A7CCP2/OSC1/CLKIN
16: -
;
; RB0/SRI/T1G/CCP1/P1A/FLT0/INT
6: out - LED rosso
; RB1/AN11/CPS11/RX/DT/SDA/SDI1
7: out - LED verde
; RB2/AN10/CPS10/RX../SDA2/SDI2/SDO1/MDMIN 8: out - LED giallo
; RB3/AN9/CPS9/CCP1/P1A/MDOUT
9: out - buzzer
; RB4/AN8/CPS8/SCL1/SCK1/SDO1/MDCIN2
10:
; RB5/AN7/CPS7/P1B/TX/SCL2/SCK2/SS1
11:
; RB6/AN5/CPS5/T1OSO/T1CKI/P1C/P2A/CCP2 12:
; RB7/AN6/CPS6/T1OSO/P1D/P2B/NDCIN2
13:
;
|
Anche qui si tratta di un' area di solo testo di commento, indifferente per
la compilazione, ma la cui presenza rende quasi superfluo uno schema
elettrico. Anche qui, forma e struttura sono ampiamente modificabili.
La sua utilità sta nella possibilità di rendersi conto con una sola occhiata
delle risorse disponibili, della loro collocazione e del loro impiego nel
progetto.
Questa sezione può essere validamente completata da una mappatura degli
I/O con relative label, che serviranno rendere più pratico il sorgente. Anche
qui possiamo ricorre ad una forma semi-grafica che è ben esplicativa:
;====================================================================
; DEFINIZIONE DI IMPIEGO DEI PORT
;====================================================================
;
;PORTA map
;| 7 | 6 | 5 | 4 |
3 | 2 | 1 | 0 |
;|-----|-----|-----|-----|-----|-----|-----|-----|
;| | |
| | |
| | |
;
;#define PORTA,0 ;
;#define PORTA,1 ;
;#define PORTA,2 ;
;#define PORTA,3 ;
;#define PORTA,4 ;
;#define PORTA,5 ;
;#define PORTA,6 ;
;#define PORTA,7 ;
;PORTB map
;| 7 | 6 | 5 | 4 |
3 | 2 | 1 | 0 |
;|-----|-----|-----|-----|-----|-----|-----|-----|
;| | |
| | |
| | |
;
;#define PORTB,0 ;
;#define PORTB,1 ;
;#define PORTB,2 ;
;#define PORTB,3 ;
;#define PORTB,4 ;
;#define PORTB,5 ;
;#define PORTB,6 ;
;#define PORTB,7 ;
;********************************************************************
;#################################################################### |
Qui si inizia a valutare l' utilità della colorazione del testo operata
dagli editor adeguati: il template è, inizialmente, un foglio millimetrato
vuoto, da adattare alla propria esigenza.
Qui, ad esempio, de-commentando le righe che si intendono usare ed aggiungendo
quanto necessario, il testo base si trasformerà da un puro commento ad un un
elemento della compilazione.
;====================================================================
; DEFINIZIONE DI IMPIEGO DEI PORT
;====================================================================
;
;PORTA map
;| 7 | 6 | 5 | 4 |
3 | 2 | 1 | 0 |
;|-----|-----|-----|-----|-----|-----|-----|-----|
;| | |
| |stop |avvio|temp |level|
;
#define
level PORTA,0 ; ingresso analogico 0
#define
temp PORTA,1 ; ingresso analogico
1
#define
PBON PORTA,2 ; pulsante avvio
#define
PBOFF PORTA,3 ; pulsante stop
;#define PORTA,4 ;
;#define PORTA,5 ;
;#define PORTA,6 ;
;#define PORTA,7 ;
;PORTB map |
Ovviamente le parti inutilizzate potranno essere eliminate; in ogni caso, la
presenza di linee ancora commentate rende visibile la disponibilità
potenziale di altre possibilità.
|