Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DICEMBRE 2012
w w w. f a r e l e t t r o n i c a . c o m
330 Dicembre Mensile Anno XXVIII € 6,00
Light controller
330
LE ALTERNATIVE
ALLA MEMORIA FLASH
DEMOBOARD
USB
PER RASPBERRY PI
COMUNICAZIONE
1-WIRE CON PIC
DEBOUNCING
IN MIKROPASCAL
Controllo luci via USB – PWM avanzato – Visione artificiale
REGOLATORE
DI VELOCITÀ CON ATtiny24
COMUNICAZIONE
MASTER-SLAVE CON
PIC18
II COP:fe 10-12-2012 12:10 Pagina 1
24 CONTROLLO LUCI
MUSICALI TRAMITE
PORTA USB
Costruiamo un completo con-
trollo luci a 8 canali tramite porta
USB, con la possibilità di pilo-
tare le lampade a tempo della
musica riprodotta dal PC.
di Giuseppe La Rosa
&
28 REGOLATORE PER 42 VR BRAIN E VR NEURON
GIOSTRA DA CACCIA CON IL PIC
Con questo semplice progetto LA RISPOSTA ITALIANA AD
possiamo realizzare un regola- ARDUINO 2 E RASPBERRY PI
tore di velocità, utile in molte ap- Sviluppate da un’azienda ita-
plicazioni: giostre per cacciatori, liana, queste due schede sono
ventole, motori in corrente con- largamente impiegate nel settore
tinua o dimmer per lampade a della robotica, in particolare nel
12-24 V. Il carico massimo ap- campo degli UAV, ma le loro ap-
plicabile è di circa 4 A, valore li- plicazioni sono davvero molte-
mite oltre il quale scatta una plici.
protezione da sovracorrente. di Roberto Navoni
di Maurizio Giovanardi
46 TUTORIAL PIC18
34 PWM AVANZATO CON (PARTE SESTA)
IL PIC (PARTE SECONDA) UN MASTER E UNO SLAVE
In questa seconda parte appro- Vediamo in questa puntata un
fondiamo le conoscenze e le altro tipo di comunicazione se-
tecniche legate all’utilizzo e alla riale che permette la comunica-
gestione del PWM di tipo hard- zione con più dispositivi sulla
ware. stessa linea.
di Giovanni Di Maria di Roberto D’Amico (IW0GTF)
Rispondi
e... VINCI! pag. 32
DIVERTITI E METTI
ALLA PROVA
LE TUE CONOSCENZE CON
ELETTRO QUIZ
E VINCI OGNI MESE
ESCLUSIVI PREMI!
4
06-07 Editoriale ok:fe 9-12-2012 19:10 Pagina 6
editoriale
di MAURIZIO DEL CORSO
A gennaio
concetto è estendibile in termini generali) il
SENSORI DI PRESSIONE
ATMOSFERICA
La serie degli integrati XFAM-115KP è utilizzata per rilevare la pres-
STABILIZZATORE
DI TENSIONE
I dispositivi della serie SSC2100 sono chip per
Amplificatore in classe AB
Il TDA7850 è un amplificatore di classe AB che integra al suo interno dei MO-
di 60 W.
idee di progetto i
10
10-13 idee di progetto:FE 9-12-2012 19:12 Pagina 11
Generatore di segnali AF
Il MAX038 è un generatore in grado di riprodurre diversi segnali in alta frequenza, ad esempio forme d'onda a den-
te di sega, sinusoidale, quadra. Il valore della frequenza può essere variato da 0,1 Hz a 20 MHz, la tensione di ali-
mentazione è di 2,5 V.
Le forme d’onda sono selezionabili tramite un dip switch a due bit. L'uscita a bassa impedenza può pilotare fino a ±
20 mA. L’oscillatore interno riesce a mantenere un duty cycle stabile dello 0,5.
Ampli 2 W a 4 stadi
Il HMC906 è un quattro stadi di GaAs MMIC pHEMT 2 Watt Power Amplifier che opera tra 27,3 e 33,5 GHz.
Il HMC906 fornisce 23 dB di guadagno e 34 dBm di potenza di uscita saturi e il 22% PAE da un ali-
Chip-Module (MCM).
o idee di progetto
11
10-13 idee di progetto:FE 9-12-2012 19:12 Pagina 12
idee di progetto
AMPÈRE IN USCITA
LT3651 è un regolatore che accetta in ingresso tensioni da 4 V a 32 V, offrendo 4 A in uscita. È stato realizzato per essere
utilizzato nei caricabatterie al litio. Un ciclo di ricarica inizia con l'inserimento della batteria o quando la tensione della
batteria scende sotto il 2,5% del valore nominale. Il timer è impostato a tre ore ed è programmabile dall’utente. Una volta
che la ricarica è terminata, la corrente dell’ LT3651 scende a 85 µA in modalità standby.
idee di progetto
12
10-13 idee di progetto:FE 9-12-2012 19:12 Pagina 13
o
14-21_news:fe 10-12-2012 12:03 Pagina 14
latest news
UEP 50: Programmatore dente dello stato di ognuno dei 48 piedini. Questo avanzato progetto forni-
Universale di Grifo sce la possibilità di programmare quasi tutti i dispositivi in un contenitore
DIL (doppia fila) fino a 48 piedini, senza adattatori e senza moduli speciali
L’UEP-50 è un programmatore universale che gestisce tutti i tipi di disposi- aggiuntivi. Il supporto degli attuali dispositivi programmabili, e dei futuri
tivi programmabili. La caratteristica di avere tutti i piedini che usciranno, fornisce agli utilizzatori la libertà di
pilotati separatamente da una opportuna logica scegliere sempre il miglior dispositivo per
consente l’impostazione di: livelli logici, ogni progetto realizzato o da realizzare.
pull up o pull down, clock, massa, una L’UEP-50 è distribuito da Grifo - Via
tensione di alimentazione e due tensio- dell’Artigiano 8/6 - 40016 San Giorgio
ni di programmazione oltre a, natural- di Piano (BO).
mente, consentire la lettura indipen-
CODICE MIP 2830725
Mouser offre gli MCU a segnale misto zione ottimale. I dispositivi sono ottimizzati per la manipolazione e l’elabo-
razione efficienti dei segnali misti nei circuiti quali controller per i motori
STM32 F3 di STMicroelectronics trifase, biometria e uscite di sensori industriali o filtri audio, consentendo ai
progettisti di gestire le applicazioni di controllo a segnale misto.
Mouser Electronics, Inc. ha annunciato la disponibilità a magazzi- Gli MCU serie STM32 F3 a segnale misto sono compatibili a livel-
no degli MCU serie STM32 F3 di STMicroelectronics che lo di pin con la serie STM32 F1 e la nuova serie STM32 F3 ar-
combinano il core ARM Cortex-M4 a 32 bit con un DSP, ricchisce il portafoglio Cortex-M4 STM32 per offrire sia co-
istruzioni FPU e periferiche analogiche avanzate. sti entry level con la serie F3, sia prestazioni massime con
La serie STM32 F3 rappresenta un’innovazione del DSC che la serie F4. La serie STM F3 include dispositivi con 64-256
combina il core Cortex-M4 con 5 veloci MPSP a 12 bit, preci- Kbyte di memoria Flash on chip, fino a 48 Kbyte di memoria
si ADC sigma-delta a 16 bit, amplificatori di guadagno pro- SRAM.
grammabili (4 guadagni, precisione dell’1%), veloci compara-
tori da 50 ns e versatili unità di controllo tempo a 144 MHz, per un’integra- CODICE MIP 2831075
14
14-21_news:fe 10-12-2012 12:03 Pagina 15
latest news
nuovo connettore Quad Lock connettore portatile ZIF QLC con una configurazione completa di
260 pin e di ridurre le dimensioni del pacchetto: è del 65% più
piccolo dei prodotti DL esistenti e dei prodotti QLC concorrenti
ITT Cannon ha presentato un nuovo connettore Quad Lock (QLC)
attualmente presenti sul mercato. Ciò permette ai clienti di
con forza di inserzione zero (ZIF) per l’utilizzo nelle
ottenere una drastica riduzione delle dimensioni
apparecchiature medicali di diagnostica e
complessive delle apparecchiature diagnostiche.
imaging. Il dispositivo costituisce una
L’alto numero di 260 posizioni di pin offre
novità per l’industria, avendo ottenuto
numerose posizioni di canale e conferisce
una riduzione dimensionale del
miglioramenti alla risoluzione dell’immagine possibile
pacchetto dell’interconnessione, mentre
nella fase di disegno, che alla fine risulterà nel
soddisfa le esigenze di salde prestazioni
perfezionamento delle funzionalità diagnostiche.
e ne incrementa le funzionalità, come
l’accoppiamento mediante fissaggio a scatto.
CODICE MIP 2830937
L’avere ridotto la spaziatura dalla linea DL standard a 0,8 mm ha
Digi-Key Corporation e Fremont Micro Devices USA Inc., fornitore e leader a livello internazionale nel settore delle
EEPROM seriali e dei prodotti a circuiti integrati per la gestione efficiente della potenza, hanno siglato un accordo di
distribuzione globale. Le attività di FMD sono imperniate attorno allo sviluppo delle tre aree della memoria non vola-
tile utilizzate nel settore delle memorie a bassa densità ed embedded. UltraEE, la tecnologia EEPROM brevettata da
FMD, consente di realizzare le memorie a bassa densità con il miglior rapporto prezzo-prestazioni dell’intero settore. Ne-
gli ultimi otto anni, FMD ha acquisito una fetta sostanziosa del mercato delle EEPROM e si prevede che la crescita nei prossimi tre anni supererà
il 40% su base annua. FMD offre memorie standard con densità da 2 a 1024 kB e memorie realizzate in base ai requisiti del cliente.
I dispositivi di gestione della potenza e le EEPROM di Fremont Micro Devices sono ora disponibili per l’acquisto sui siti web internazionali di
Digi-Key.
16
14-21_news:fe 10-12-2012 12:03 Pagina 17
È arrivata la nuova
EasyPIC Fusion 7!
Mikroelektronika, produttore di sistemi di sviluppo per le principali
architetture a microcontrollore, schede di sviluppo, compilatori, sche-
de accessorie, software e libri per microcontrollori e azienda, rap-
presentata in Italia da Inware srl, ha annunciato la nuova EasyPIC
Fusion v7.
EasyPIC Fusion v7 è la nuova scheda di sviluppo di MikroElektronika
che unisce il supporto per tre diverse architetture: dsPIC33, PIC24
e PIC32 in una singola scheda. Contiene molti moduli on-board, tra
cui moduli multimediali, Ethernet, USB, CAN e altri. Inoltre, on-
board il potente programmatore mikroProg e il debugger In-Circuit
che supportano 65 microcontroller.
La scheda ha moduli per tutti i tipi di sviluppo. Lo schermo TFT con
Touch Panel e il codec MP3 stereo consentono di sviluppare ap-
plicazioni multimediali. Sulla scheda ci sono due connettori USB e
due connettori USB-UART. Il buzzer piezoelettrico vi aiuterà a testare
il segnale del suono, ed è possibile utilizzare l’I2C EEPROM, la Se-
rial Flash e lo slot per le schede microSD per memorizzare i dati. So-
no presenti i socket per i sensori di temperatura DS1820 e LM35.
Inoltre sulla scheda sono presenti i socket MikroBUS: questo in-
novativo socket consente di utilizzare decine e decine di schede ac-
cessorie “Click” con estrema semplicità e senza alcuna regolazione
hardware.
latest news
Maxim Integrated e RadioPulse Maxim e aumentare le potenzialità di Zeus, il contatore “intelligente” (smart
per la realizzare soluzioni ZigBee meter) integrato su SoC di recente introduzione. I primi frutti di questa colla-
borazione sono rappresentati da soluzioni per smart grid che si distinguono
ad alto grado di integrazione
per il loro elevato grado di integrazione. La sinergia
per smart grid
tra il software per comunicazioni wireless ZigBee di
RadioPulse e le soluzioni “intelligenti” e sicure di
Maxim Integrated Products, Inc. ha annunciate la sti-
Maxim basate su circuiti integrati permette ai clienti
pula di un accordo di collaborazione con RadioPulse
di ridurre sensibilmente tempi di sviluppo, ingombri
finalizzato alla fornitura di funzioni di comunicazioni
sulla scheda e costi di realizzazione. I vantaggi di
ZigBee per soluzioni smart grid. Insieme, le due so-
questa cooperazione sono immediatamente evidenti
cietà svilupperanno e commercializzeranno software
quando si prendono in considerazione le soluzioni at-
per ZigBee, SoC (System on Chip) ad alto grado di
tualmente disponibili, di tipo non integrato.
integrazione e transceiver “smart”, al fine di poten-
ziare l’attuale offerta di soluzioni per smart grid di
CODICE MIP 2831190
GLI SWITCH BOOST PER APPLICAZIONI LED superano i difetti caratteristici dei
convertitori boost DCM fornendo
RETROILLUMINATE DI FAIRCHILD SEMICONDUCTOR
una risposta di dimming PWM più
rapida.
I progettisti di sistemi a LED ad alta potenza devono affrontare la
Entrambi i dispositivi forniscono
sfida che consiste nel prevenire le perdite di potenza e le oscillazioni
funzioni di protezione integrate
subarmoniche associate all’inefficienza dei convertitori boost. I
quali UVLO protezione LED
controller boost single-channel FAN7340 e FAN73402 di Fairchild
aperto e protezione da
Semiconductor con MOSFET ad alta tensione e capacità di dimming
sovratensioni OVP per contribuire
integrata forniscono una risposta a questa sfida aiutando i progettisti
a minimizzare il numero delle
a ottenere superiori livelli di efficienza, performance e affidabilità in
componenti necessarie. Questi
sistemi d’illuminazione ad alta potenza quali pannelli LED
dispositivi dispongono inoltre di una funzione per la prevenzione
retroilluminati per televisori e monitor 3D.
degli errori che genera un segnale FAULT con ritardo nel caso del
Questi switch boost retroilluminati utilizzano una topologia CMC con
verificarsi di condizioni anomale nella striscia LED.
compensazione programmabile della pendenza (o coefficiente
angolare) per prevenire le oscillazioni subarmoniche. Progettati con
CODICE MIP 2831192
un controllo PWM analogico e di dimming interno, questi dispositivi
18
14-21_news:fe 10-12-2012 12:03 Pagina 19
eventi
✈ eventi
RADIANT
Dal 2002 la periodicità è divenuta quadrime-
strale, con appuntamenti fissi nei mesi di
Dove: Ravenna
Quando: 2-3 Febbraio 2013
Orari: dalle 9.00 alle 18.00
Organizzazione: Exposition Service
info: www.mondoelettronica.net
22
22-23 eventi :fe 9-12-2012 19:16 Pagina 23
MARC di Genova
Con il Natale alle porte arriva in Fiera a Genova il 15 e
il 16 dicembre il MARC, una delle migliori occasioni
per lo shopping tecnologico. Attrezzature e
componentistica radioamatoriale sono il nucleo
storico di MARC, alle quali si affiancano e crescono
informatica, telefonia, sicurezza, accessori
ed editoria specializzata.
Dove: Genova
Quando: 15-16 Dicembre 2012
Orari: dalle 9.00 alle 18.00
Organizzazione: Studio Fulcro
info: www.studiofulcro.it
EXPOelettronica Vicenza
Ritorna l’appuntamento con la tappa di ExpoElettronica in Veneto, per la
precisione alla Fiera di Vicenza. Le caratteristiche distintive restano quelle
comuni al circuito: quantità, qualità e convenienza, per affari high tech low
cost!
Dove: Vicenza
Electronic Days
Quando: 2-3 Febbraio 2013 Mantova
Orari: dalle 9.00 alle 18.00
Organizzazione: Blunautilus Informatica, computer, CD e DVD,
info: www.expoelettronica.it editoria specializzata, antenne, sistemi
satellitari e ricambi, batterie, apparati
CODICE MIP 2816938
per radioamatori, MP3/4 e tanti altri
articoli.
Parcheggio gratuito, bancomat e punto
ristoro.
34a Mostra regionale elettronica
Dove: Mantova
Mostra/mercato regionale di elettronica, informatica, CD/DVD, telefonia. Quando: 11-12 febbraio 2013
La mostra è aperta sabato fino alle 18:30, domenica fino alle ore 18.00. Orari: dalle 9.00 alle 18.00
Organizzazione: Italfiere
Dove: Scandiano info: www.italfiere.net
Quando: 16-17 febbraio 2013
Orari: dalle 9.00 alle 18.30 CODICE MIP 2798102
Organizzazione: Comune di Scandiano
info: www.fierascandiano.it
23
24-27_Zoom:fe 10-12-2012 11:03 Pagina 24
zoom in
➲ zoom in DI GIUSEPPE LA ROSA
CONTROLLO
LUCI
MUSICALI
tramite porta USB
24
24-27_Zoom:fe 10-12-2012 11:03 Pagina 25
SCHEMA ELETTRICO Per chi volesse approfondire le altre mo- connessione alla porta USB. Il quarzo
Lo schema elettrico visibile in figura 2 è
dalità UART, PRINT, e la modalità usata in Q1 fornisce la frequenza di clock di 12
basato sul circuito integrato U1, un
questo progetto può consultare il Datas- MHz necessaria al funzionamento del cir-
CH341A usato dall’industria per realizzare
heet. cuito integrato U1.
convertitori USB seriali e USB paralleli.
Il chip CH341A (U1) è configurabile in tre
modalità:
Come si può vedere dallo schema elet- REALIZZAZIONE PRATICA
trico, dai piedini di U1 (piedini da 15 a 22) Per la concretizzazione di questo pro-
• UART - convertitore USB a porta seriale
giungono i livelli logici 0 e 1. Questi ali- getto (figura 1), si deve utilizzare il master
(livelli logici TTL);
mentano i LED della bargraph DZ1 i quali, di figura 4, per la realizzazione del PCB
• PRINT - convertitore USB a porta paral-
posti in serie ai fotoaccoppiatori OK1 a e i componenti elencati nella lista com-
lela;
• EPP / MEM / I²C / Digital I/O - uscite e OK8, si portano in conduzione; i fotodiodi ponenti.
ingressi e BUS I²C supportati da chia- contenuti al loro interno eccitano il GATE Una volta realizzato il circuito stampato
mate API; dei TRIAC T1 a T8, causando l’accensione potete iniziare a montare tutti i compo-
In questo progetto abbiamo usato la ter- delle lampade collegate alle morsettiere X1 nenti, disponendoli come in figura 3.
za modalità, cioè l’EPP / MEM / I²C / Di- e X2. Si raccomanda di montare per primo il cir-
gital I/O. I fotoaccoppiatori offrono un isolamento cuito integrato in SMD U1 dal lato salda-
Questa modalità può essere configurata di circa 4000 V in modo che il PC risulta ture, rispettando l’orientamento della tac-
collegando il pin 1 (U1) e la massa a una perfettamente isolato dalla tensione di ca sullo stampato (figura 5) utilizzando
resistenza di 2,2 k (R1). rete. l’apposita pasta saldante e un saldatore
L’uso di questa configurazione comporta La tensione di rete viene prelevata dal ad aria calda.
il caricamento di un driver di Windows: ac- morsetto X3 ed è usata solo per ali- Dopo aver saldato U1 e aver controllato le
cessibile da diversi linguaggi di pro- mentare le lampade a 230 V. saldatura e la correttezza dei piedini si può
grammazione tra cui ProfiLab-Expert 4.0 L’alimentazione a 5 V occorrente al fun- passare a montare tutti gli elementi a
utilizzato, nel nostro caso, attraverso zionamento di U1 e dei fotoaccoppiatori basso profilo sul lato componenti: resi-
un’API-DLL (CH341API.DLL). viene presa direttamente dalla porta USB stenze, condensatori, la Bargraph DZ1 e
I pin che vanno dal piedino 15 al 22 del connettore X4. i fotoaccoppiatori. Si può passare infine ai
CH341A (U1) sono impostati come 8 I due LED DZ1-1 e DZ1-2 della bargraph TRIAC, al connettore USB X4 e ai mor-
uscite che possono essere scritte trami- DZ1 sono connessi in serie e, collegati a setti.
te chiamate API. 5 V, hanno la funzione di monitorare la Finito l’assemblaggio della scheda passate
25
24-27_Zoom:fe 10-12-2012 11:03 Pagina 26
zoom in
➲zoom in
26
24-27_Zoom:fe 10-12-2012 11:03 Pagina 27
LISTA COMPONENTI
Sigla Valore
C1 10 nF poliestere
C2 22 µF 25 V elettrolitico
C3 100 nF poliestere
C4÷C5 15 pF ceramico
R1 2,2 kΩ 1/4 W
R2÷R10 180 Ω 1/4 W
R11÷R18 15 k Ω 1/4 W
DZ1 Bargraph verde
OK1÷OK8 MOC3021
Q1 12 MHz quarzo
T1÷T8 BT137 triac
U1 CH341A
X1÷X2 Morsetti a 8 poli
X3 Morsetti a 2 poli
X4 USB tipo B
7. input per l’inserimento del valore nu- chi luminosi a tempo musicale. Per crea- CONCLUSIONE
merico della sequenza in cui va inseguito re un gioco di luce (figura 9), cliccare sul- Come già è stato detto in precedenza, il
il Loop. l’icona Cacciavite, si aprirà il menu Con- software è stato sviluppato con Profi-
8. Indicatore delle sequenze eseguite. figuration. Cliccare su ROM (ROM1), si Lab-Expert 4.0. Il programma ProfiLab-Ex-
9. Cursore della velocità di scansione aprirà una tabella da cui spuntare Binary. pert 4.0 permette di sviluppare progetti di
delle sequenze da 0 a 30 Basta fare doppio clic su una colonna e lo misura analogica e digitale basati su PC.
10. Gruppo di 8 pulsanti per comando zero diventerà uno e viceversa. Per lo sviluppo non occorre essere pro-
monostabile e 8 interruttori per il co- Impostate cosi la sequenza desiderata; grammatori esperti, è possibile creare i
mando bistabile più due pulsanti che contate il numero di righe create, clic- progetti eseguendo uno schema elettrico.
mettono le lampade o tutte ON o Tutte cate su Save. Basta aggiungere pulsanti, display ecc. al-
OFF. Load permette di richiamare i file già sal- lo schema e costruire il progetto passo
Prima di procedere all’utilizzo (figura 8) è vati in precedenza contenenti i giochi di lu- dopo passo. Il software sorgente e tutti gli
necessario selezionare la scheda audio, ce. Cliccate su OK, poi su Close. altri file necessari alla realizzazione o per-
cliccare sull’icona cacciavite come mostra Inserite il valore del numero di righe rea- sonalizzazione di questo progetto sono
la figura 8. Si aprirà il menu Configuration, lizzate in Loop e premete invio. Chiudete disponibili per il download dal sito di Fa-
cliccare su Scheda Audio (AUD1), sele- il programma e riapritelo. re Elettronica. Al seguente link potete
zionare la scheda audio, cliccaee OK e poi vedere la scheda in funzione:
Close. Quindi occorre chiudere il pro- A questo punto il vostro gioco di luce http://www.youtube.com/watch?feature=p
gramma e riaprirlo. In questo modo è può essere eseguito nelle due modalità a layer_embedded&v=VyMslzAfPiA ❏
stata selezionata la scheda audio che il tempo di Musica o Velocità regolabile da
programma utilizzerà per eseguire gio- cursore. CODICE MIP 2831859
27
28_31_prog&cost - Giostra:FE 10-12-2012 11:05 Pagina 28
progettare &
➲ progettare & costruire di MAURIZIO GIOVANARDI
Q
Con questo semplice progetto
amico cacciatore che ogni setti- dulazione a larghezza di impulsi) che ha il
possiamo realizzare un regolatore mana si presentava a casa mia pregio di essere compatto, dissipa po-
per farsi riparare il regolatore di velocità chissima potenza in calore (aumentan-
di velocità che può essere utile
della sua giostra per la caccia, un appa- do l’autonomia della batteria) e in più ha
in molte applicazioni: giostre recchio che si usa per attirare i volatili. una protezione da sovracorrente.
Aveva provato tanti regolatori, ma tutti
per cacciatori, ventole, motori “lineari”. Questi dispositivi, quasi sem-
pre autocostruiti, altro non erano che re- IL CIRCUITO
in corrente continua o dimmer
golatori di tensione lineari che spesso si Il circuito ruota attorno al microcontrollore
per lampade a 12-24 V. bruciavano per l’eccessivo calore generato ATtiny24A di ATMEL (U1) che, come si
(piccolissime alette di raffreddamento può vedere dallo schema elettrico ripor-
Il carico massimo applicabile montate dentro a piccoli contenitori er-
tato in figura 1, svolge tutte le funzioni ri-
è di circa 4 A, valore limite oltre metici) oppure rimanevano “vittime” dei
chieste.
cacciatori stessi che pretendevano di
il quale scatta una protezione collegare a un unico regolatore tre o più A ogni pressione del pulsante collegato al-
motori. Per risolvere il problema del mio le piazzole X1 e X2 il micro incrementa del
da sovracorrente. amico cacciatore ho pensato di realiz- 20% il duty-cicle del PWM il quale co-
28
28_31_prog&cost - Giostra:FE 10-12-2012 11:05 Pagina 29
& costruire
LISTA COMPONENTI
Sigla Valore
R1 4,7 Kohm 125 mW SMD 0805
R2 4,7 Kohm 125 mW SMD 0805
R3 0,01 ohm 1 W SMD 2512
R4 820 ohm 125 mW SMD 0805
R5 10 Kohm 125 mW SMD 0805
R6 10 Kohm 125 mW SMD 0805
R7 820 ohm 125 mW SMD 0805
R8 4,7 Kohm 125 mW SMD 0805
R9 27 ohm 125 mW SMD 0805
C1 100 nF 25 V SMD 0805
C2 2,2 uF 6,3 V SMD 0805
C3 2,2 uF 6,3 V SMD 0805
C4 47 uF 50 V SMD 6X8
C5 2,2 uF 6,3 V SMD 0805
U1 ATMEL ATtiny24A SMD SOIC14
U2 MC78M05 SMD DPAK
Figura 2: piano di assemblaggio.
D1 BAS16 SMD SOT-23
D2 S5B SMD SMC
manda il MOSFET Q1, fino ad arrivare al sovracorrente non sostituisce il fusibile che J1 Pettine maschio 2X3 pin
100% che corrisponde a Q1 sempre ac- si mette di solito sul positivo di alimenta- passo 2,54 mm
ceso. zione di qualsiasi circuito. Consiglio di J2 Faston maschio da c.s.
L’Attiny24A lavora con un clock di 8 MHz impiegarne uno da 5 A volante per mag- J3 Faston maschio da c.s.
sfruttando l’oscillatore interno e genera un J4 Faston maschio da c.s.
gior sicurezza.
J5 Faston maschio da c.s.
PWM con frequenza di 15 kHz, appena al Lo stadio di alimentazione a 5 V dell’At-
Q1 IRF IRL2910S SMD D2PAK
di sopra della soglia udibile dall’orecchio tiny24A è veramente semplice, si tratta di DL1 Led rosso SMD 0805
umano. un regolatore lineare (U2) che permette di DL2 Led verde SMD 0805
Nello schema sono presenti due diodi alimentare la scheda con tensioni com- V1 SMBJ30CA SMD SMB
LED di segnalazione: quello verde (DL2) si prese tra 9 e 24 V. V2 SMBJ30CA SMD SMB
accende quando al carico arriva tensione, Da notare che la resistenza R9 da 27 DZ1 ZENER 5,6 V 200 mW SMD SOT-23
mentre quello rosso (DL1) si accende se la ohm ha il compito di proteggere il diodo di DZ2 ZENER 5,6 V 200 mW SMD SOT-23
corrente erogata dalla scheda supera 4 A. anti-inversione D1 all’accensione, quan- DZ3 ZENER 5,6 V 200 mW SMD SOT-23
Come funziona la protezione da sovra- do C4 praticamente gli presenta un cor-
corrente? A valle di Q1 c’è una piccola re- tocircuito.
sistenza di shunt da 10 mohm (R3) che, I TRANSORB V1 e V2 proteggono la capi di R3 una d.d.p. di 30 mV che il mi-
quando è attraversata dalla corrente del scheda dalle scariche elettrostatiche, cro moltiplica internamente per 20, quin-
carico, genera una differenza di potenziale mentre D2 (diodo di ricircolo) taglia le di al convertitore A/D arrivano 0,6 V.
ai suoi capi. extratensioni generate dal carico indutti- Questo convertitore ha una risoluzione
Questa d.d.p. viene filtrata dal filtro pas- vo negli istanti in cui si spegne Q1. di 10 bit e lavora con un riferimento interno
sa basso C2/R6 e C3/R5 (evita che gli da 1,1 V, quindi ogni bit equivale a 1,1 V
spunti di corrente possano sembrare so-
IL FIRMWARE / 1024 = 1,074 mV.
vracorrenti) e va a finire nel convertitore
Il firmware, come potete vedere dal li- Infine 0,6 V equivalgono a 0,6V / 0,001074
analogico / digitale di U1 (pin 11 e 12).
stato, è stato scritto in ASSEMBLER, so- V = 558. La lettura A/D da monitorare è
Si tratta di un A/D converter a 10 bit dif-
luzione comoda grazie alla ricchezza del 558 decimale che corrisponde a
ferenziale, con guadagno pari a 20, mol-
linguaggio di programmazione dell’AT- 1000101110 binario.
to comodo da utilizzare essendo inte-
grato all’interno del microcontrollore. MEL e alla semplicità delle funzioni ri-
Il firmware controlla continuamente il va- chieste in questo progetto.
lore letto dal convertitore A/D e, non ap- Nelle prime righe del listato vengono de-
pena si supera la soglia impostata, ven- finite le costanti, tra cui “SOGLIA_COR-
gono spenti Q1 e il LED verde, mentre vie- RENTE” che corrisponde al famoso valore
ne acceso il LED rosso. di 4 A da monitorare.
In questa situazione la scheda è in bloc- Facciamo un esempio: nel caso volessimo
co e per farla ripartire occorre disalimen- portare questa soglia a 3 A, quale valore
tarla temporaneamente. assumerà SOGLIA_CORRENTE?
Voglio sottolineare che la protezione da Una corrente di 3 A sul carico genera ai Figura 3: traccia lato componenti.
29
28_31_prog&cost - Giostra:FE 10-12-2012 11:05 Pagina 30
LISTATO 1
Listato 1
;*****************************************************************************
;*
;* Scheda: Regolatore PWM per giostra-richiamo
;*
;* Versione: 1
;*
;* Target: ATtiny24A con clock a 8MHz > 0.125us per ciclo
;*
;* Data: ottobre 2012
;*
;* Descrizione: Spingendo il pulsante regolo il PWM al 0% 20% 40%
;* 60% 80% 100%. Per evitare rimbalzi ogni volta che
;* premo il pulsante lo inibisco per circa 1 secondo.
;* Il led verde significa motore on mentre quello
;* rosso segnala l’intervento della protezione da
;* sovracorrente (con il convertitore A/D controllo
;* la corrente erogata, se supera i 4A viene impostato
;* il PWM a 0 ed occorre spegnere e riaccendere la
;* scheda per farla ripartire).
;*
;*
;* PWM 15 KHz = 65us / 5 = 13us
;*
;****************************************************************************
.include “tn24Adef.inc”
.equ LED_VERDE=PB0
.equ LED_ROSSO=PB1
.equ COMANDO_MOS=PB2
.equ PULSANTE=PA3
.equ SOGLIA_CORRENTE=0b10111010 ;soglia pari a 4A
.cseg
.org$0000
init: ldi temp,low(RAMEND) ;Settaggio stack negli indirizzi alti della RAM
out SPL,temp
ldi temp,0b11110001 ;porta A tutte uscite tranne PA3 PA2 PA1
out DDRA,temp
clr temp ; out A a 0 ed inp senza pullup
out PORTA,temp
ldi temp,0b11110111 ;porta B tutte uscite tranne PB3
out DDRB,temp
clr temp ;out B a 0 ed inp senza pullup
out PORTB,temp
ldi temp,0b00100111
out ADCSRA,temp ;adc con prescaler 128 in free run
ldi temp,0b00010000
out ADCSRB,temp ;adlar=1 perdo bit0 e bit1 meno significativi
ldi temp,0b10001101 ;ADC con ref int (1,1V) e ADC2 inp differenz gain 20
out ADMUX,temp ;Fondoscala ADC=5,5A
ldi temp,0b10100000
out ADCSRA,temp ;abilito adc
30
28_31_prog&cost - Giostra:FE 10-12-2012 11:05 Pagina 31
LISTATO 1 segue
clr temp
out TIMSK1,temp ;disabilito interrupt
out TCCR1B,temp ;fermo il contatore
out TCCR1A,temp ;conteggio normale
ldi temp,0b10000101 ;carico 34286 come valore iniziale
out TCNT1H,temp
ldi temp,0b11101110
out TCNT1L,temp
ldi temp,0b00000100 ;faccio partire il contatore con prescaler 256
out TCCR1B,temp
Dopo la definizione delle costanti, vengono Il file .hex necessario per poter program-
inizializzate alcune periferiche interne. Il mare il microcontrollore è scaricabile dal
converitore A/D, per esempio, viene set- sito Internet di Fare Elettronica; se avete
tato nella modalità FREE RUNNING (fun- necessità di modificare il codice sorgen-
zionamento continuo) e viene richiamata te e ricompilare il file .hex potete utilizza-
la routine ritardo_init per evitare di leggere re l’ambiente di sviluppo integrato “AVR
il suo primo valore campionato che non è Studio” che potete scaricare gratuita-
significativo. A questo punto entriamo in mente dal sito internet www.atmel.com.
un loop diviso in cinque parti (una per
Figura 4: traccia lato saldature. ogni incremento del 20% di duty-cicle) in REALIZZAZIONE PRATICA
cui viene letto il pulsante di comando e
Questo progetto è stato realizzato utiliz-
aggiornato di conseguenza il valore di
zando componenti SMD montati su cir-
un registro chiamato “dutycicle”, regi-
cuito stampato a doppia faccia, scelta
stro che può assumere valori da 0 (duty-
che ha permesso di renderlo veramente
cicle 0%) a 5 (dutycicle 100%).
compatto come dimensioni; in figura 5
In ognuna delle cinque sezioni, in base al
potete vedere il prototipo iniziale.
valore assunto da questo registro, il co-
Se volete potete scaricare la traccia lato
mando del gate di Q1 viene dato o tolto
componenti e lato saldature dal sito In-
per rispettare il dutycicle impostato.
ternet, oppure, per avere una più facile re-
Da notare che, tramite un contatore in-
Figura 5: prototipo iniziale. peribilità dei componenti, potete utiliz-
terno a 16 bit, dopo ogni pressione del
zare componenti discreti montati su ba-
Per comodità, visto che i registri interni del pulsante la sua lettura viene inibita per cir-
setta millefori, a voi la scelta.
microcontrollore sono a 8 bit e non è ri- ca un secondo al fine di evitare rimbalzi del
In ogni caso ponete attenzione a orientare
pulsante stesso.
chiesta una grande precisione su que- i componenti con polarità, seguendo il
All’interno del loop viene monitorata an-
sta lettura, non consideriamo i due bit piano di assemblaggio di figura 2. ❏
che un’eventuale sovracorrente. Se viene
meno significativi e quindi otteniamo SO-
rilevata si entra in un ciclo infinito.
GLIA_CORRENTE = 10001011. CODICE MIP 2831453
31
32-33_quiz:fe 9-12-2012 19:19 Pagina 32
elettro
quiz 330
rispondi
vinci
&
Le risposte ai quiz “facile”
e “difficile” vanno inviate
esclusivamente compilando
il modulo su
www.farelettronica.com/eq
specificando la parola
chiave “Miller”.
Le risposte e i vincitori
Abbonamento
(previa autorizzazione) sono per un anno al club
di Fare Elettronica
pubblicati alla pagina
www.farelettronica.com/eq
a partire dal 15 del mese
successivo alla facile
Nel circuito di figura, supponendo nulle le perdite nei condensato-
pubblicazione sulla rivista. ri, si determini la tensione di uscita Vout.
A tutti i partecipanti verrà
assegnato un buono sconto
del 10% (validità 3 mesi
dalla data di assegnazione)
utilizzabile per un prossimo
acquisto su www.ieshop.it
difficile
Considerando per il diodo D1 una ten-
sione di soglia di 0,7 V, determinare il
tempo impiegato dal condensatore per
raggiungere il massimo valore di tensio-
ne ai suoi capi dopo la chiusura dell’in-
terruttore.
32
32-33_quiz:fe 9-12-2012 19:19 Pagina 33
progettare &
➲ progettare & costruire di GIOVANNI DI MARIA
CON IL PIC
In questa seconda parte IL PWM VIA HARDWARE tre funzionalità. Il mikroBasic lo gestisce
Trattiamo adesso le tecniche di genera- con una semplicità estrema, semplifi-
approfondiamo le conoscenze cando al massimo il lavoro del progettista
zione del PWM attraverso l’hardware de-
e le tecniche legate all’utilizzo dicato, presente all’interno dei micro- e del programmatore.
34
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 35
& costruire
PWM. Esse sono le seguenti: Se occorre utilizzare la seconda porta
PWM, basta invocare la procedura
• PWM1_Init PWM2_Init.
• PWM1_Set_Duty
• PWM1_Start Sintassi:
• PWM1_Stop PWM1_Init(const freq as longint)
LISTATO 1
rem **************************
rem * LISTATO 1 *
rem * PWM Hardware *
rem * 10% e 60% *
rem * by Giovanni Di Maria *
rem **************************
program pwm
main:
rem —-Porte in Output——-
trisc.1=0
trisc.2=0
rem —-Azzera porte———
portc.1=0
portc.2=0
rem —- Inizializza CCP1 e CCP2—-
PWM1_Init(5000)
PWM2_Init(5000)
rem —-Duty cycle al 10% e 60%—
PWM1_Set_Duty(25)
PWM2_Set_Duty(153)
rem—-Iniziano i 2 PWM———
PWM1_Start()
PWM2_Start()
rem —- Dopo 10 sec. il primo termina—-
delay_ms(10000)
PWM1_Stop()
rem —- Dopo altri 10 sec. il secondo termina—-
delay_ms(10000)
PWM2_Stop()
end.
35
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 36
36
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 37
sere la medesima (noi la fissiamo a 5 dea (figura 3). Il segnale triangolare, nel Schema elettrico
Khz), poiché il PIC, per la loro riprodu- nostro esempio, è composto da 20 cam- Lo schema elettrico è semplicissimo. Si
zione, utilizza il Timer2. pioni, di cui 11 tensioni in salita e 9 in di- tratta unicamente di un microcontrollore.
Il listato 1 è di una semplicità disarman- scesa. L’uscita dell’onda triangolare è localiz-
te. Dopo l’inizializzazione dei moduli CCP1 I campioni vengono riprodotti continua- zata sulla porta RC1, corrispondente al
e CCP2 (a 5 Khz) e settaggio del loro mente, in un ciclo infinito. modulo CCP2, sulla quale è presente un
duty cycle (10% e 60%) i due segnali ini-
ziano subito.
Trascorsi i primi 10 secondi, il primo se-
gnale termina. Trascorsi ulteriori 10 se- LISTATO 2
condi, anche il secondo segnale conclu-
de il suo ciclo. rem **************************
Teniamo a far notare che il PIC, durante la rem * LISTATO 2 *
generazione del segnale PWM, non è rem * PWM Hardware *
rem * Onda triangolare *
“congelato” ma può svolgere liberamen-
rem * by Giovanni Di Maria *
te qualsiasi operazione. rem **************************
Ad esempio, nel frangente, si può fare program pwm
lampeggiare un altro diodo LED, a bassa dim k as word
frequenza. Viceversa, la procedura “de- main:
trisc.1=0 ‘Porta in Output
lay_ms” pone in condizione di attesa il
portc.1=0 ‘Azzera porta
microcontrollore, bloccandolo di fatto. PWM2_Init(10000) ‘Inizializza CCP2
PWM2_Start()
while true
UN SEMPLICE GENERATORE DI ONDA rem ——Onda triangolare in SALITA—-
TRIANGOLARE for k=0 to 255 step 25
L’utilizzo del PWM hardware permette di PWM2_Set_Duty(k) ‘Cambia duty
realizzare facilmente progetti altrimenti delay_us(500)
next k
di complicata attuazione. Il prossimo
rem ——Onda triangolare in DISCESA—-
esperimento prevede la costruzione di for k=225 to 25 step -25
un semplice generatore di onda triango- PWM2_Set_Duty(k) ‘Cambia duty
lare. delay_us(500)
Il segnale PWM ha il compito, in questo next k
wend
caso, di produrre un treno di impulsi che,
end.
con la intrinseca ampiezza variabile, simuli
la tensione ai vari gradini di salita e di
discesa. L’illustrazione chiarisce meglio l’i-
37
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 38
38
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 39
39
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 40
CONCLUSIONI
Dopo aver esaminato a grandi linee le
tecniche e le problematiche derivanti dal-
la generazione dei segnali PWM, possia-
mo tirare qualche somma.
La tecnica software è più difficoltosa e me-
no precisa, ma presenta due grandi van-
taggi:
• mette a disposizione praticamente tut-
te le porte del PIC all’uso del PWM;
• può essere implementata in qualsiasi
modello di MCU, anche sprovvisto di mo-
duli CCP.
Per contro ha alcuni aspetti collaterali,
quali l’occupazione completa del task e
una interdipendenza degli eventi esterni
dalla stessa generazione. Utilizzare il
PWM hardware è invece molto proficuo,
anche se la maggior parte dei microcon-
trollori mette a disposizione solo due mo-
duli. Con essa la memoria del PIC è oc-
cupata al minimo, poiché è lo stesso
hardware a occuparsi della generazione
del treno di impulsi. In più, una volta im-
partito il comando di inizio PWM, il PIC re-
sta libero e altre istruzioni di programma
possono essere inoltrate senza problemi.
Ricordiamo che il segnale PWM è utile in
Figura 6: l’onda triangolare a 61 Hz prodotta dal PWM (senza filtro RC).
tutte quelle occasioni in cui occorre dosare
potenza al carico, senza perdita o dissi-
pazione inutile di calore.
Così, ad esempio, il pilotaggio di lam-
pade di potenza, motori e altri carichi
“pesanti”, è senz’altro facilitato da tale
tecnica. Inoltre, specialmente per il fun-
zionamento dei motori DC, il PWM per-
mette un’ottima coppia motrice, anche a
bassi regimi e a basse velocità, scopo
non raggiungibile attraverso una limita-
zione di corrente con limitazione resi-
stiva. ❏
40
34-41_prog&cost - PWM:FE 9-12-2012 19:21 Pagina 41
progettare &
➲ progettare & costruire di ROBERTO NAVONI
VR BRAIN
e VR NEURON
LA RISPOSTA ITALIANA
AD ARDUINO DUE E RASPBERRY PI
Sviluppate da un’azienda italiana, queste due schede sono largamente impiegate
nel settore della robotica, in particolare nel campo degli UAV, ma le loro
applicazioni sono davvero molteplici.
utto è nato diversi anni fa, quando rienza tale da cimentarmi nella proget- • supporto Jtag per l debug realtime del-
42
42-45_Prog&cost - uav:FE 10-12-2012 10:03 Pagina 43
& costruire
trollo sia in volo traslato, in modalità ae-
reo, sia in fase di hovering, in modalità
multicottero.
Un altro importate prototipo di multicottero
unico al mondo è stato il prototipo di un
multicottero a passo variabile con mo-
tore unico centrale.
Questo è il link a un video in cui è possi-
bile vedere alcuni test di volo dei nostri
prototipi e delle realizzazioni dei membri
della nostra community: http://www.vir-
tualrobotix.com/video/uavforge-mov.
Oltre a robot volanti possono essere rea-
lizzati anche robot terrestri e marini, come
Figura 2: vista frontale
rover, barche a motore o ROV (mini som-
della scheda VR Brain. mergibili). In altri ambiti, come piattaforma
di fast prototyping sono stati inoltre rea-
La scheda VRbrain è disponibile su www.elettrohsop.com/vrbrain-gps.
lizzati diversi prototipi molto interessanti.
Un primo progetto è stato implementato
in ambito lighting, utilizzando sensori di il-
radio, uscite per il controllo motore. Tut- • volo semplificato; luminazione, suono, PIR e attuatori PWM
te queste librerie sono disponibili per rea- • ritorno automatico al punto di partenza; per pilotare strip a LED o lampade alo-
lizzare nuovi affascinanti progetti dove • mantenimento della posizione e del- gene. È stato implementato un sistema
l’unico limite è la fantasia. l’altezza attraverso gps e barometro; automatico che, tramite smartphone in-
Arducopter è un progetto che originaria- • navigazione automatica su waypoint; terconnesso in bluetooth, consente la
mente nasceva per piattaforme Arduino, • telemetria attraverso il protocollo Mavlink gestione completa di una lampada a LED,
ma da oltre un anno il nostro gruppo si è 1.0; sia in modalità manuale sia completa-
impegnato nel porting su piattaforma a 32 • gestione di differenti configurazioni mente automatica. Un altro progetto mol-
bit di tutto il codice sviluppato dalla nostra Quad, Hexa, Okto; to interessante è stato l’uso di V Brain da
community e dalla community DIYDRO- • controllo automatico della Gimbal. parte di Varco Srl per far volare kite e
NES fondata da Chris A. negli Stati Uniti.
produrre energia elettrica attraverso i
Negli ultimi mesi, vista la continua ne- La VR Brain ha riscosso immediatamen- venti d’alta quota. VR Brain è stato usa-
cessità di risorse avanzate per i nostri te un grande successo e, oltre a far volare to come datalogger a bordo della vela.
droni, anche la community DIYDRONES
multicotteri standard, è stata impiegata Come integrazione alle funzioni di VR
ha deciso di dare pieno supporto alla no-
per realizzare diversi prototipi, tra cui in Brain negli ultimi mesi abbiamo imple-
stra piattaforma siglando un accordo di
paticolare il multicottero ibrido Fox Hybrid, mentato una nuova piattaforma che abi-
partnership per la produzione e promo-
metà aereo e metà multicottero, con in- lita l’interconnessione dei nostri robot al-
zione di VR Brain negli Stati Uniti. Per fi-
credibili doti di maneggevolezza e con- la rete tramite la piattaforma VR Neuron.
nanziare lo sviluppo della nostra tecno-
logia, oltre a questo accordo di portata in- Figura 3: vista posteriore
ternazionale, abbiamo attivato sul por- della scheda
tale indiegogo un progetto di crowdfi- VR Brain.
nance del progetto in modo che chiunque
sia interessato a unirsi al nostro progetto
potrà farlo acquistando la VR Brain, da
semplice utente o da sviluppatore, oppure
finanziando il lavoro dei nostri sviluppatori
firmware. L’indirizzo del progetto è:
http://www.indiegogo.com/vrbrain.
Il firmware Arducopter32 rev 2.8.1 at-
tualmente supporta le seguenti caratte-
ristiche:
• volo acrobatico;
• volo stabile;
43
42-45_Prog&cost - uav:FE 10-12-2012 10:04 Pagina 44
44
42-45_Prog&cost - uav:FE 10-12-2012 10:04 Pagina 45
45
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 46
progettare &
➲ progettare & costruire
Un MASTER
e uno SLAVE
el precedente numero di Fare Elet- ratteristiche fisiche della linea che com-
S
Vediamo in questa puntata un altro
tronica abbiamo visto come fun- pone il BUS, oltre che dal numero di in-
tipo di comunicazione seriale che ziona una comunicazione asincro- dirizzi disponibili.
permette la comunicazione con più na tra due dispositivi. In questa lezione ve- Diversamente da quanto visto nella le-
dremo invece un altro tipo di comunica- zione precedente, dove avevamo solo
dispositivi sulla stessa linea.
zione seriale basata sul BUS I 2C, acroni- due attori che dialogavano tra loro (PIC e
mo di Inter Integrated Circuit, utilizzato per PC), con il BUS I 2C si possono collegare
la comunicazione tra dispositivi diversi più dispositivi sulla linea. Per poter quin-
sullo stesso circuito, praticamente un di discriminare tra tutti i dispositivi è quin-
bus di tipo Master/Slave. di necessario associare a ognuno di essi
un indirizzo. Considerando che per l’in-
I 2C dirizzo sono usati solamente 7 bit, ab-
Il bus è stato ideato da Philips nel 1982, biamo 128 indirizzi disponibili, che corri-
per permettere lo scambio di informa- spondono a 128 dispositivi collegabili
zioni tra circuiti integrati. Questo BUS di sulla linea. Di questi però 16 sono riservati,
tipo sincrono permette di collegare tra quindi quelli effettivamente disponibili di-
loro più dispositivi. Per funzionare richie- ventano 112.
de che almeno uno dei dispositivi svolga Le specifiche di questo protocollo, per cui
la funzione di Master, designato alla ge- nel tempo sono state definite nuove ver-
nerazione del clock che serve per sin- sioni che hanno apportato miglioramenti,
cronizzare la comunicazione tra tutti i prevedono anche la possibilità di avere
dispositivi. Gli altri dispositivi collegati sulla stessa linea più dispositivi Master.
sul BUS sono detti Slave e possono es- Il protocollo, di tipo seriale, utilizza due fi-
sere più di uno: il limite dipende dalle ca- li per il collegamento tra i dispositivi. Uno
46
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 47
& costruire
è il clock (SCL - Serial Clock Line), l’altro l’ottavo bit serve a indicare se il master
è utilizzato per lo scambio dei dati (SDA - vuole scrivere o leggere informazioni dal
Serial DAta line). Entrambe le linee sono dispositivo. Nel caso in cui il master ri-
mantenute sempre a livello alto tramite chieda informazioni allo slave, il primo ri-
due resistenze di pull-up, il cui valore è uti- lascerà il controllo della linea dati che a
lizzato anche per variare l’impedenza del- quel punto sarà gestita dallo slave per
la linea. inviare i dati, sempre sincronizzandosi
La comunicazione parte sempre da un con il clock che è generato dal master.
Master il quale porta la linea dei dati a li-
vello basso, mentre quella del clock ri- SRF02, UN SENSORE A ULTRASUONI
mane alta grazie alla resistenza di pull-up. Come dicevamo in precedenza esistono
Questa condizione indica lo START della diversi circuiti integrati che fanno uso di
comunicazione. questo protocollo, ma si possono trova-
La comunicazione da parte del Master re anche altre tipologie di dispositivi. Tra
continua portando a livello basso anche la questi troviamo anche telemetri a ultra-
linea del clock, quando il segnale del suoni come lo SRF02. Questo sensore
clock torna a livello logico alto, il valore permette di compiere misurazioni di di-
presente sulla linea dati può essere con- stanze in un intervallo che va da 16 cen-
siderato valido e quindi acquisito, conti- timetri a 6 metri.
nuando a inviare i dati fino alla condizio- Il sensore utilizza il protocollo I 2C e fun-
ne di STOP in cui la linea di clock è tenuta ziona da Slave con un proprio indirizzo.
alta e quella dati passa dallo stato basso Come abbiamo visto nel paragrafo pre-
ad alto. cedente questo BUS permette il colle-
Quando il Master avvia una comunica- gamento di più dispositivi sulla stessa li-
zione, il primo dato inviato è l’indirizzo nea. Tra le specifiche del sensore sono ri-
del dispositivo che sta interpellando e portati gli indirizzi che è possibile utilizzare
47
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 48
LISTATO 1
#include <p18f2620.h>
#include <delays.h>
#include <i2c.h>
/**********
* DEFINE *
**********/
#define LED1 LATAbits.LATA2
#define LED2 LATAbits.LATA3
#define LED3 LATAbits.LATA4
#define LED4 LATAbits.LATA5
#define PULSANTE1 PORTBbits.RB0
#define PULSANTE2 PORTBbits.RB1
#define SRF02 0xE0 /* Indirizzo del SRF02 */
/************
* FUNZIONI *
************/
unsigned int srf02_read(void)
{
int result=1;
unsigned int measure=0;
unsigned char measurement[2];
return measure;
}
/********
* MAIN *
********/
void main(void)
{
int distanza=0;
/*Impostazione dei registri di configurazione del PIC*/
ADCON1=0b00001111;
CMCON=0b00000111;
/*Reset iniziale delle porte*/
PORTA=0;
PORTB=0;
PORTC=0;
/*Definizione della funzione delle singole porte*/
TRISA=0x03;
TRISB=0b00000011;
TRISC=0x00;
/*Configurazione del modulo MSSP*/
OpenI2C(MASTER, SLEW_OFF);
48
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 49
LISTATO 1 segue
// Loop infinito
for(;;)
{
distanza=srf02_read();
/* Accende i led in funzione della distanza */
if(distanza>20 && distanza<=40)
{
LED1=1;LED2=0;LED3=0;LED4=0;
}
if(distanza>40 && distanza<=60)
{
LED1=1;LED2=1;LED3=0;LED4=0;
}
if(distanza>60 && distanza<=80)
{
LED1=1;LED2=1;LED3=1;LED4=0;
}
if(distanza>80)
{
LED1=1;LED2=1;LED3=1;LED4=1;
}
}
}
per questo sensore. Quelli disponibili so- riosità: questo sensore utilizza un PIC sitiva. Questo collegamento, definito di
no 16, che corrisponde al numero mas- per eseguire le misurazioni con gli ultra- pull-up, serve per mantenere sempre al-
simo di dispositivi che possono essere uti- suoni e per gestire le comunicazioni come to il livello logico dei segnali della linea. Il
lizzati sulla stessa linea. Slave I 2C. sensore richiede anche i collegamenti
Il sensore funziona come una memoria per l’alimentazione, quindi per la massa e
E2PROM, si devono quindi indirizzare le i +5 volt, mentre, come potete notare
IL CIRCUITO
locazioni di memoria interna per gestirlo. nello schema in figura 4, il pin 4 del sen-
Per avviare una misurazione in centimetri Le modifiche allo schema base di questo sore non va collegato.
si deve scrivere il comando 81 nella lo- corso sono molto poche, si deve collegare Il sensore SRF02 può funzionare in due
cazione di memoria 0. La lettura viene solamente il sensore SRF02 al PIC colle- modalità di comunicazione: in I 2C, che
completata in 66 ms, dopo di che si pos- gando tra loro i pin SDA e SCL dei due utilizziamo in questa lezione, oppure con
sono leggere i due byte nella locazione 2 componenti, che sul PIC corrispondono un classico collegamento seriale, come
e 3 della memoria del sensore, che cor- hai pin RC4 e RC3 rispettivamente, men- quello visto nella lezione precedente. Per
rispondono rispettivamente alla parte al- tre sul sensore sono i pin 2 e 3. cambiare la modalità di funzionamento
ta e alla parte bassa del numero che in- A entrambi questi collegamenti andrà ag- si usa il pin 4 che, lasciato libero, fa fun-
dica la distanza misurata. giunta una resistenza, che dall’altro capo zionare il circuito in modalità I 2C, mentre
Chiudiamo questo paragrafo con una cu- sarà collegata verso l’alimentazione po- collegato va verso massa.
50
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 51
52
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 53
54
46-55_Prog&cost - Tutorial PIC18:FE 10-12-2012 10:05 Pagina 55
progettare &
➲ progettare & costruire di GIOVANNI DI MARIA
Corso mikroBASIC
La libreria OneWire:
MISURIAMO LA TEMPERATURA
a libreria OneWire, conosciuta anche
L
Eccoci arrivati all’ultima puntata
con il nome 1-Wire, permette la co-
del corso su mikroBasic. In questo municazione tra dispositivi prodotti
articolo scopriremo come utilizzare da Dallas. È un tipo di comunicazione, in-
staurata su un unico filo, di tipo bidire-
la libreria 1-Wire con il PIC,
zionale, tra un master e uno o più slave.
sperimentando alcune applicazioni Ogni dispositivo di tipo slave contiene al
suo interno, memorizzato su ROM, un
pratiche con il termometro digitale
codice univoco a 64 bit. Questa univoci-
DS1820. tà permette al master di selezionare un de-
terminato slave (tra molteplici), presenti
sulla linea. Se si utilizza un solo dispositivo
sulla stessa linea, non c’è bisogno di leg-
gere tale codice seriale.
Figura 1: il termometro DS1820.
I dispositivi utilizzano valori di tensione di
alimentazione compresi tra 3 e 6 volt. La
trasmissione è di tipo bidirezionale. Essa re alimentati direttamente dalla linea da-
è di tipo half-duplex, ossia la ricezione non ti e il range di alimentazione sopportato è
avviene contemporaneamente alla tra- compreso tra 3 e 6 V.
smissione, e viceversa. L’alimentazione elettrica può essere attinta
direttamente dalla sua linea dei dati, co-
sicché esso non ha la necessità di ali-
IL DS1820, SENSORE DI TEMPERATURA
mentazione esterna.
DIGITALE 1-WIRE
Il termometro DS1820 è un sensore di
Caratteristiche del DS1820
temperatura di tipo 1-Wire. Esso può ri-
Ecco le principali caratteristiche:
levare temperature con precisione di 9
• richiede solo un filo per la comunica-
bit, in un range compreso tra –55 °C e
zione;
+125 °C, con un’approssimazione di +/–
• non necessita di componenti esterni;
0,5 °C. La particolarità di questi sensori di
• misura temperature da –55 °C a +125
temperatura risiede nel fatto che ciascun
°C con incrementi di 0,5 °C. In scala Fah-
dispositivo ha un numero seriale unico, di
renheit corrisponde a un intervallo com-
64 bit, che lo identifica univocamente.
preso tra –67 °F e +257 °F con incre-
Tale ID è memorizzato all’interno di una
menti di 0,9 °F;
ROM presente all’interno. Questa carat-
• la temperatura è letta come valore di-
teristica permette di poter utilizzare un
gitale a 9 bit;
vasto numero di sensori su un unico bus
• la conversione della temperatura in
di dati. Il protocollo utilizzato da questi
word digitale avviene in soli 200 ms.
sensori è 1-Wire; questo tipo di comuni-
cazione richiede un unico pin per il suo
funzionamento. Inoltre, per poter funzio- LA LIBRERIA ONEWIRE DEL MIKROBASIC
nare correttamente, questi sensori di Il mikroBasic dispone di una versatile li-
temperatura non necessitano di alcun al- breria per gestire i dispositivi 1-Wire. Uno
tro componente esterno. Possono esse- di questi è, appunto, il termometro
56
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:05 Pagina 57
& costruire
• Ow_Read;
: • Ow_Write.
Ow_Reset
È una funzione che invia un segnale di re-
set al dispositivo 1-Wire. Essendo una
funzione, ritorna un valore numerico di
tipo byte che può rappresentare due pos-
sibili situazioni:
• 0, se il dispositivo viene trovato ed è,
quindi, presente;
• 1, se il dispositivo non è presente.
Sintassi:
sub function Ow_Reset(dim byref
port as byte, pin as byte) as
byte
dove:
• “port” rappresenta la porta dove è col-
legato il dispositivo;
• “pin” rappresenta il pin dove è collega-
to il dispositivo.
Esempio di utilizzo
L’esempio che segue resetta il termo-
metro collegato sulla linea RE2:
Ow_Reset(PORTE, 2)
Ow_Read
È una funzione che legge un dato dal
Figura 2: pinout del DS1820.
dispositivo collegato sul bus.
DS1820. Questo tipo di protocollo, come • l‘oscillatore deve avere una frequenza Sintassi:
detto, prevede la presenza di un Master e minima di 4 Mhz, al fine di utilizzare cor- sub function Ow_Read(dim byref
uno o più Slave, utilizzando un solo filo. I rettamente le funzioni per la gestione dei port as byte, dim pin as byte) as
dispositivi 1-Wire sono a collettore aper- dispositivi; byte
to (open collector) e devono utilizzare • occorre disabilitare gli interrupt per uti-
una resistenza di pull-up sulla linea. lizzare la libreria 1-Wire. Questo perché es- dove:
Ogni dispositivo dispone di un numero sa implementa una programmazione a • “port” rappresenta la porta dove è col-
basso livello delle temporizzazioni interne legato il dispositivo;
di registrazione unico che lo identifica
del microcontrollore. • “pin” rappresenta il pin dove è collega-
dagli altri. In questo modo è possibile
to il dispositivo.
collegarne più di uno, sulla stessa linea.
LE FUNZIONI E LE PROCEDURE Esempio di utilizzo
L’identificazione è formata da: IN MIKROBASIC L’esempio che segue legge un byte dal
• 8 bit che identificano il tipo di dispositivo; In dettaglio adesso esploriamo le funzio- dispositivo:
• 48 bit che identificano il numero seriale; ni e le procedure che gestiscono total-
• 8 bit per il CRC. mente il protocollo 1-Wire. Esse sono di tmp = Ow_Read(PORTE, 2)
numero molto limitato e il loro utilizzo è
Per l’utilizzo del termometro Dallas estremamente semplice. Le funzioni o Ow_Write
DS1820 è importante tenere a mente procedure sono le seguenti: È una procedura che scrive un dato sul
due importanti fattori: • Ow_Reset; bus 1-Wire.
57
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:05 Pagina 58
Figura 4: lo zoccoletto
Figura 3: schema elettrico di principio. per ospitare il DS1820 sulla EasyPIC.
Sintassi: da 10 kohm, essendo di tipo “open col- nore LM35. Il suo funzionamento è squi-
sub procedure Ow_Write(dim byref lector”. Non sono necessari altri colle- sitamente digitale e la comunicazione av-
port as byte, dim pin, par as gamenti o altri dispositivi, se non quelli per viene mediante un “botta e risposta” di co-
byte) la visualizzazione dei dati come, ad esem- mandi inviati e ricevuti. Anche la codifica
pio, un display LCD o dei display a 7 delle informazioni (temperatura) è total-
dove: segmenti. mente digitale e il calcolo deve avvenire te-
• “port” rappresenta la porta dove è col- nendo contro proprio di questo aspetto.
legato il dispositivo; A grandi linee, ecco quale è la procedura
IL DS1820 SULLA EASYPIC
• “pin” rappresenta il pin dove è collega- da seguire, per poter rilevare una tem-
I possessori della scheda di sviluppo
to il dispositivo; peratura. Si suppone che il DS1820 sia
EasyPIC saranno contenti di sapere che
• “par” rappresenta il dato da scrivere correttamente collegato e funzionante:
essa è predisposta a ospitare il termo-
sul bus. • reset del termometro. Corrisponde ad un
metro DS1820. Già dalla obsoleta ver-
segnale logico di livello basso della durata
Esempio di utilizzo sione 2 della scheda è presente uno zoc-
di almeno 480uS;
L’esempio che segue scrive un byte sul coletto a tre piedini per la collocazione del-
• scrittura del comando esadecimale
dispositivo: l’integrato. Tale zoccoletto, contrasse-
0xCC. Serve per bypassare la lettura del-
gnato con TS1, è dotato di tre fori per per-
la ROM, se si utilizza solamente un dis-
Ow_Write(PORTE, 2, $CC) mettere l’alloggiamento del termometro.
positivo;
Sulla scheda di sviluppo è indicata altre-
• scrittura del comando esadecimale
sì la forma dell’integrato, al fine di orien-
SCHEMA ELETTRICO DI PRINCIPIO tarlo e posizionarlo correttamente. La
0x44. Serve per iniziare la procedura di
Il collegamento del termometro al micro- conversione;
sua comunicazione verso il microcon-
controllore è estremamente semplice. • reset ulteriore del termometro;
trollore è gestita dal jumper J11, che ne
Utilizzando buone connessioni si può • scrittura del comando esadecimale
coordina anche la disconnessione op-
raggiungere una distanza ragguardevole 0xCC;
pure il collegamento alle porte RE2 o
di parecchi metri. • scrittura del comando esadecimale
RA4.
Il DS1820 è alimentato al pin 3 ed è col- 0xBE. Serve per predisporre alla ricezio-
legato a massa attraverso il pin 1. La linea ne della temperatura a 9 bit;
dati è al centro dei contatti, corrispon- COME RILEVARE LA TEMPERATURA CON IL • prima lettura del dispositivo, al fine di ac-
dente al pin 2. Tale linea si deve trovare DS1820 quisire la temperatura vera e propria
collegata a VCC, attraverso una resi- Il termometro DS1820 non fornisce una (LSB). Il dato, rappresentato in 8 bit, è dif-
stenza di pull-up da 4,7 kohm oppure tensione analogica, come il suo fratello mi- ferente a seconda se la temperatura sia
58
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:05 Pagina 59
positiva o negativa (sopra lo zero o sotto ratura positiva o di zero, mentre un valo- gitale restituito dal termometro ha una ri-
zero); re binario di %11111111 ($FF) rappre- soluzione di mezzo grado centigrado e
• seconda lettura del dispositivo, al fine di senta una temperatura negativa. incrementa di uno per ogni 0,5 °C. In
acquisire il segno della temperatura (MSB). Ricordiamo che il termometro DS1820 altre parole, per ottenere il corretto valore
Sebbene tale informazione sia solamen- misura le temperature in un intervallo di temperatura, basta dividere per due il
te un bit, esso è ripetuto a tutto il byte let- compreso tra –55 °C e +125 °C, con in- byte letto in prima lettura, ovvero effet-
to. Nella fattispecie, una valore binario crementi di 0,5 °C (mezzo grado). tuare uno shift del dato di un posto a de-
di %00000000 rappresenta una tempe- Come si nota dalla tabella 1, il valore di- stra.
LISTATO 1
PRIMA ESPERIENZA: TERMOMETRO PER PIC 16F887. Il quarzo utilizzato deve ave- Il firmware
TEMPERATURE SOPRA LO ZERO re, come detto sopra, una frequenza mi- Il listato per implementare il termometro è
Per il primo esperimento costruiamo un nima di 4 Mhz, al fine di rilevare corretta- relativamente semplice. Occorre com-
semplice termometro digitale, con risolu- mente le temperature. Il quarzo deve es- prendere bene la filosofia della comuni-
zione ovviamente di 0,5 °C, che misuri la sere, come al solito, coadiuvato dalle ca- cazione 1-Wire ma, soprattutto, occorre
temperatura in un intervallo compreso tra 0 pacità di 22 pF. Il piedino di reset deve conoscere e capire i comandi supporta-
°C e 125 °C. I risultati sono visualizzati su avere un potenziale alto, grazie alla resi- ti dal termometro DS1820. Allo scopo, si
un display LCD, collegato al microcontrol- stenza di pull-up da 4,7k (o più). Il display consiglia di leggere con molta attenzione
lore. Il termometro è utile solo per misura- LCD è connesso totalmente alla porta il datasheet del dispositivo.
re le temperature positive, ossia quelle PORTB e usa solamente quattro delle Il programma inizia con la definizione del
comprese tra 0 °C e 125 °C. In caso di am- otto linee dati. Il termometro DS1820 è funzionamento del display LCD, intera-
biente freddissimo (sotto lo zero), sarà in- connesso alla linea della porta RE2, a mente collegato sulla PORTB. Seguono le
vece visualizzata la frase “Sotto ZERO”. cui il firmware si riferisce. È importante dichiarazioni delle variabili. Dopo l’inizia-
prevedere la resistenza di pull-up da 4,7k lizzazione del display, inizia il ciclo vero e
Schema elettrico su di essa, pena il suo non funziona- proprio, nel quale è rilevata e visualizzata
Il prototipo utilizza un microcontrollore mento la temperatura.
61
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:06 Pagina 62
LISTATO 2
Essa è ricevuta per mezzo di comandi poco più complessa. Essa infatti si preoc- dei gradi centigradi (°C). Il motivo per cui
inviati al termometro. Leggendo il listato cupa di attingere e ricavare le singole ci- la temperatura viene moltiplicata per die-
tale procedura è abbastanza semplice fre dalla temperatura (centinaia, decine, ci è quello di eliminare i difetti delle variabili
da comprendere. La preparazione delle in- unità e decimi) e di visualizzarle singolar- floating point.
formazioni da inviare al display LCD è un mente sul display, assieme al simbolo Segue in tabella 2 un esempio di con-
versione, ipotizzando che la temperatura
reale (variabile: temperatura_reale) sia di
TABELLA 2: SIMULAZIONE DI CONVERSIONE 103,5 gradi centigradi. Esso è partico-
TEMPERATURA/DISPLAY LCD. larmente utile per capire i passaggi che
determinano la visualizzazione su display
delle varie cifre.
STATEMENT DEL FIRMWARE MIKROBASIC VALORE DELLA VARIABILE
temperatura_reale = temperatura1_letta / 2.0 103,5
temp = temperatura_reale*10 1035
SECONDA ESPERIENZA:
UN TERMOSTATO CHE ATTIVA UN CARICO
centinaia = temp / 1000 1
Il termostato è un interruttore comanda-
temp = temp - ( centinaia*1000 ) 35
to dalla temperatura. Esempi di termostato
decine = temp / 100 0 sono quelli contenuti in uno scaldaba-
temp = temp - ( decine*100 ) 35 gno. Se l’acqua raggiunge una determi-
unita = temp / 10 3 nata temperatura, la resistenza si spe-
temp = temp - ( unita*10 ) 5 gne. Un termostato può essere normal-
mente aperto o normalmente chiuso. Di-
decimi = temp 5
pende dalle applicazioni di cui si ha ne-
cessità.
62
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:06 Pagina 63
Vediamo come implementare un termo- suo posto si utilizza un transistor e un È molto importante la presenza della re-
stato con l’ausilio di un microcontrollore relè collegato al carico. sistenza di pull-up da 4,7k su di essa.
PIC e il termometro DS1820. Il listato è più Anche questo prototipo utilizza un mi- La porta PORTC.0 comanda il carico,
semplice del precedente, in quanto non crocontrollore PIC 16F887. Il quarzo uti- attraverso il transistor, configurato come
prevede alcuna unità di visualizzazione, ma lizzato deve avere, come detto sopra, interruttore elettronico.
solo un componente che attiva (o meno) una frequenza minima di 4 Mhz, al fine di Se lo stato logico di RC0 è alto, esso
un determinato carico. Occorre solo pro- rilevare correttamente le temperature. Il porta in saturazione il transistor, attivan-
grammare il punto termico di attivazione quarzo è coadiuvato dalle capacità di 22 do il relè.
(o di disattivazione), ossia la soglia sopra pF. Il diodo D1, collegato in antiparallelo,
la quale il carico deve essere messo in Il piedino di reset deve avere un poten- serve per proteggere il transistor dalle
opera o no. ziale alto, grazie alla resistenza di pull-up extratensioni transitorie della bobina in-
da 4,7k (o più). Anche in questo caso il duttiva del relè.
Schema elettrico termometro DS1820 è connesso alla linea Quest’ultimo è alimentato a 12 V, mentre
Lo schema elettrico è molto semplice, della porta RE2, a cui il firmware si rife- la logica è a 5 V.
in quanto non prevede il display LCD. Al risce.
Il Firmware
Il listato 2 è abbastanza semplice ed è si-
mile al primo.
La temperatura reale è contenuta nella
omonima variabile che, controllata cicli-
camente ogni secondo, attiva o meno la
porta PORTC.0.
In caso di misurazioni di temperature ne-
gative (sotto lo zero) occorre modificare il
firmware, riferendosi alle tabelle di corri-
spondenza opportune, tenendo anche
Figura 5: connessione del DS1820 sulla EasyPIC.
63
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:06 Pagina 64
CONCLUSIONI
Siamo arrivati alla conclusione di questo
corso avanzato sui microcontrollori. I let-
tori hanno molto apprezzato il lavoro svol-
to, fatto testimoniato anche dalle nume-
Figura 8: la temperatura visualizzata sul display LCD. rose lettere ed email ricevute. Con le va-
rie lezioni abbiamo aggiunto tanti tassel-
li importanti alla conoscenza della pro-
conto che la seconda lettura del DS1820 essa si abbassa sotto tale limite, il carico grammazione dei microcontrollori con il
deve restituire un valore di 255 ($FF). viene disattivato. È possibile utilizzare un mikroBasic. ❏
L’esempio visto serve ad attivare un carico semplice diodo led (con relativa resi-
se la temperatura raggiunge i 25 gradi. Se stenza di limitazione) al posto del transistor CODICE MIP 2831461
64
56-65_Prog&cost - Microbasic:FE 10-12-2012 10:06 Pagina 65
progettare &
➲ progettare & costruire di ADRIANO GANDOLFO
Demo Board
PER RASPBERRY PI ei precedenti numeri è già stata General Purpose Input/Output (GPIO)
N
Nei precedenti numeri della rivista è
ampiamente presentata la sche- Il connettore General Purpose (figura 3)
stata presentata la scheda da Raspberry Pi, per chi avesse di Input / Output è un gruppo di pin che
Raspberry. Come abbiamo visto, è perso i numeri ecco un breve sunto. possono essere configurati come pin
d’ingresso o di uscita ed essere control-
dotata di un connettore che permette
LA SCHEDA RASPBERRY PI MODELLO B lati (programmati) tramite software. In
di dialogare direttamente con i chip e La scheda visibile in figura 1 misura questo modo il Raspberry Pi permette a
85,60 x 53,98 x 17 mm, il suo peso è di periferiche e schede di espansione di ac-
i moduli dei sottosistemi. In questo
45 g, presenta qualche sporgenza do- cedere alla CPU.
connettore sono presenti, oltre ai pin vuta alla scheda SD e connettori che Il connettore denominato P1 presente
sporgono oltre i bordi. sulla scheda Raspberry Pi è formato da 26
GPIO (General Purpose I/O), altri pin
Il modello visibile è quello più completo pin disposti su due file con un passo di
per accedere tramite interfacce SPI, della scheda Raspberry Pi, il modello B: 2,54 millimetri.
dotato di due porte USB ed Ethernet Sono presenti pin specifici per l’accesso
I2C, UART seriale, e quelli di
LAN 10/100, con un SoC Broadcom alle interfacce I²C, SPI, UART, sono poi
alimentazione a 3,3 V e 5 V. BCM2835 (che comprende un core presenti i pin di alimentazione 3,3 V, 5 V e
ARM1176JZF-S a 700 MHz, un accele- GND.
In quest’articolo vedremo come
ratore grafico 3D Videocore IV e un de- I livelli di tensione della GPIO sono a 3,3
realizzare demo board con cui poterci coder hardware capace di gestire video V e non tollerano 5 V (figura 4).
esercitare pilotando le uscite o Full-HD 1080p a un bitrate massimo di Nell’interfacciarsi con la scheda, occorre
40Mbps). prestare attenzione poiché non c’è pro-
acquisendo gli ingressi. Nella tabella 1 ne sono riassunte le ca- tezione contro la sovratensione.
Nei prossimi numeri saranno ratteristiche. Tutti i pin GPIO possono essere riconfi-
gurati per fornire funzioni alternative co-
analizzati i segnali presenti sul me SPI, PWM, I²C e così via, come visibile
CONNETTORI PRESENTI SULLA SCHEDA
connettore della scheda Raspberry Pi nella tabella 2.
La scheda Raspberry Pi, come un normale
La massima corrente che può essere as-
e saranno presentati alcuni PC, ha vari connettori (figura 2): con-
sorbita dal pin di alimentazione 3,3 V è 50
nettore di alimentazione [1], una doppia
programmi per l’utilizzo della mA, mentre quello del pin dell’alimenta-
USB [2], il connettore per la connessione
zione +5 V dipende dagli altri assorbi-
scheda demo. alla rete Ethernet [3], una porta HDMI,
menti, ma si aggira intorno a 300-500
un connettore RCA e un connettore tipo
mA.
cuffie per l’uscita Audio/video [4-5-6].
In più, sono presenti interfacce a basso li-
vello, utilizzabili per dialogare diretta- DEMO BOARD PER SCHEDA RASPBERRY PI
mente con i chip e moduli dei sottosi- La Demo Board visibile nella figura 5
stemi. Quello che utilizzeremo, è siglato permetterà di compiere esperimenti d’in-
P1 [7]. terfacciamento con la scheda Raspberry:
Altri connettori sono: un CSI (Camera il collegamento con quest’ultima è effet-
Serial Interface) e un DSI (Display Serial In- tuato con un cavo piatto a 26 poli che ter-
terface), oltre a un collegamento seriale al- mina, a entrambi i lati, con un connettore
l’interno del connettore HDMI chiamato 13+13 pin.
CEC (Consumer Electronics Control). Il connettore della scheda Raspberry che
66
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 67
& costruire
DESCRIZIONE DEL CIRCUITO
TABELLA 1
Passiamo adesso alla descrizione del cir-
cuito della Demo Board visibile in figura
SoC (System on a Chip) Broadcom BCM2835 (CPU + GPU + DSP + SDRAM) 7, mentre nella tabella 3 è riportato l’e-
CPU 700 MHz ARM1176JZF-S core (famiglia ARM11)[2] lenco dei componenti utilizzati.
GPU: Broadcom VideoCore IV,OpenGL ES 2.0, 1080p30 H.264 La scheda può essere vista secondo le
high-profile decode singole sezioni:
Memoria (SDRAM): 256 Megabytes (condivisa con la GPU) • sezione Connettore;
• sezione alimentazione;
Porte USB 2.0: 2 (attraverso un hub USB integrato)
• sezione interfaccia I/O;
Output video: Connettore RCA per il video composito, HDMI
• sezione uscita relè.
Output audio: 3,5 mm jack, HDMI
Memoria: SD / MMC / SDIO card slot SEZIONE CONNETTORE
Collegamenti di rete: Ethernet 10/100 (RJ-45) Il connettore (figura 8) permette il colle-
Periferiche di basso livello: 2x13 header pins per GPIO, SPI, I²C, UART, +3,3 volt, +5 volt gamento tra la scheda Raspberry Pi e la
Real-time clock: Nessun orologio o batteria Demo Board.
Potenza assorbita: 700 mA, (3,5 watt) I pin di I/O collegati sono solamente 8, co-
Alimentazione: 5 Volt via MicroUSB o GPIO header
me riportato nella figura 9: di questi, 3
hanno la doppia funzione di Input e Out-
Dimensioni: 85,60 × 53,98 mm
put mentre gli altri sono solamente di
Sistemi operativi supportati: Debian GNU/Linux, Fedora, Arch Linux e Gentoo Output. Sono poi presenti i tre pin dell’a-
limentazione: +3,3 V, +5 V e GND.
Tabella 1: caratteristiche scheda Raspberry Pi.
Sezione alimentazione
La sezione dell’alimentazione (Figure 10
e 11) è incentrata sul noto integrato
LM7805 (figura 12), un regolatore di
tensione fissa con uscita di +5 V, 1 A.
La tensione in ingresso è fornita tramite il
connettore X1, dopo il quale si trova il
diodo D1 che protegge il circuito da un’e-
ventuale inversione di polarità.
Sono poi presenti alcuni condensatori di
filtraggio, il diodo LED BL1-10 segnala la
presenza dell’alimentazione.
Il Jumper J4 permette di scegliere la fon-
Figura 1: scheda Raspberry Pi.
te di alimentazione che può essere ester-
Figura 2: posizione connettori su Scheda Raspberry Pi.
na o derivata dalla scheda Raspberry Pi.
L’accensione del diodo BL1-9 segnala
quando la scheda è connessa alla Rasp-
si utilizzerà è denominato P1 (figura 6) e tazione esterna, alle 8 uscite, al relè; berry Pi e che questa è alimentata.
su di esso sono presenti, oltre ai pin • circuito di alimentazione esterna con
GPIO (General Purpose I/O), alcuni pin per batteria tramite regolatore LM7805; Sezione interfaccia I/O
accedere tramite interfacce SPI, I 2 C, • interfaccia di uscita delle 8 porte I/O tra- La sezione d’interfaccia (figura 13) si
UART seriale oltre a quelli di alimenta- mite ULN2803A; occupa di interfacciare i segnali da e per
zione. • barra LED per segnalazione attivazione la scheda Raspberry Pi.
La nostra scheda demo, utilizzerà sola- uscite, presenza delle tensioni di alimen- L’integrato processore SoC (System-on-
mente gli otto pin I/O, i due pin di ali- tazione; a-Chip) della Broadcom utilizzato sulla
mentazione a 3,3 V e 5 V e il pin di mas- • tre pulsanti connessi alle porte I/O; scheda Raspberry Pi è basato su tecno-
sa. • un relè. logia CMOS e pertanto i pin di uscita
La scheda possiede: È possibile vedere un breve filmato illu- operano su livelli logici 3,3 V.
• connettore verso Raspberry PI; strativo presente su YouTube al link Se questo può andar bene per l’inter-
• morsettiere per connessione: alimen- http://youtu.be/iBiV6llgQXk. facciamento con altri integrati di tipo
67
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 68
68
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 69
TABELLA 2
NUMERO PIN NOME DEL PIN NOTE HARDWARE FUNZIONE ALTERNATIVA ALTRE FUNZIONI ALTERNATIVE
P1-02 5V0 Fornita tramite fusibile
P1-04 DNC Non connettere
P1-06 GND
P1-08 GPIO 14 Boot to Alt 0 -> UART0_TXD ALT5 = UART1_TXD
P1-10 GPIO 15 Boot to Alt 0 -> UART0_RXD ALT5 = UART1_RXD
P1-12 GPIO 18 ALT4 SPI1_CE0_N ALT5 = PWM0
P1-14 DNC Non connettere
P1-16 GPIO23 ALT3 = SD1_CMD ALT4 = ARM_RTCK
P1-18 GPIO24 ALT3 = SD1_DATA0 ALT4 = ARM_TDO
P1-20 DNC Non connettere
P1-22 GPIO25 ALT4 = ARM_TCK
P1-24 GPIO08 SPI0_CE0_N
P1-26 GPIO07 SPI0_CE1_N
P1-01 3.3 V 50 mA max current draw
P1-03 GPIO 0 Resistenza 1K8 pull up I2C0_SDA I2C0_SDA
P1-05 GPIO 1 Resistenza 1K8 pull up I2C0_SCL I2C0_SCL
P1-07 GPIO 4 GPCLK0
P1-09 DNC Non connettere
P1-11 GPIO17 ALT3 = UART0_RTS, ALT5 = UART1_RTS
P1-13 GPIO21 PCM_DIN ALT5 = GPCLK1
P1-15 GPIO22 ALT3 = SD1_CLK ALT4 = ARM_TRST
P1-17 DNC Non connettere
P1-19 GPIO10 SPI0_MOSI
P1-21 GPIO9 SPI0_MISO
P1-23 GPIO11 SPI0_SCLK
P1-25 DNC Non connettere
69
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 70
TABELLA 5:
Sezione relè
JUMPER FIGURA FUNZIONE
Sulla scheda (figura 19) è presente un
piccolo relè tipo SYSY1K-S-105L (figura J1 28-28 Abilitazione Pulsante S1
21) che può essere attivato inserendo il J2 28-29 Abilitazione Pulsante S2
jumper J5 (figura 20), in questo modo l’u- J3 28-29 Abilitazione Pulsante S3
scita 7 dell’integrato IC1 sarà collegata al- J4 30 Scelta della fonte di alimentazione
la bobina e il relè potrà essere attivato.
J5 31-32 Abilitazione relè
I contatti del relè: Comune, Normale Aper-
to e Normale Chiuso sono presenti sulla
Tabella 5: funzione dei jumper.
morsettiera X7 della scheda.
70
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 71
72
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 73
IL LINGUAGGIO DI PROGRAMMAZIONE
Figura 11: sezione di alimentazione. Figura 12: piedinatura dell’integrato LM7805.
PYTHON
Per la scrittura del programma di gestio-
ne, personalmente ho scelto il linguaggio
di programmazione Python, che è di tipo
ad alto livello, orientato agli oggetti e
adatto, tra gli altri usi, a sviluppare appli-
cazioni distribuite, scripting, computa-
zione numerica e system testing.
Altri linguaggi cui Python è spesso para-
gonato sono Perl, Java, JavaScript, Visual
Basic.
Il linguaggio fu ideato da Guido Van Ros-
sum all’inizio degli anni Novanta. Il nome
fu scelto per via della passione dell’idea-
tore per il gruppo Monty Python.
Python è un linguaggio pseudocompilato:
un interprete si occupa di analizzare il
codice sorgente (semplici file testuali con
estensione .py) e, se sintatticamente cor-
retto, di eseguirlo. In Python non esiste
una fase di compilazione separata (come
Figura 13: schema elettrico della sezione alimentazione della Demo Board.
avviene in C, per esempio) che generi un
file eseguibile partendo dal sorgente.
L’essere pseudointerpretato rende Python
INFORMAZIONI SUL SISTEMA OPERATIVO un linguaggio portabile. Una volta scritto
DELLE RASPBERRY un sorgente, esso può essere interpretato
La scheda Raspberry Pi, come un normale ed eseguito sulla gran parte delle piatta-
computer, ha bisogno di un sistema ope- forme attualmente utilizzate, siano esse di
rativo, abbreviato in OS (Operating casa Apple (Mac) o PC (Microsoft Win-
System), che è un insieme di compo- dows e GNU/Linux). Semplicemente, ba-
nenti software le quali garantiscono l’o- sta la presenza della versione corretta
peratività di base, coordinando e ge- dell’interprete.
stendo le risorse hardware di processa- Un’altra particolarità è che Python è free
mento e memorizzazione, le periferiche, le software: non solo il download dell’in-
risorse software e facendo da interfaccia terprete per la propria piattaforma, ma
con l’utente. Senza di esso, quindi, non anche l’utilizzo nelle proprie applicazioni.
sarebbe possibile l’utilizzo della Rasp- Queste caratteristiche hanno fatto di que-
berry Pi e di altri software più specifici, co- sto programma il protagonista di un enor-
me applicazioni o librerie software. me diffusione in tutto il mondo. Questo
Come già detto, l’OS della Raspberry Pi ri- perché garantisce lo sviluppo rapido (e di-
siede su una memoria SD da inserire nel- vertente) di applicazioni di qualsiasi com-
l’apposito slot presente. plessità in tutti i contesti: dal desktop al
Di questo OS esistono varie versioni, web, passando dallo sviluppo di video-
quello utilizzato per le prove è denominato giochi allo scripting.
Figura 14: piedinatura dell’integrato ULN2803A. Raspbian, un sistema operativo debian- Per quanto riguarda l’interprete, questo è
73
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 74
74
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 75
Fase 3 - individuare la nuova directory: Fase 6 - eliminare il file di archivio: Il programma dovrà essere copiato uti-
cd RPi.GPIO-0.4.1a rm-RPi.GPIO 0.4.1a.tar.gz lizzando la Shell del programma Python
oppure scaricato da sito della rivista e
Fase 4 - installare la libreria: Si potrà ora utilizzare la libreria in Python. copiato nella SD del SO.
sudo python setup.py install Il funzionamento del programma è molto
PROGRAMMA DI PROVA semplice. La prima linea:
Fase 5 - rimuovere la directory e il suo Per testare la scheda si può usare il pro-
contenuto: gramma il cui listato è scaricabile dal sito di #!/usr/bin/python
cd .. Fare Elettronica. Questo farà lampeggiare
sudo rm-rf RPi.GPIO-0.4.1a / tutti gli otto LED connessi alle porte. riporta la posizione del programma
75
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 76
GPIO.setmode(GPIO.BOARD)
CONCLUSIONI
Abbiamo terminato il montaggio della
oppure scheda e verificato il suo funzionamento.
Potremmo ora realizzare altri program-
GPIO.setmode(GPIO.BCM) mi per gestire i pulsanti, il relè, o altri dis-
positivi da collegare alle morsettiere d’u-
Vengono poi impostate le varie porte, scita.
tutte come uscite, e creato un ciclo che Nei prossimi numeri saranno illustrati al-
pone ogni uscita a true, accendendo il tri programmi e applicazioni che potremo
LED. Quindi, dopo una pausa di un se- testare con la nostra scheda appena co-
condo stabilita dall’istruzione: struita. ❏
Figura 29: collegamento delle schede.
time.sleep(1). CODICE MIP 2831658
Figura 31:
Figura 30: memoria SD con OS. logo del sistema
operativo Raspbian.
PER approfondire...
- http://www.raspberrypi.org/ Sito ufficiale della fondazione che ha creato la scheda Raspberry.
- http://www.raspberrypi.org/downloads Per scaricare il sistema operativo della Raspberry Pi.
- http://downloads.element14.com/raspberryPi1.html?isRedirect=true Link sito Farnel per ordinare la
scheda Rasberry Pi.
- http://it.rs-online.com/web/generalDisplay.html?id=raspberrypi Link sito RS per ordinare la scheda
Raspberry Pi.
- http://www.python.it/ sito ufficiale della comunità italiana per il linguaggio di programmazione Python.
- http://www.raspberrypi.org/downloads Per scaricare il sistema operativo della RaspBerry Pi.
- http://pypi.python.org/pypi/RPi.GPIO Per scaricare la libreria per gestire le porte I/O.
76
66-77_Prog&cost - Raspberry:FE 10-12-2012 10:08 Pagina 77
imparare & a
➲ imparare & approfondire
Display a matrice
CON DECODER BINARI
ella puntata precedente abbiamo scuna Riga, dando luogo ad un numero di
N
La gestione delle matrici di LED è
visto che l’interfacciamento diret- “Colonne” pari a quello dei LED in essa
decisamente accattivante ma, nella
to dei display a matrice di punti contenuti.
sua forma nativa, non è possibile richiede al dispositivo di controllo come Le configurazioni più diffuse sono quelle
minimo dodici linee d’uscita, per garantire a matrice 7x5 e a matrice 8x8 e richiedono
attivarla tramite la porta parallela di
le quali sono necessarie almeno due por- comunque un registro d’uscita a 8 bit
un PC e comunque, anche se operata te; la struttura di questi dispositivi op- per le 7 o 8 Righe e un altro registro d’u-
con un microcontrollore, ne intacca toelettronici divide i LED interni in gruppi scita a 8 bit per le 5 o 8 Colonne: qua-
composti solo da una piccola parte di lunque microcontrollore non avrà pro-
sensibilmente le risorse; in questa essi, collegandone insieme gli anodi in blemi (se non quello di consumare molte
puntata studieremo la soluzione di modo da costituire una “Riga”, e colle- linee di I/O) per garantire (con le sue por-
gando poi tra loro i catodi dei LED che oc- te PortA e PortB) il servizio diretto a en-
questo problema.
cupano la medesima posizione in cia- trambe le strutture ma, di certo, esso
Figura 1: Dot Matrix 7x5 LED Display: controllo con microcontrollore tramite 3-Line to 8-Line Decoder/DMUX 74LS138.
78
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 79
& approfondire
di GIORGIO OBER
79
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 80
per altro contiene un driver Darlington in dissipare eventuali possibili picchi di ten- chiedendo per questo solo 2 piedini, in-
meno) il ULN2981 ha la caratteristica di sione durante il controllo di eventuali ca- vece di 4; i due piedini resi liberi sono
avere uscite non invertenti, condizione richi induttivi; per motivi di logica pratici- utilizzati per controllare le rispettive abili-
indispensabile in questo caso, data la tà gli anodi di tutti questi diodi opzionali in- tazioni (Strobe) con una propria linea, C1
logica attiva bassa delle uscite del deco- terni sono collegati tra loro e resi dispo- e C2; poiché le due linee di controllo so-
der che lo precede; in questo modo le nibili su un piedino dedicato, pin10, det- no attive in modo contrapposto (per la
condizioni necessarie alla tecnica di mul- to GND. presenza di un inverter interno) è suffi-
tiplexing sono assicurate tenendo alte Inutile sottolineare che la presenza di 8 ca- ciente unirle tra loro esternamente per
tutte le Colonne, meno quella puntata nali indipendenti (decoder + transistor ottenere il terzo ingresso di selezione C,
dal codice binario fornito in uscita sui 3 bit Darlington) rende questo progetto ideale trasformando il componente nel deside-
della porta PortB del microcontrollore. anche per pilotare matrici di 8x8 LED; rato in decoder “da 3 a 8”.
Ricordiamo che i driver di questa cate- una possibile variante, funzionalmente In ogni caso la gestione software di que-
goria dispongono di diodi polarizzati in- identica, consiste nel sostituire il decoder sto progetto è molto semplice: per poter
versamente (clamp diodes) sia in ingres- “da 3 a 8” (74LS138) con un doppio de- ricostruire l’informazione desiderata sul-
so sia in uscita, per assicurare un buon coder “da 2 a 4” (Dual 2-Line To 4-Line la matrice di LED (di solito un carattere al-
grado di sicurezza; le uscite di ciascun ca- Decoder/DMUX) come il 74LS139 o il fanumerico o un simbolo grafico) bisogna
nale sono a collettore aperto e consentono 74LS155; la figura 2 ne sottolinea pregi in primo luogo predisporre una variabile
(sebbene non sia il caso del nostro attuale e difetti: contenente le 5 parole da trasferire sulle
progetto) di utilizzare per la periferica a es- a) con il 74LS139 la cosa è possibile ri- Righe, una per ciascuna delle 5 Colonne
se collegata tensioni di alimentazione di- nunciando alla possibilità di controllarne previste da questo visualizzatore; cia-
verse, anche maggiori, fino a un massimo l’abilitazione (Enable), ma per poter dis- scuna parola avrà la dimensione di un
di 50 V, rispetto a quella (di tipo logico) porre della terza linea di selezione è ne- byte e conterrà i bit necessari per tenere
usata per il controllo in ingresso, di solito cessario coinvolgere anche un operatore accesi (con 1) o spenti (con 0) i rispettivi
di 4,2 V fino a un massimo di 5 V. NOT (1/6 di 74LS04), rendendo la solu- LED della Colonna ad essa relativa; poiché
In aggiunta, le stesse uscite del ULN2981 zione antieconomica; le Righe previste sono sette, il valore del
possono essere facoltativamente collegate b) l’uso del più moderno 74LS155 è la bit più significativo (bit7) di ciascuna pa-
a massa attraverso un ulteriore diodo di scelta migliore: le due metà hanno ora rola è irrilevante e potrà essere tenuto a 0.
soppressione, previsto internamente, per le 2 linee di selezione A e B in comune, ri- Dunque, sarà necessario predisporre il
Figura 4: Dot Matrix 7x5 LED Display: controllo con microcontrollore tramite 4-Line to 16-Line Decoder/DMUX 74LS154.
80
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 81
81
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 82
82
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 83
83
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 84
Figura 9: Dot Matrix 8x8 LED Display - Procedure assembly dei servizi di visualizzazione statica (Display) e scorrevole CODICE MIP 2831584
(Scroll).
84
78-85_Imp&app-Ober_Interfacciamento:FE 10-12-2012 10:10 Pagina 85
INVESTIAMO
NEL FUTURO Le alternative ALLA
MEMORIA FLASH
La memoria Flash gode ancora di ottima salute. I dispositivi
consumer portatili e intelligenti, come i tablet multimediali e gli
smartphone, determinano largamente le tendenze di mercato per
le memorie Flash e i semiconduttori in generale, e la quota di
mercato dei tablet sembra destinata ad aumentare nei prossimi
anni. La previsione di alcuni analisti è che il mercato del
dispositivo NAND Flash, il tipo più comune di memoria Flash,
avrà un CAGR del 7% fra il 2011 e il 2015.
I
MEMORIA PCM O PRAM
spingersi ancora più là, con maggiori densità (PHASE-CHANGE MEMORY)
di memoria e tecnologie di produzione a 25 La memoria PCM sfrutta il comportamento del
nm o meno. I principali produttori di NAND vetro calcogenuro, che è in grado di organizzarsi
Flash stanno iniziando a realizzare memorie a 64 in quattro stati diversi: cristallino, amorfo e due
Gbit in tecnologie di produzione variabili da stati parzialmente cristallini. Il passaggio da
20 a 30 nm, utilizzando sempre più spesso uno stato all’altro è indotto dal calore prodotto
strutture e architetture di memoria innovative dal passaggio della corrente elettrica attraver-
per soddisfare le esigenze di alta densità. so il vetro. Dato che una memoria PCM può pro-
Un recente documento di SanDisk e Toshiba, durre fino a quattro stati, essa raddoppia la
presentato nel corso dell’anno alla ISSCC (In- capacità di memorizzazione fornendo due bit per
ternational Solid State Circuits Conference), ha cella. Stati diversi hanno resistività elettriche di-
illustrato in modo dettagliato il dispositivo verse, perciò, ad esempio, lo stato amorfo ad al-
NAND Flash a 128 Gbit in tecnologia a 19 nm ta resistenza può rappresentare uno ‘0’ binario,
con 3 bit per cella. mentre lo stato cristallino a bassa resistenza può
rappresentare un ‘1’.
POSSIBILITÀ DI SOSTITUZIONE Lo svantaggio principale della memoria PCM è
Mentre le memorie Flash continuano la loro la sensibilità alle alte temperature. Si degrada
riduzione progressiva nel medio e lungo termine, con l’utilizzo, ma molto più lentamente rispetto
c’è una costante richiesta di eventuali sostitu- a una memoria Flash, che ha una durata no-
ti a lungo termine, sia per le applicazioni auto- minale di circa 5.000 cicli di scrittura. La me-
nome sia per quelle integrate. La competizione moria PCM può garantire alte prestazioni, spe-
include trenta diverse tecnologie di memoria cialmente nelle applicazioni di scrittura intensi-
non volatile, che sono vagliate dalle aziende va perché offre tempi di commutazione rapidi,
specializzate in semiconduttori, dagli istituti di la possibilità di cambiare i bit senza dover prima
ricerca e dalle università, con diverse tecnolo- cancellare blocchi di memoria e, attualmente, è
gie che prevedono anche una fornitura in volumi in grado di raggiungere dimensioni di 40 nm.
relativamente piccoli. Quattro dei concorrenti Tra Micron Technologies e Samsung è in corso
principali, che offrono diversi vantaggi rispetto un’accesa competizione per produrre la prima
alle memorie Flash, ad esempio tempi di let- parte di una PCM a 1 Gbit; Samsung finora è ri-
tura/scrittura cento volte più rapidi e una resi- uscita a produrre una PRAM a 512 Mbit com-
stenza per i cicli di scrittura significativamente patibile con memoria Flash NOR per i palmari.
superiore, sono: la memoria PCM (Phase-
Change Memory), la memoria FeRAM o FRAM MEMORIA FRAM O FERAM (FERRO-
(Ferroelectric Random Access Memory), la ELECTRIC RANDOM ACCESS MEMORY)
memoria MRAM (Magnetoresistive Random La memoria FRAM ha una struttura simile alla
Access Memory) e la RAM resistiva (RRAM). memoria DRAM: la DRAM consiste in un trans-
86
86-87_info:fe 10-12-2012 10:20 Pagina 87
istor di accesso dielettrico e un nodo di stora- tunnelling e utilizza elettroni allineati (polarizzati).
ge basato su condensatore, mentre la FRAM Il vantaggio principale è la riduzione della quan-
utilizza materiale ferroelettrico, come il titana- tità di corrente necessaria per scrivere, cosa
to di piombozirconio (PZT), per formare un che la rende paragonabile al processo di lettura
condensatore ferroelettrico integrato nel corpo e consente di avere densità più elevate, ma la
del gate del transistor di accesso.
coerenza di spin deve essere mantenuta e il fun-
La struttura cristallina del materiale ferroelettrico
zionamento ad alta velocità richiede comunque
permette la formazione di dipoli elettrici se-
mipermanenti, che si allineano in base alla di- l’utilizzo di una corrente più elevata. Al mo-
rezione del campo elettrico esterno applicato e mento, con le nuove strutture in fase di speri-
mantengono la polarizzazione dopo che il cam- mentazione, si prevede di utilizzare questa
po è stato rimosso. Questo consente l’acces- tecnologia a meno di 65 nm.
so casuale a ciascun bit per le operazioni di let-
tura e scrittura con gli ‘0’ e ‘1’ binari memo- RAM RESISTIVA (RRAM O RERAM)
rizzati, sfruttando le due possibili polarizzazio- La RRAM si basa sulla commutazione elettro-
ni disponibili in ogni cella. nica (indotta da corrente o tensione) di un ma-
La memoria FRAM utilizza meno energia, ha teriale utilizzato come resistenza fra due stati re-
tempi di scrittura più rapidi e consente un nu- sistivi stabili (basso/alto). Questo viene fatto con
mero di cicli di scrittura-cancellazione ben su- l’improvvisa conduzione attraverso isolatori a
periore rispetto alla memoria Flash. Gli svantaggi
ossido. La RRAM passa da uno stato resistivo
includono basse densità di memoria, limitata ca-
all’altro tramite due operazioni: RESET, che
pacità di storage e costi elevati.
Fujitsu ha annunciato dispositivi FRAM pro- ripristina uno stato di alta resistenza da uno di
gettati per rimpiazzare le memorie Flash e bassa resistenza, e SET, che fa il contrario.
SRAM nelle applicazioni industriali, di fabbrica La RRAM può raggiungere meno di 30 nm e
e a bassa potenza, mentre Texas Instruments uno studio condotto sulle RRAM basate su
ha iniziato a offrire microcontrollori basati su ossidi ha persino suggerito che il movimento di
FRAM. ossigeno potrebbe avvenire a 2 nm. Secondo
l’Istituto di ricerca IMEC, i dispositivi RRAM
MEMORIA MRAM (MAGNETORESISTIVE con una struttura a elementi sovrapposti po-
RANDOM ACCESS MEMORY) trebbero essere immessi sul mercato a 11 nm,
La MRAM utilizza elementi di archiviazione ma- con la Flash ‘SONOS’ come fase intermedia ai
gnetici formati da due piastre ferromagneti- nodi da 17 e 14 nm. La RRAM offre una velocità
che, entrambe in grado di immagazzinare un
di commutazione inferiore al nanosecondo e un
campo magnetico, separate da un sottile stra-
ridotto consumo energetico e garantisce la
to isolante. La struttura più semplice di una cel-
stabilità dei dati nonostante le alte temperature
la di memoria è quella di una valvola a spin. Una
delle piastre è un magnete permanente a po- e l’usura. La sua robustezza offre nuove op-
larità fissa, mentre l’altra ha un campo variabile portunità in mercati come quello automobilistico
che si adatta al campo esterno. I bit sono me- e nelle applicazioni integrate.
morizzati rappresentando un ‘1’ con le pia- Elpida, ad esempio, ha già sviluppato prototi-
stre della stessa polarità e uno ‘0’ con le piastre pi di RRAM, e ha l’obiettivo di produrne gran-
di polarità opposta. Una griglia di celle di que- di volumi nel 2013, con dispositivi che pro-
sto tipo forma un dispositivo di memoria. Que- pongono capacità dell’ordine di gigabit basa-
sta tecnologia promette di sostituire poten- ti su processi costruttivi a 30 nm.
zialmente non soltanto la memoria Flash, ma an-
che la DRAM e la SRAM. La MRAM, tuttavia, è E ANCORA NON SI VEDE LA FINE...
sensibile all’interferenza delle applicazioni di Tuttavia, nessuna di queste quattro tecnologie
coppia di lunga durata causate da campi ma-
è ancora riuscita a raggiungere una produzio-
gnetici esterni C.C.
ne di massa: sono tutte limitate a mercati di nic-
Nel 2012, Everspin, spin-off di Freescale Se-
miconductor, prevede di distribuire un volu- chia. La memoria Flash, dal canto suo, sembra
me di unità MRAM dell’ordine di milioni, ma sta in grado di continuare a ridurre le proprie di-
già sviluppando una tecnologia MRAM di se- mensioni ancora per svariate generazioni, per-
conda generazione, chiamata SST-MRAM (Spin ciò pare proprio che passerà ancora un bel
Transfer Torque MRAM). Questa tecnologia po’ di tempo prima di poter dire: “Il re è morto,
sostituisce lo strato isolante con una barriera al viva...”. Il resto lo conoscete.
87
88-97_imp&app - MikroPascal:FE 10-12-2012 10:57 Pagina 88
imparare & a
➲ imparare & approfondire
debouncing
In questa quarta puntata approfondiremo l’interfacciamento di contatti, parlando di tecniche
di debouncing di tipo hardware e firmware. In particolare, coglieremo l’occasione
per introdurre la Button Library. Completeremo quindi la discussione avviata nella scorsa
lezione sulle funzioni di delay e sul costrutto di ciclo FOR, introdurremo il costrutto CASE
e presenteremo, tramite esempi applicativi, le routine della Sound Library.
ome fatto nelle precedenti punta- concettualmente banale ma, se non te-
C
cedure e funzioni di libreria. Prendendo
te, proseguiamo lo studio del Mi- spunto da quanto esposto nella prece- nuto in debita considerazione, può co-
kroPascal PRO for PIC, cercan- dente lezione, approfondiremo l’inter- stituire causa di malfunzionamenti delle
do di bilanciare adeguatamente la tratta- facciamento di contatti parlando di tec- applicazioni firmware tutt’altro che tra-
zione teorica del linguaggio con esempi niche di debouncing sia di tipo hardware scurabili. Infatti, la commutazione mec-
pratici di programmazione e con riferi- sia di tipo firmware. In questo ambito in- canica o elettromeccanica di un contatto
menti circuitali utili a una comprensione or- trodurremo al lettore la Button Library. può generare una transizione dell’ingresso
ganica della materia anche da parte di co- Completeremo quindi la discussione av- del controllore da uno stato all’altro, pas-
loro che hanno poca esperienza in meri- viata nella scorsa lezione sulle funzioni sando elettricamente per un certo nu-
to. Questo approccio dovrebbe aiutare il di delay e sul costrutto di ciclo FOR e il- mero di transizioni spurie. Il tutto diventa
lettore a non incorrere in una acquisizio- lustreremo l’impiego del costrutto CASE tanto più evidente quanto meno rapida e
ne dei concetti approssimativa che pos- e delle routine della Sound Library. netta è la chiusura o l’apertura del con-
sa portare a un’applicazione pratica som- tatto. Il fenomeno è per questo ancora più
maria, se non addirittura poco corretta di IL DEBOUNCING evidente in presenza di interruttori e pul-
quanto appreso. Il debouncing è uno dei primi accorgi- santi manovrati manualmente.
Per questo cercheremo anche di bilanciare menti che è necessario adottare quando Per meglio comprendere il fenomeno, si
la presentazione di aspetti propri del lin- si acquisiscono in ingresso al controllore faccia riferimento a un pulsante o un in-
guaggio, come la sintassi, con concetti e stati logici derivanti dalla commutazione di terruttore inserito all’interno di un circui-
aspetti di carattere più direttamente ap- contatti, come quelli di interruttori, pulsanti to a pull-up come quello di figura 1. La
plicativi, spesso legati all’impiego di pro- o relè elettromeccanici. Il problema è transizione elettrica, dallo stato alto a
88
88-97_imp&app - MikroPascal:FE 10-12-2012 10:57 Pagina 89
& approfondire
di ANTONIO GIANNICO
quello basso durante la chiusura del con- tempo di rimbalzo, il regime di funziona- mo brevemente vantaggi e svantaggi, al fi-
tatto e viceversa, e da quello basso a mento del circuito in cui il contatto è in- ne di dare al lettore gli strumenti teorici e
quello alto durante l’apertura, non è idea- serito, il suo invecchiamento e quindi, in pratici per applicarli efficacemente.
le ma passa generalmente per una serie di generale, anche le condizioni ambientali.
rimbalzi elettrici che dipendono essen- Il tempo di rimbalzo assume in ogni caso, DEBOUNCING HARDWARE
zialmente dalla tipologia del contatto, dal nei circuiti elettronici, tipicamente valori Dal momento che la logica digitale in
fatto che si sta interrompendo eventual- compresi tra pochi millisecondi e alcune elettronica è sempre più spesso di tipo
mente una corrente pregressa che non decine di millisecondi. programmabile, il problema del deboun-
può azzerarsi istantaneamente e dalla La cosa basilare da comprendere è che un cing viene gestito prevalentemente per
modalità con cui lo stesso contatto viene rimbalzo elettrico può falsare completa- via firmware. In ogni caso è anche pos-
manovrato e quindi commutato. Poiché un mente la corretta acquisizione di uno sta- sibile gestire, in una certa misura, il pro-
pin di un controllore rileva come “0” logi- to logico da parte di un controllore e che blema con accorgimenti di tipo hardware.
co lo stato elettrico se questo è inferiore questo può a sua volta falsare l’evolu- La scelta del tipo di circuito di debouncing
a un certo valore V ILMAX e “1” logico se zione del flusso firmware. Il circuito a mi- da utilizzare è legata, in questo caso,
questo è superiore a un certo valore V IH- crocontrollore, in altre parole, assume principalmente al tipo di contatto (pul-
MIN , l’andamento spurio del segnale (fi- un funzionamento del tutto inaffidabile, sante singolo o doppio, relè elettromec-
gura 1) viene interpretato come una se- non essendo il controllore messo nelle canico) e alla reale necessità di filtrare i
quenza di transizioni da stato logico “0” a condizioni di distinguere correttamente rimbalzi stessi in funzione del modo in
stato logico “1” e viceversa, prima che si
le commutazioni reali da quelle spurie. Il cui il segnale che transita viene utilizzato
raggiunga una situazione stabile. Il tempo
rimbalzo potrebbe far evolvere lo stato del dal circuito. A seconda dei casi si possono
che intercorre tra l’istante in cui il contatto
processo firmware rapidamente dallo sta- utilizzare sia circuiti analogici impiegan-
viene interpretato come commutato per la
to 0 allo stato 2, quando invece il co- ti resistori e condensatori sia circuiti digitali
prima volta e quello in cui tale interpre-
mando realmente impartito prevedeva la a porte logiche o anche soluzioni ibride.
tazione diventa definitiva è detto “tempo
sola transizione dallo stato 0 allo stato 1. Come già detto, il rimbalzo elettrico si
di rimbalzo”. Il significato fisico di questo
Per avere un’idea di quanto una situa- presenta spesso sotto forma di impulsi
parametro è quello per cui è necessa-
zione del genere rischi di essere frequente brevi e ripidi, motivo per cui il suo spettro è
rio, dopo la prima transizione, attendere
nelle applicazioni, si pensi a quanta elet- concentrato alle alte frequenze. Questo
questo tempo affinché lo stato letto sul pin
tronica è interfacciata verso all’utente at- suggerisce di contrastare il problema me-
del controllore sia effettivamente stabile.
traverso pulsanti. È necessario quindi diante l’impiego di un filtro passa-basso e
L’analisi del fenomeno tramite un semplice
“filtrare” in qualche modo gli eventi di quindi in sostanza di un circuito RC che,
oscilloscopio mostra frequentemente, al
rimbalzo elettrico rendendoli innocui. A ta- per sua natura, tende a eliminare le com-
posto di una commutazione netta e con-
tinua, il passaggio da uno stato all’altro at- le scopo si adottano le cosiddette tecni- ponenti in alta frequenza. Tradurre in im-
traverso un treno di impulsi più stretti e ri- che di debouncing. Alcune di queste so- plementazione circuitale questo accor-
pidi. Al fenomeno contribuiscono, tra le al- no di tipo prettamente hardware, altre gimento significa semplicemente inserire,
tre cose, gli effetti propri di rimbalzo mec- sono invece di natura firmware. Le se- in parallelo al contatto, un condensatore
canico della lamina di contatto e il de- conde possono essere implementate sia di capacità adeguata (figura 2B). Il valore
gradamento, per invecchiamento o per direttamente dal programmatore sia fa- della resistenza di limitazione e della ca-
l’accumulo di sporcizia o ossidazione, cendo uso di funzioni di libreria. Di seguito pacità del condensatore devono essere tali
della capacità di condurre corrente elet- ne illustreremo alcune e ne analizzere- da imprimere al circuito RC una costante
trica da parte del contatto.
La fisica del fenomeno elettrico del rim-
balzo e quindi il tempo di rimbalzo, come
già detto, dipendono essenzialmente dal-
la tipologia, dal modello del contatto e dal-
la modalità con cui esso viene manovra-
to. Fissati questi parametri tuttavia, il
tempo di debouncing non può essere
considerato deterministico poiché ripe-
tendo l’evento, per esempio di chiusura
manuale di un pulsante, potrebbero ma-
nifestarsi tempi di rimbalzo differenti da
una ripetizione all’altra. Va inoltre consi- Figura 2: A) Circuito soggetto a rimbalzo elettrico; B) circuito con debouncing RC; C) circuito con debouncing RC
derato, tra i parametri che determinano il e Trigger di Shmitt.
89
88-97_imp&app - MikroPascal:FE 10-12-2012 10:58 Pagina 90
di tempo T=RC dell’ordine del tempo di una condizione di memoria per cui l’uscita
debouncing (tipicamente alcune decine di resta a livello “0”. Appena S negato “toc-
millisecondi). Detto in termini più sem- ca” per la prima volta lo stato zero (il
plicistici, se il contatto risulta aperto la ca- contatto si sta chiudendo su S negato
pacità è carica; chiudendo il contatto il po- appunto), l’uscita scatta a livello alto “1”.
tenziale su di esso segue la scarica del Eventuali instabilità su S durante la chiu-
condensatore, contrastando effetti di rim- sura vengono nuovamente neutralizzate
balzo; allo stesso modo, chiudendo il per l’effetto di memoria del latch.
contatto, giunti a un certo valore di cari- L’efficacia del latch SR come antirimbalzo
ca, un rimbalzo di ritorno verso il livello lo- sta quindi tutta nella sua intrinseca capa-
gico zero non può avvenire poiché risulta cità di mantenere uno stato di memoria in
Figura 3: circuito antirimbalzo a latch RS. Si tenga in
impedito dall’effetto di tenuta del con- considerazione la tabella di verità del latch (tabella 1) per presenza di specifiche commutazioni. Sen-
densatore che imprime una certa inerzia una corretta interpretazione del suo funzionamento e za dilungarci oltre segnaliamo che, sebbene
dell’effetto di debouncing che se ne ottiene.
al rimbalzo stesso contrastandolo. A ta- di uso meno frequente, anche i circuiti
le scopo è anche possibile porre una pic- monostabili possono essere utilizzati come
cola resistenza in serie al pulsante stesso facciamento del controllore al contatto
circuiti di debouncing. Questi presenta-
nel circuito di figura 2B. attraverso un latch SR (figura 3). Allo
no oltretutto il vantaggio di non necessitare
Il debouncing così ottenuto può essere re- scopo possono essere utilizzate porte
di doppio segnale (Set e Reset).
so ancora più efficace inserendo tra il NAND oppure porte NOR. L’antirimbalzo
circuito RC e il pin del controllore un cir- si ottiene grazie al fatto che un latch SR
cuito comparatore a Trigger di Shmitt, in mantiene stabile lo stato dell’uscita indi- DEBOUNCING FIRMWARE
grado di introdurre un effetto di squa- pendentemente dal numero di impulsi ri- Compreso il modo in cui il fenomeno si
dratura finale del segnale grazie all’in- cevuti sul corrispondente ingresso, al- manifesta, appare ovvio pensare, come
troduzione di un’isteresi che filtra di fatto meno fino a quando tali impulsi interes- tecnica da adottare per contrastare il
le residue oscillazioni. Il circuito assume al- sano un solo ingresso. Circuitalmente, rimbalzo elettrico, a quella che si basa su
lora l’aspetto di figura 2C. I vantaggi di un l’unico inconveniente sta nel fatto che, per tre semplici operazioni:
tale approccio, utilizzato dai circuitisti invertire il segnale in uscita, l’impulso di 1) intercettare la prima transizione dello
soprattutto in passato, quando le logi- commutazione va applicato su due di- stato logico;
che firmware erano meno diffuse, risie- versi ingressi (il Set e il Reset appunto), 2) attendere alcune decine di millisecon-
dono soprattutto nel ridotto costo im- come mostrato in figura 3. Ne consegue di che le transizioni spurie si esauriscano;
plementativo legato all’elevata semplici- un’immunità al disturbo maggiore rispet- 3) acquisire lo stato logico che a questo
tà circuitale. to a quanto è possibile ottenere con i punto può essere considerato stabile.
Per contro, la tecnica non consente una circuiti analogici RC, a scapito, tuttavia, di L’operazione al punto 2 è quella fonda-
soluzione totale del problema in presen- una complessità circuitale leggermente su- mentale per la riuscita della strategia in
za di commutazioni particolarmente ru- periore. Il suo impiego dipende da diver- quanto è quella che consente di filtrare
morose, specie in quei casi in cui l’au- se considerazioni alcune delle quali di temporalmente le transizioni spurie in
mento della costante di tempo RC a valori opportunità (si pensi al caso in cui nella la maniera che esse vengano ignorate dal
troppo elevati, nel tentativo di rendere realizzazione dello schema elettrico del cir- punto di vista del flusso firmware del mi-
sicura l’interpretazione, porta a introdur- cuito a microcontrollore, almeno due por- crocontrollore. Ovviamente, è necessario
re ritardi non accettabili nell’esecuzione del te NAND o NOR di un integrato restino li- fissare in maniera appropriata il tempo
processo. bere e quindi utilizzabili allo scopo, senza di ritardo con cui eseguire il filtraggio
Una differente tecnica di debouncing l’aggiunta di ulteriore componentistica temporale dei rimbalzi. Il tempo di attesa
hardware è quella che prevede l’inter- attiva). Facendo riferimento a un latch deve infatti essere più lungo di quello di
SR a porte NAND, quello che accade
può essere dedotto dall’analisi del cir-
TABELLA 1 cuito di figura 3 e della tabella di verità
dello stesso circuito (tabella 1).
S̄ R̄ Q
La linea sulla quale si vuole rilevare la
0 0 N.V. (non valida)
presenza di un “1” è quella sull’ingresso S
0 1 1 negato. Posto che R negato si trovi con-
1 0 0 nesso a GND attraverso il contatto (S
1 1 Q (Memoria) negato è quindi a livello alto), lo stato Figura 4: esempio di impiego della funzione di libreria
dell’uscita è di reset, cioè Q=0. In queste Button. Quando RB0 transita da livello logico “1” a livello
Tabella 1: tabella di verità di un Latch SR con porte condizioni, una commutazione del con- logico “0”, la porta D viene invertita nello stato logico dei
NAND. Si noti come l’effetto di debouncing sia reso suoi bit. RB0 deve essere stato preventivamente
possibile dalla condizione di memoria. tatto comporta su R negato, durante il dis- configurato come ingresso mentre la porta D deve essere
tacco, il passaggio, anche ripetuto, per stata preventivamente configurata come uscita.
90
88-97_imp&app - MikroPascal:FE 10-12-2012 10:58 Pagina 91
rimbalzo ma più breve del tempo per il che si tratti di un pulsante normalmente
quale lo stato che segue la transizione per- aperto il cui stato di chiusura determini
mane disponibile sul pin di ingresso del una transizione da livello 1 a livello 0, si
controllore. Una routine che agisce se- dovrà scrivere un blocco di codice come
condo la logica appena esposta può es- quello riportato in figura 4.
sere scritta abbastanza agevolmente dal Il blocco di codice presentato in questo
programmatore. Nel caso si impieghi Mi- esempio inverte lo stato della porta D al
kroPascal PRO for PIC è anche possibile verificarsi della transizione. Ovviamente,
utilizzare la funzione di libreria Button, Figura 5: esempio di ciclo iterativo FOR applicato a un affinché il tutto funzioni correttamente è
appositamente pensata per interfacciare blocco di codice che scambia ordinatamente il contenuto
di un vettore a di 10 elementi con quello di un vettore
anche necessario che la porta D sia sta-
contatti e di cui parleremo nel successivo b di pari dimensione. ta preventivamente configurata come
paragrafo. Ovviamente, un blocco di co- uscita. È importante osservare che il tem-
dice che esegue il controllo dello stato lo- po inserito nell’istruzione (parametro time)
gico su un determinato pin di ingresso, se- BUTTON LIBRARY
genera un’attesa a tutti gli effetti anche per
condo la logica appena esposta, com- La Button Library rende disponibile una
le istruzioni che seguono, la cui esecu-
porta una limitazione. Infatti, se il con- routine per rilevare la pressione di un pul-
zione, di conseguenza, risulta ritardata.
trollo dell’ingresso è inserito in un codice sante e prevenire, via firmware, gli effetti
Per questo motivo la routine va impie-
più ampio che esegue anche altre ope- di rimbalzo che possono verificarsi in ta-
gata con attenzione. Si sottolinea inoltre
razioni, l’attesa necessaria per filtrare i rim- li occasioni. La libreria è composta dalla
come il parametro time è anche esso di ti-
balzi potrebbe inficiare la corretta ese- sola funzione Button, il cui prototipo è il
po byte, per cui può assumere valori
cuzione con la corretta tempistica delle al- seguente:
compresi tra 0 e 255 (millisecondi). Non è
tre operazioni. In questo caso potrebbe
function Button (var port : byte; pin, time, di utilità pensare a valori superiori dal
essere opportuno intercettare la trans-
active_state : byte) : byte; momento che il rimbalzo elettrico tipica-
izione sfruttando la capacità del PIC di ge-
mente non raggiunge mai valori dell’ordine
nerare delle interruzioni (interrupt) in oc-
La funzione restituisce rispettivamente: delle centinaia di millisecondi.
casione di un cambiamento di stato che si
manifesta sui pin della porta B. Nel caso • il valore 255 se il pin è nello stato attivo
del PIC 16F877, per esempio, è possibi- per un determinato periodo; LE ROUTINE DI BUILT-IN
le sfruttare in tal senso il pin RB0/INT • 0 negli altri casi. Tra le diverse categorie di routine di libreria
oppure uno dei pin RB4, RB5, RB6 ed Essa consente in tal modo di filtrare l’ef- che MikroPascal PRO for PIC mette a
RB7 (interrupt on change). Ci limitiamo, fetto di instabilità, cioè di rimbalzo del disposizione vi sono le cosiddette routine
per il momento, a quanto detto; l’impiego contatto, consentendo un efficace anti- di built-in. Esempi di routine di built-in
di interrupt verrà trattato in maniera più bouncing. Per un corretto impiego della sono Delay_us e Delay_ms, utilizzate ne-
dettagliata in successive puntate del cor- funzione è necessario specificare rispet- gli esempi della scorsa puntata. Si tratta,
so. Una tecnica altrettanto efficace e so- tivamente: in altri termini, di routine implementate a
stanzialmente equivalente di debouncing • la porta cui appartiene il pin su cui ese-
è quella di effettuare letture successive in guire l’acquisizione con debouncing (para-
rapida sequenza dello stato del segnale metro port);
senza interrompere con attese il flusso di • il pin di interesse all’interno di detta
programma e decidere che la commu- porta (parametro pin che può assumere
tazione è avvenuta quando i valori letti si valori nel range 0..7);
stabilizzano. • il parametro time che rappresenta il
Appare evidente come il principale svan- periodo di debouncing espresso in milli-
taggio applicativo delle tecniche di de- secondi;
bouncing hardware, rispetto a quella firm- • il parametro active_state che può as-
ware, stia nel fatto di dover calibrare ade- sumere valore 0 oppure 1 a seconda che
guatamente la rete RC e il trigger di Shmitt il contatto o pulsante che determina fisi-
e nel dover prevedere componentistica ul- camente la transizione dello stato logico
teriore on-board, con conseguente au- sia attivo sullo stato logico 0 oppure sul-
mento dell’area occupata dal circuito. lo stato logico 1.
Per contro, una soluzione firmware è cer- Ovviamente è necessario, per il suo cor-
tamente più flessibile poiché può essere retto impiego, configurare il pin di interesse
facilmente adeguata al comportamento come ingresso. Se, per esempio, si vuo-
dello specifico contatto e del suo tempo le monitorare il pin RB0, sul quale si sup- Figura 6: la porzione di codice riportata in A) viene intesa
dal compilatore come esplicitato in B). Completamente
di debouncing senza introdurre compli- pone che sia connesso un pulsante, e si differente è invece, dal punto di vista algoritmico e quindi
cazioni circuitali. intende leggerne lo stato, supponendo esecutivo, il significato della porzione di codice C).
91
88-97_imp&app - MikroPascal:FE 10-12-2012 10:58 Pagina 92
livello di codice compilato come blocchi ra il cui prototipo è il seguente: Questa analisi aiuta inoltre a comprendere
“inline”, nel senso che il relativo blocco procedure VDelay_Advanced_ms(ti- perché, sebbene Delay_Cyc, VDelay_ms
compilato viene collocato direttamente me_ms, Current_Fosc_kHz: word); e VDelay_Advanced_ms siano a volte ri-
in corrispondenza del punto di chiamata Non restituisce alcun valore e consente di portate nell’help in linea tra le routine di
della routine. Ciò nasconde un piccolo generare un ritardo firmware di durata, built-in, sono in realtà più simili a vere e
dettaglio che è opportuno sottolineare. espressa in millisecondi, (ms) pari al valore proprie funzioni di libreria.
Da un punto di vista di firmware compilato della variabile time_ms. Il valore del delay
aggiungere una serie di Delay_ms o De- generato non è accurato come quello ot- CLASSIFICAZIONE DELLE ISTRUZIONI
lay_us in un codice di programma non è tenuto con Delay_ms. Per esempio, il se-
Nelle precedenti lezioni abbiamo accen-
come aggiungere una chiamata ma è guente blocco di codice:
nato alla struttura generale di un codice Mi-
piuttosto come aggiungere altrettante pause := 1000;
kroPascal e abbiamo cominciato a utiliz-
volte la stessa porzione di codice com- fosc := 10000;
zare concretamente le prime istruzioni. Il
pilato. Questo aspetto può essere inda- VDelay_Advanced_ms(pause, fosc);
concetto ci è ormai abbastanza familiare.
gato facilmente, scrivendo un semplice consente di ottenere un ritardo firmware
Cerchiamo di approfondire la questione. Le
programma che contenga tra le parole di circa 1000 ms = 1 secondo.
istruzioni di un linguaggio di programma-
riservate begin ed end sole istruzioni de- Delay_Cyc. È una procedura il cui pro-
zione come il MikroPascal definiscono, e
lay_us, per esempio. Se ne aumentiamo totipo è il seguente:
quindi codificano, mediante costrutti ad al-
li numero vediamo crescere proporzio- procedure Delay_Cyc(Cycles_div_by_10
to livello, azioni ben precise all’interno di un
nalmente la quantità di memoria di pro- : byte);
algoritmo e consentono di formare, nel
gramma occupata, come si deduce os- Essa non restituisce alcun valore e con-
complesso, l’algoritmo stesso. Ogni istru-
servando, nell’area di notifica Messages, sente di generare un ritardo basato sulla
zione si basa su una specifica sintassi. A
i valori riportati alle voci “Used ROOM frequenza di clock. Il ritardo dura un tem-
prescindere dalla sintassi della specifica
(program words)” e “free ROOM (pro- po pari a dieci cicli di MCU. Una limitazione
istruzione, il compilatore ha bisogno di
gram words)” in seguito a compilazione nel suo impiego sta nel fatto che il valore
riconoscere le istruzioni al fine di poterle
del codice. D’altro canto, come si può fa- che il parametro Cycles_div_by_10 può as-
codificare in linguaggio macchina attra-
cilmente verificare, l’impiego delle routine sumere deve appartenere al range 2..257.
verso la cosiddetta compilazione. A tale
delay_ms o delay_us non necessita di Per esempio, la seguente riga di codice:
scopo, esso necessita di distinguere, pri-
alcuna spunta all’interno della Library Delay_Cyc(10);
ma di tutto, l’inizio e la fine di ciascuna
Manager, contrariamente a quanto ne- consente di ottenere 10 volte un ritardo
istruzione. In MikroPascal, l’elemento ter-
cessario quando si impiega una funzione pari a dieci cicli di MCU cioè, nel com-
minatore che consente questa operazio-
di libreria. Ciò accade proprio perché si plesso, un ritardo pari a 100 cicli di MCU.
ne è il punto e virgola (;), pertanto cia-
tratta di routine di built-in.
scuna istruzione si distingue dalla suc-
Approfondimento sulle routine di delay: cessiva grazie all’interposizione di questo
Routine di delay Vdelay_Advanced_ms e __Lib_Delays.mpas segno di punteggiatura.
Delay_Cyc È piuttosto interessante analizzare il li- Da un punto di vista esecutivo, terminata
Nella scorsa lezione abbiamo preso con- stato del file __Lib_Delays.mpas, che è un’istruzione, il controllore esegue la suc-
fidenza con le routine di Built-in Delay_ms, possibile trovare all’interno della direc- cessiva, a meno che la sequenzialità del
Delay_us e Vdelay_ms. Quest’ultima può tory Mikroelektronika\mikroPascal PRO flusso di programma non sia intanto sta-
accettare, come argomento, tanto una for PIC\Uses\P16 per i controllori della se- ta modificata da un’istruzione di salto.
variabile word quanto una costante che ri- rie 16 e in Mikroelektronika\mikroPascal Da un punto di vista della classificazione
entri nel range di variazione di una word PRO for PIC\Uses\P18 per i controllori del- delle istruzioni possiamo più precisa-
(corrispondente a 16 bit). Mentre Vde- la serie 18. L’analisi del listato è interes- mente distinguere:
lay_ms può quindi essere utilizzata al po- sante per due principali motivi: • istruzioni di assegnazione (Assignment
sto di Delay_ms, non è vera la cosa reci- 1) consente di comprendere più in pro- Statements);
proca. Questo è del resto facilmente ri- fondità come siano strutturate e imple-
scontrabile nel modo in cui, all’interno mentate le procedure di delay Delay_Cyc,
dell’help in linea vengono definiti i proto- VDelay_ms e VDelay_Advanced_ms e
tipi delle due routine: come esse contengano istruzioni asm
• procedure Delay_ms(time_in_ms: const come “nop” (no operation) per imple-
dword); mentare il ritardo;
• procedure Vdelay_ms(time_in_ms : 2) consente di osservare come sia sem-
word) plice implementare una procedura che
Completiamo l’analisi delle routine di de- renda possibile generare un ritardo di
Figura 7: sintassi dell’istruzione di selezione
lay parlando delle routine Vdelay_Ad- qualunque durata utilizzando i due soli “Case…of…”. Nel caso in cui venga utilizzato il ramo else,
vanced_ms e Delay_Cyc. “mattoni fondamentali” Delay_us e De- l’ultima istruzione che lo precede deve terminare senza il
punto e virgola.
Vdelay_Advanced_ms. È una procedu- lay_ms.
92
88-97_imp&app - MikroPascal:FE 10-12-2012 10:59 Pagina 93
• istruzioni condizionali (Conditional Sta- la dichiarazione delle costanti (cambia il Istruzioni IF annidate
tements); contesto; avremo modo di comprendere L’impiego di istruzioni annidate richiede
• istruzioni di iterazione (Iteration State- meglio questo aspetto al momento op- una certa attenzione in quanto un cattivo
ments o Loop); portuno) e da quello di “:” utilizzato per la uso può determinare un comportamento
• istruzioni di salto (Jump Statements) dichiarazione delle variabili. scorretto del programma senza che vi sia
tra cui è possibile annoverare le chiama- Avere ben chiari e distinti questi concet- formalmente alcun errore dal punto di vista
te a procedure (procedure call); ti ci mette fin da subito nelle condizioni di della sintassi così come analizzata dal
• istruzioni assembler (asm Statement). non stilare con fare incerto codici dal compilatore. Per esempio, l’espressione di
Esistono poi i cosiddetti blocchi di istru- comportamento esecutivo alquanto im- figura 6A viene intesa dal compilatore
zioni (Compound Statements) che non prevedibile, nel caso in cui non sia il com- come riportato in figura 6B, che è qual-
rappresentano, tuttavia, un ulteriore ti- pilatore stesso a segnalare errori o war- cosa di completamente differente da quan-
po di istruzione. ning in fase di compilazione. to riportato in figura 6C. L’errore per que-
Ciascuna istruzione, o blocco di istru- sto non può essere “scovato” dal compi-
zioni, può a sua volta essere inserita in al- Istruzioni condizionate (Conditional Statement) latore in fase di compilazione, essendo
tre istruzioni strutturate dello stesso tipo tutti e tre i pezzi di codice perfettamente
Le istruzioni condizionate (o istruzioni di
tra cui salti, loop e diramazioni condizio- corretti da un punto di vista sintattico, ma
selezione) consentono di direzionare il
nate. Di seguito analizziamo singolar- deve essere prevenuto direttamente dal
flusso di codice in una direzione piuttosto
mente le tipologie di istruzioni appena programmatore facendo attenzione al si-
che un’altra, in base al verificarsi di una
elencate. Questa analisi è interessante gnificato, da un punto di vista algoritmico,
condizione piuttosto che un’altra. Nella
poiché aiuta a comprendere come l’in- di quanto si sta scrivendo.
scorsa lezione abbiamo preso confiden-
sieme di istruzioni di un linguaggio di alto
za con l’istruzione IF-THEN-ELSE; in real-
livello sia più elaborato di quello di un Blocchi di codice (Compound Statements)
tà MikroPascal, come molti altri linguag-
linguaggio di basso livello, specie per Un blocco di codice è una sequenza di
gi strutturati, prevede due tipi di istru-
quanto attiene il controllo del flusso. istruzioni comprese tra le parole chiave be-
zioni condizionate:
• istruzione if..then..else; gin ed end:
Istruzioni di assegnazione • istruzione case..of..; begin
(Assignment Statements) Approfondiamone i tratti distintivi al fine di
sequenza di istruzioni
Un valore può essere assegnato solo ad end;
poterne effettuare un corretto impiego.
una variabile in quanto contenitore di va- Vale la solita regola per cui ciascuna istru-
lori cui è riservata fisicamente, dal com- zione all’interno del blocco si conclude
pilatore, una ben precisa locazione di
Istruzione IF con un punto e virgola.
Questo tipo di istruzione condizionata è
memoria. La forma più generale che un’i- Da un punto di vista del flusso di pro-
stata già trattata nella scorsa lezione. Ci li-
struzione di assegnazione può assumere gramma, un blocco di istruzioni può a
in MikroPascal è la seguente: mitiamo per questo a ricordarne la sintassi: tutti gli effetti essere considerato come
variabile := espressione; if espressione then istruzione_1 [else un’unica macroistruzione. Il blocco può al-
È importante osservare che non si è scrit- istruzione_2]; lora essere condizionato alla pari di una
to “variabile :=valore;” che rappresenta Con le due parentesi quadre stiamo indi- singola istruzione mediante il costrutto
solo un sottocaso della precedente ma cando che la porzione di codice contenuta IF, oppure essere inserito in istruzioni di ci-
“variabile := espressione” poiché con il potrebbe anche non essere presente. In clo. Per esempio, un ciclo FOR potrebbe
termine espressione si intende, più in ge- questo caso (e solo in questo) istruzione_1 rappresentare l’iterazione su un intero
nerale, un’espressione che consente di termina con il punto e virgola. Al posto blocco di codice, come mostrato nell’e-
calcolare un valore, a partire da determinati delle due istruzioni potremmo anche ave- sempio di figura 5. Blocchi possono inol-
suoi argomenti. Ovviamente, la variabile de- re dei blocchi di codice. In questo caso tre essere nidificati l’uno dentro l’altro.
stinata a contenere il valore deve appar- l’esecuzione dell’intero blocco risulta Quanto mostrato per il ciclo FOR, in me-
tenere a un tipo opportunamente dichia- condizionata al verificarsi della condizio- rito ai blocchi di codice, può esser detto
rato, e lo stesso dicasi per le variabili con- ne. È inoltre utile sottolineare come in relazione alle istruzioni di controllo “IF..
tenute all’interno dell’espressione. “espressione”, dal punto di vista esecutivo THEN..ELSE”, “ WHILE…DO” e “RE-
È importante osservare che l’operatore di del codice, altro non è che un valore boo- PEAT…UNTIL” (le ultime due saranno
assegnazione “:=” è diverso dall’operatore leano risultato dell’elaborazione stessa trattate in lezioni successive). Si noti co-
“=” che invece è un operatore di relazio- dell’espressione. Inoltre è importante ri- me lo stralcio di codice mostrato come
ne impiegato in istruzioni che consentono cordare che la parola riservata else non esempio in figura 5 altro non sia che un
di verificare l’uguaglianza, per esempio, tra deve mai essere preceduta da punto e vir- ciclo che consente di scambiare gli ele-
il valore contenuto in una variabile e una gola (;) che indica invece la fine di una menti di un vettore a di dieci elementi
costante. istruzione, pena l’inevitabile errore di con i corrispondenti elementi del vettore
È opportuno notare che l’operatore è an- compilazione che MikroPascal notifica b composto da altrettanti elementi.
che differente da quello di “=” utilizzato per all’interno dell’area Messages. L’operazione è possibile solo impiegando
93
88-97_imp&app - MikroPascal:FE 10-12-2012 10:59 Pagina 94
94
88-97_imp&app - MikroPascal:FE 10-12-2012 10:59 Pagina 95
Figura 10: listato del codice di esempio Esempio1-Sound. Si noti in particolare: 1. la modularità del codice ottenuta attraverso l’impiego di procedure di libreria o definite dal
programmatore; 2. l’antibouncing ottenuto attraverso l’impiego della routine della Button Library; 3. le modalità di impiego delle procedure della Sound Library.
to). Prima della prima iterazione, il conta- s := 0; suono e non restituisce alcun valore. Per
tore viene impostato al valore iniziale, nel for i := 0 to 9 do una corretta configurazione è necessario
corso delle iterazioni invece viene incre- s := s + a[i] * b[i]; definire i seguenti parametri:
mentato o decrementato fino a raggiun- Il ciclo iterativo ha termine quando il con- • snd_port: porta di uscita su cui generare
gere il valore finale, evento che determina tatore raggiunge o supera valore_finale. È il suono;
l’uscita dal ciclo. Si sottolinea che per importante osservare che un modo, a • snd_pin: pin della suddetta porta su
variabile intera si intende, in questo caso, volte più leggibile, di creare cicli è quello cui generare il suono.
una variabile i cui valori possono essere or- di utilizzare il costrutto While che può Per esempio, con la seguente istruzione:
dinati in maniera crescente o decrescen- anche assumere la forma di ciclo infinito Sound_Init(PORTC, 3);
te. Può trattarsi pertanto di integer, byte, “While TRUE… do…”, oppure il costrutto si configura per la generazione del suono
char, short, word, dword e longint ma Repeat di cui parleremo in lezioni suc- la porta RC3.
non di real. Nel caso in cui si dichiari la va- cessive.
riabile contatore come real, in fase di Sound_Play
compilazione, il contatore notifica infatti il SOUND LIBRARY Anche in questo caso si tratta di una pro-
seguente errore “304 Syntax error: Ex- MikroPascal PRO for PIC dispone di una cedura il cui prototipo è il seguente:
pected integral type but real found”. Va- libreria (Sound Library) che può essere uti- procedure Sound_Play(freq_in_hz, du-
lore_finale e valore_iniziale, che sono va- lizzata dal programmatore per generare ration_ms : word);
lori dello stesso tipo di contatore, ven- suoni all’interno delle applicazioni. A par- Essa consente di generare un’onda qua-
gono ricalcolati ogni volta che il ciclo ri- te la generazione del segnale, va detto che dra su di uno specifico pin e non resti-
comincia. In altre parole, può trattarsi di va- affinché il suono possa essere ascoltato tuisce alcun valore. Per un corretto im-
lori interi definiti oppure di una variabile op- è necessario disporre di uno speaker, piego è necessario specificare i seguen-
pure di una espressione di valore intero per esempio un piezo-speaker connesso ti parametri:
(funzione di variabili di valore intero) col- opportunamente al controllore, come mo- • freq_in_hz: frequenza del segnale (onda
locata all’esterno o all’interno del blocco strato in figura 11. quadra) espresso in Hertz (Hz);
di codice eseguito nel loop (figura 9). La libreria è composta essenzialmente • duration_ms: durata del segnale alla
Valore_finale e valore_iniziale possono di due funzioni: frequenza data espressa in millisecondi
inoltre essere espressioni calcolabili al • Sound_Init; (ms).
momento della compilazione (per esempio • Sound_Play. La massima frequenza, espressa in Hertz,
la somma di un valore e una costante de- Le analizziamo brevemente al fine di chia- che è possibile generare dalla funzione è:
finita in testa al listato di codice) oppure rirne le corrette modalità di impiego. Freq_max = Fosc/(80*3)
calcolabili solo a runtime all’esterno del ci- mentre la minima è data da
clo prima del suo inizio. Sound_Init Freq_min = Fosc/(80*255)
Se la lista di istruzioni è composta da più di Si tratta di una procedura il cui prototipo La frequenza realmente generata può dif-
una istruzione allora il blocco è racchiuso risulta il seguente: ferire da quella impostata attraverso il
tra le parole chiave begin ed end. Di se- procedure Sound_Init(var snd_port : prametro freq_in_hz a causa di appros-
guito un esempio nel quale viene calcolato byte; snd_pin : byte); simazioni a valori interi che derivano dal
il prodotto scalare tra due vettori a e b di Essa consente di configurare il corretto pin processo di generazione della forma d’on-
lunghezza 10. del controllore per la generazione del da stessa.
95
88-97_imp&app - MikroPascal:FE 10-12-2012 10:59 Pagina 96
Esempio 1-Sound
Il codice di programma (figura 10) mostra
un esempio di impiego delle procedure
della Sound Library. Si nota, in particola-
re, il corpo principale del programma (ci-
clo while TRUE) che contiene una serie di
istruzioni IF le quali non fanno altro che in-
tercettare il pulsante premuto al fine di da-
re avvio alla generazione di una ben pre-
cisa nota o melodia che presenti una ben Figura 12: esempio di generatore d’onda quadra
implementato attraverso l’impiego della Sound Library.
precisa durata. La frequenza viene selezionata attraverso i pin RB0, RB1,
L’antibouncing è effettuato utilizzando la RB2 sui quali insistono tre microswitch. Possono in
procedura Button della Button Library. Il questo modo essere codificate 8 differenti frequenze
Figura 11-Schema elettrico cui fa riferimento il firmware
dell’onda quadra.
dell’Esempio 1-Sound il cui listato è riportato in figura 10. ciclo while che segue ciascuna genera-
Non si è riportato in maniera esplicita il connettore di
zione di tono o di melodia serve a con- una applicazione già presentata nella
programmazione del controllore con i relativi jumper di
selezione, la parte del circuito oscillatore esterna al sentire all’utente il rilascio del pulsante. scorsa lezione. Per lo schema elettrico
controllore e il pulsante di reset. Per tali dettagli si faccia Ciascun tono e ciascuna melodia richia- dell’applicazione si faccia riferimento a
riferimento al circuito di figura 13 che, pur essendo
mata all’interno del ciclo principale di figura 13.
relativo all’esempio successivo, non differisce dal
presente per quanto riguarda questi dettagli [4]. programma è preventivamente definita
come procedura. Ciò conferisce al codi-
ESEMPIO 3-SQUAREGEN2
ce una struttura ordinata e modulare. Im-
La routine può essere adeguatamente Questo esempio (figura 14) mostra come
portanti risultano le inizializzazioni che
impiegata solo se si effettua preventiva- un codice del tipo mostrato in Esempio 1
riguardano l’impiego della procedura di li-
mente la necessaria configurazione at- possa essere reso ancora più compatto.
breria Sound_play e la definizione degli in-
traverso la procedura Sound_Init. Per Qualunque sia il valore intero impostato
gressi del controllore. Per lo schema elet-
esempio scrivendo: sulla porta B, sul pin RA0 è generata un’on-
trico di riferimento dell’applicazione si ri-
Sound_Play(1000, 100); da quadra di frequenza pari al valore intero
manda alla figura 11.
dopo l’inizializzazione (routine Sound_Init), contenuto in PortB moltiplicato per cento.
si genera, a runtime, un’onda quadra di L’impiego del piezo-speaker è legato so-
frequenza 1000 Hz = 1 kHz e durata tem- Esempio 2-SquareGen prattutto al fatto che un componente del
Il codice (figura 12) mostra come sia genere assorbe una corrente di pochi
porale 100 millisecondi = 0,1 secondi.
semplice, attraverso l’impiego della Sound milliampere. Esso può pertanto essere
I codici di esempio mostrati nel successi-
Library, implementare un generatore di collegato direttamente al controllore sen-
vo paragrafo mostrano, tra le altre cose,
onda quadra con frequenza dell’onda za particolari accorgimenti. Normalmen-
l’impiego della routine Sound_Play(…).
impostabile. La frequenza viene selezio- te, si tratta di dispositivi di piccole di-
Essi sono in parte tratti dall’Help in linea di
nata attraverso i pin RB0, RB1, RB3 sui mensioni dall’impedenza che va da al-
MikroPacal Pro for PIC versione 5.61. La lo-
quali insistono tre microswitch con la cune centinaia di ohm alle frequenze più
ro analisi ci consente, da un lato com-
possibilità di codificare, pertanto, 8 com- alte (una decina di chilohertz circa), ad al-
prendere meglio l’impiego delle procedu-
binazioni e quindi 8 differenti frequenze cuni chiloohm alle frequenze più basse (al-
re di libreria Sound_Init() e Sound_Play() e
dell’onda quadra. I tre bit vengono estrat- cune centinaia di hertz). Diversamente,
dall’altra di cominciare a prendere confi-
ti dalla porta B grazie a una operazione di l’impiego di un piccolo altoparlante o di
denza con la strutturazione modulare di un
AND bit a bit (bitwise) con la maschera uno speaker di altra natura necessite-
programma ottenuta mediante chiamata di
00000111. rebbe per lo meno di essere collegato ai
procedure e/o funzioni di libreria o scritte
Il codice può essere modificato facil- pin del controllore attraverso un trans-
dallo stesso programmatore. mente e ampliato a tutte le possibili com- istor che riceva dal controllore il solo se-
binazioni degli otto bit componenti la por- gnale e che provveda a fornire potenza al-
ESEMPI APPLICATIVI ta di ingresso B. Si tratta di un modo di- lo speaker per la generazione del segna-
Concludiamo questa quarta puntata del verso ma anche più efficiente di scrivere le acustico.
96
88-97_imp&app - MikroPascal:FE 10-12-2012 11:00 Pagina 97
CONCLUSIONI
In questa quarta lezione del corso Mi-
kroPascal PRO for PIC abbiamo impa-
rato che qualora si voglia acquisire in in-
gresso a un controllore lo stato logico di
contatti o pulsanti, che per loro natura
Figura 13: schema elettrico di riferimento per le applicazioni firmware Esempio 2-SquareGen (figura 12) ed Esempio 3-
possono essere soggetti a rimbalzi, è
SquareGen2 (figura 14).
necessario adottare alcuni accorgimenti
impiegando tecniche di debouncing di
Come è possibile osservare dall’analisi natura hardware e/o firmware. In parti-
dei listati di esempio, le procedure pos- colare, chi impiega MikroPascal PRO for
sono essere considerate a tutti gli effetti PIC può utilizzare le funzioni della Button
dei sottoprogrammi. Il loro impiego faci- Library integrata nell’IDE MikroPascal.
lita l’organizzazione modulare del codice Abbiamo anche proseguito nell’analisi
e quindi un approccio strutturato e di tipo delle differenti categorie di istruzioni (istru-
top-down, utile anche in fase di modifica zioni di assegnazione, istruzioni condi-
Figura 14: esempio 3-SquareGen2. Il codice consente di o manutenzione del firmware da parte zionali, istruzioni di iterazione, chiamate a
generare un’onda quadra la cui frequenza espressa in
dello stesso programmatore o di pro- procedure). L’analisi della struttura dei
hertz è pari al valore impostato sulla porta B moltiplicato
per 100. grammatori terzi. Volendo fare un utile cicli FOR e del costrutto CASE ci ha con-
esercizio pratico si provi a stilare il codice sentito di dotarci degli strumenti necessari
dei suddetti esempi senza fare uso delle a scrivere in forma più efficace alcuni co-
procedure composte dal programmatore dici di esempio che traggono spunto an-
ma utilizzando le sole procedure di libre- che da precedenti puntate.
ria, come la procedura Sound_play, di- Nel corso dell’esposizione abbiamo avu-
rettamente inserite nel blocco principale to a che fare con funzioni e procedure di
di programma. Vi accorgerete facilmente libreria, oltre che con procedure scritte dal
di come il codice diventi meno leggibile. programmatore. Abbiamo così compreso
Ancora due brevi osservazioni: come il loro impiego consenta un ap-
1) la prima riguarda la posizione in cui proccio modulare alla stesura del codice
vengono collocate le funzioni definite dal con tutti i vantaggi che ne derivano in
programmatore; esse devono sempre termini di leggibilità.
Figura 15: si noti come l’impiego di una routine di libreria precedere il blocco principale di codice;
necessiti di essere inserita nel progetto attraverso la
Library Manager (segno di spunta). In caso contrario, pur
2) la seconda riguarda l’impiego delle NELLE PROSSIME PUNTATE
essendo il listato di programma corretto da un punto di routine di libreria. È infatti sempre ne- Nel prosieguo del corso avremo modo
vista sintattico, il compilatore genera un errore in fase di cessario spuntare nella Library Manager di approfondire l’argomento della pro-
compilazione definendo la routine come non dichiarata la libreria di cui si fa uso. Per esempio, se
(Identifier … was not declared). grammazione modulare e di illustrare le
nell’impiegare la Sound Library questa differenze che esistono tra procedure e
funzioni, di introdurre nuove funzioni di li-
brerie e proporre nuovi esempi applicati-
PER approfondire... vi utili alla comprensione dei concetti.
Per essere più efficaci, non trascureremo
- [1] PIC16F87X Data Sheet 28/40-Pin 8-Bit CMOS FLASH Microcontrollers (www.mikrochip.com). di trattare l’interfacciamento fisico al con-
- [2] Sito di Microchip (www.mikrochip.com). trollore di dispositivi esterni di I/O e di
- [3] MikroPascal PRO for PIC v.5.61 demo e documentazione relativa (www.mikroe.com). realizzare applicazioni realmente utili da un
- [4] Help in linea MikroPascal Pro for PIC v. 5.61.
punto di vista pratico. ❏
97
98-99_cop robot:fe 10-12-2012 10:12 Pagina 96
OFFERTA
WiFi click Arduino Due
WiFi Plus Click è una scheda accessoria che utilizza il nuovo Arduino Due, la nuova arrivata nella
socket mikroBUS. Si tratta di una soluzione compatta per famiglia Arduino, è la prima scheda
aggiungere la comunicazione WiFi al vostro dispositivo. È basata su un processore a 32 bit
dotato di MRF24WB0MA - 2,4 GHz, modulo conforme IEEE ARM, l’Atmel SAM3X8E ARM
std. 802.11, come pure il Cortex-M3, che migliora tutte le
controller MCW1001 con NOVITÀ funzionalità standard di Arduino e
on-board lo stack TCP/IP e aggiunge altre nuove caratteristiche.
connection manager 802.11. La scheda WiFi Plus Click Possiede 54 pin di I/O digitali (16 dei quali possono essere
comunica con scheda di destinazione tramite l’interfaccia utilizzate come uscite PWM, con risoluzione selezionabile), 12
UART. La scheda è progettata solo per utilizzare Pin di Input Analogici 12 bit di risoluzione, 4 UART (porte seriali
alimentazione a 3,3 V. Esiste, inoltre, un’opzione per ottenere hardware), e due uscite DAC (digital to analog converter), un
un basso consumo energetico. cristallo oscillatore a 84 MHz , due connessioni USB, un jack di
CODICE: WIFI-SPI - PREZZO: € 42,35 alimentazione, un header ICSP, un header JTAG e un pulsante di
reset. La tensione massima che i pin I/O sono in grado di fornire
o tollerare è di 3.3V, tensioni più elevate, come 5V al pin di
input potrebbe danneggiare la scheda.
Arduino Due dispone di due connettori USB, il connettore
micro-usb B è quello nativo in grado di agire come host USB,
ovvero è possibile collegare periferiche esterne compatibili con
USB, come mouse, tastiere, smartphone, mentre l’altra porta
USB con il connettore di tipo A è per scopi di debugging.
CODICE: A000062 - PREZZO: € 47,19
(10% DI SCONTO INSERENDO IL COUPON MV873PJ288XMC)
OFFERTA
La nuova scheda EasyPIC7
EasyPIC v7 è la settima generazione della famosa scheda di sviluppo PIC. È il
prodotto di conoscenze accumulate nell’arco di 10 anni e rappresenta lo stato
dell’arte nella progettazione, funzionalità e qualità. È amata dai neofiti e hobbisti
così come dai professionisti e utilizzata nell’insegnamento e sviluppo da migliaia di
persone. La scheda viene fornita con un PIC18F45K22.
CODICE: EASYPIC7 - PREZZO: € 175,45
(10% DI SCONTO INSERENDO IL COUPON MV873PJ288XMC)
109
108-114 Shop e abbonamento:FE 10-12-2012 12:35 Pagina 110
110
108-114 Shop e abbonamento:FE 10-12-2012 12:35 Pagina 111
o! C COMING...
ARDUINO DUE
Ne ha fatta di strada il Team che ha
dato il via al progetto Arduino. Nel
2005 nascono i primi prototipi con la
scheda diventata ormai famosa in
tutto il mondo. Un’idea tutta italiana,
nata a Ivrea, già famosa per la sede
dell’Olivetti. Dopo vari aggiornamenti,
nell’ottobre del 2012 ha visto la luce la
nuova versione della scheda, la
Arduino DUE, basata sulla CPU Atmel
ARM Cortex-M3 SAM3X8E e, la prima
della famiglia Arduino, basata su un
microcontrollore a 32 bit con core
ARM. Vediamo di che cosa si tratta.
PREPARAZIONE DELLA SD
PER IL RASPBERRY PI
Un utilissimo articolo di pronto
intervento sulla preparazione della SD
Card contenente il sistema operativo
del Raspberry Pi.
COME RISPARMIARE?
Ordinare online conviene!
Qui trovi una piccola guida al risparmio
su www.elettroshop.com/ieshop
PUOI SEMPRE RISPARMIARE LE SPESE DI SPEDIZIONE
SE IL TUO ORDINE SUPERA I 200 EUR
cortesia, ti invieremo
riusciremo ad offrirti
un bellissimo eBook
in linea con le tue
Compila online il
Con il tuo aiuto
Per ringraziarti
gratuitamente
aspettative.
Aiutaci
Pagina 112
12:35
AVVERTENZE
10-12-2012
Il Bollettino deve essere compilato in ogni sua parte (con inchiostro nero o blu)
e non deve recare abrasioni, correzioni o cancellature.
La causale è obbligatoria per i versamenti a favore delle Pubbliche Amministrazioni.
108-114 Shop e abbonamento:FE
112
108-114 Shop e abbonamento:FE 10-12-2012 12:35 Pagina 113
Se vuoi ordinare "offline" ovvero senza usare Internet, usa il seguente modulo d’ordine PRODOTTI
SUB TOTALE
PRODOTTI
SPESE DI SPEDIZIONE
Nota. Se le righe non sono sufficienti, utilizzare più copie del modulo.
Per maggiori dettagli sulle spese di spedizione e i metodi di pagamento vedi retro cartolina. TOTALE
METODI DI PAGAMENTO
BONIFICO BANCARIO BOLLETTINO POSTALE CONTRASSEGNO
FE 330
TITOLARE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NUMERO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . . . .
DATA DI SCADENZA. . . . . . . . . . . . . . . . . . . . . . . . . . CODICE DI SICUREZZA . . . . . .. . . . . . . .
INVIARE IL MODULO D’ORDINE A: Inware Edizioni srl, Via Giotto, 7 - 20032 Cormano (MI) - oppure via FAX allo 02 66508225
(Inviando questo modulo si accettano i termini e le condizioni riportate a tergo)
Nome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . Cognome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indirizzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n° . . . . . . . . . . .
Cap . . . . . . . . . . . . Città . .. . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . Prov . . . . . . . .
Tel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ragione Sociale . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. .. . . . . . .
Codice fiscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . Partita IVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
✂
Sì, voglio diventare membro o rinnovare la membership
앮 MAKER MEMBERSHIP: 11 nuovi numeri di Fare Elettronica + Bonus pack "MAKER" (vedi retro) € 55,00
앮 SMART MEMBERSHIP: 11 nuovi numeri di Firmware + Bonus pack "SMART" (vedi retro) € 29,50
FE 330
앮 GENIUS MEMBERSHIP: 11 nuovi numeri sia di Firmware che di Fare Elettronica + Bonus pack "GENIUS" (vedi retro) € 29,50
ABBONAMENTO
TITOLARE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NUMERO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . . . .
fare il pagamento su paypal@inwaredizioni.it DATA DI SCADENZA. . . . . . . . . . . . . . . . . . . . . . . . . . CODICE DI SICUREZZA . . . . . .. . . . . . . .
INVIARE IL MODULO D’ORDINE A: Inware Edizioni srl, Via Giotto, 7 - 20032 Cormano (MI) - oppure via FAX allo 02 66508225
(Inviando questo modulo si accettano i termini e le condizioni riportate a tergo)
Nome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . Cognome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indirizzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n° . . . . . . . . . . .
Cap . . . . . . . . . . . . Città . .. . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . Prov . . . . . . . .
Tel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ragione Sociale . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. .. . . . . . .
Codice fiscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . Partita IVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
METODI DI PAGAMENTO
Si accettano pagamenti ino in contrassegno, carta di credit, bollettino postale o bonifico all’ordine. Per il contrassegno verrà applicata una spesa aggiuntiva di eu-
ro 3,50 per le spese di contrassegno. Forme diverse di pagamento devono essere previamente concordate.
Bonifico bancario
Appoggiato su Poste Italiane IBAN: IT 68 I 07601 01600 000070107552 intestato a Inware Edizioni srl.
Bollettino postale
Versamento sul conto corrente postale n. 70107552 intestato a Inware Edizioni srl. Inviare la ricevuta (o copia) del versamento.
Contrassegno
La merce verrà pagata direttamente al corriere alla consegna della merce. Il pagamento in contrassegno comporta l’addebito di euro 3,50 per spese di contrassegno.
Carta di Credito
Il pagamento con carta di credito può essere effettuato specificando i dati della carta via posta, email, web, fax o telefono. Per gli ordini effettuati sul sito il pagamento
mediante carta di credito verrà effettuato attraverso una connessione sicura SSL per garantire la massima sicurezza.
TERMINI E CONDIZIONI
Tutti i prodotti sono coperti da garanzia. La garanzia copre tutti i difetti di fabbricazione entro un anno dal ricevimento della merce. Tutti i prodotti non funzionanti
per uso improprio o incuria non saranno ritenuti in garanzia e saranno addebitati gli eventuali costi di riparazione. Tutti i prodotti verranno riparati e/o sostituiti di-
rettamente dal produttore. Non sono coperti da garanzia i componenti elettronici (microprocessori, memorie, ecc.) La garanzia dei prodotti si intende F.co ns. se-
de, le eventuali spese di trasporto sono a carico del cliente salvo accordi diversi. Per dar corso alla riparazione/sostituzione in garanzia è necessario seguire l’ap-
posita procedura di RMA.
PRIVACY
Ai sensi del Decr. Lgs. 196/2003 la informiamo che i dati trasmessi verranno impiegati coi principali scopi di indagini di mercato e nelle modalità previste dallo stes-
so, prevalentemente con mezzi informatici. Il conferimento, di norma facoltativo, è obbligatorio per permettere il rapporto commerciale. È in ogni caso fatto diritto
dell’interessato esercitare i propri diritti, nei modi previsti dal “Titolo II art. 7” della legge sopra citata, scrivendo a Inware Edizioni srl, Via Giotto 7 – 20032 Cor-
mano o tramite email all’indirizzo info@inwaredizioni.it
METODI DI PAGAMENTO
Bonifico bancario
Appoggiato su Poste Italiane IBAN: IT 68 I 07601 01600 000070107552 intestato a Inware Edizioni srl.
Bollettino postale
Versamento sul conto corrente postale n. 70107552 intestato a Inware Edizioni srl. Inviare la ricevuta (o copia) del versamento indicando nella causale:
“Abbonamento Fare Elettronica“
Carta di Credito
Il pagamento con carta di credito può essere effettuato specificando i dati della carta via posta, email, web, fax o telefono. Per gli ordini effettuati sul sito il pagamento
mediante carta di credito verrà effettuato attraverso una connessione sicura SSL per garantire la massima sicurezza.
Assegno bancario
È possibile spedire un assegno bancario insieme a questo coupon.
Paypal
Inviare il pagamento a paypal@invaredizioni.it.
III COP:fe 9-12-2012 19:05 Pagina 1