| Porte
di I/O
|
||||||||||||||||||||||||||||
|
Gli ST dispongono di due o tre porte di ingresso uscita per un totale di 12 pin di I/O (ST6210/20) o 20 pin di I/O (ST6215/25). PORTE
DI I/O
I pin A0..A3 non possono essere collegati all'ADC, però quando vengono configurati come uscite open drain possono assorbire una corrente di 20mA ciascuno, gli altri pin possono pilotare un paio di mA. La corrente totale massima che può essere assorbita dalle porte è di 50 mA. Per la programmazione delle porte sono presenti tre registri per ciascuna. Ad esempio per la porta B abbiamo i registri PORT B DIRECTION REGISTER, PORT B OPTION REGISTER e PORT B DATA REGISTER (vedere la mappa della RAM). Per comodità nel programma possono essere definiti e chiamati: PDIR_B, POPT_B e PORT_B. Il pin B0 verrà configurato
in base al settaggio del bit 0 di questi tre registri, il pin B1 in base
al settaggio del bit 1 di questi registri e così via. La seguente
tabella mostra come si configura un pin di I/O in base al valore dei bit
dei tre registri:
*1)
Modalità di default all'accensione o dopo un reset.
A prima vista può
sembrare complesso, però è sufficiente ricordare che all'accensione
tutti i pin si configurano come ingressi con resistenza di pull-up, e scrivendo
un 1 nei bit opportuni del registro di direzione (PDIR_) si trasformano
gli ingressi in uscite open drain.
LDI PDIR_B,11110000B
Per ritrasformare in ingressi le uscite si riportano a 0 prima i bit di POPT_ e poi quelli di PDIR_: LDI POPT_B,00000000B
I pin possono essere riconfigurati in ogni momento, nei cambiamenti occorre però rispettare un "percorso di sicurezza" come mostrato nella tabella seguente (i valori in rosso si riferiscono ai bit dei registri PDIR POPT e PORT). In pratica significa ad esempio che è pericoloso trasformare in un colpo solo un input pull-up in ingresso analogico. Prima lo si trasforma in input senza pull-up, e poi in Ain. Lo stesso discorso vale per tutte le altre trasformazioni, va cambiato un bit alla volta in accordo con i percorsi possibili.
C'è un'ultima avvertenza: se si usano le istruzioni SET, RES, JRS e JRR su porte con i pin configurati in modo misto possono verificarsi delle anomalie. In questo caso è più sicuro lavorare su delle aree RAM e alla fine scrivere il risultato sulla porta con una istruzione LD. Lo stesso discorso vale per la lettura, prima si legge la porta e se ne memorizza il valore in un area in RAM e poi si accede a quest'area come si crede. Esempio: SET 5,AREARAM
Pagina realizzata da Claudio Fin - Ultimo aggiornamento 5-11-1999 |