Primo esperimento di programmazione su EE01Data di pubblicazione: 30-09-2004 | Versione Italiana | (No English Version) Parole chiave: - PIC - |
Primo esperimento di programmazione su EE01
Primo esperimento di programmazione su EE01
In questo articolo viene descritto come iniziare a prendere
confidenza con la programmazione in C del modulo EE01 e
come effettuare le prime semplici prove di interfacciamento
locale prima di passare all'uso delle funzionalita' del modem
GSM integrato
Il compilatore C utilizzato per gli esempi è il
versatile CCS-C nella economica versione PCH
dedicata ai PICmicro della famiglia 18 (maggiori
informazioni).
Iniziamo con un primo esempio che non utilizza ancora le
funzionalità del modem integrato nella scheda EE01 ma che ci
consente di fare la prima sperimentazione per testare se il
nostro ambiente di programmazione e la nostra scheda EE01
funzionano correttamente.
Lo schema elettrico di base utilizzato è riportato nel
seguente articolo Alimentazione e
programmazione ICSP.
A questo schema di base sono stati aggiunti due led, uno rosso
ed uno verde secondo lo schema seguente:

Proviamo ora a far lampeggiare alternativamente i due led con
un ritardo di 1 secondo tra un lampeggio ed il successivo. Il
codice è il seguente:
#include <18F452.h>
#use Delay(Clock=10000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
#define LED_ROSSO PIN_C0
#define LED_VERDE PIN_C1
void main(void) {
for (;;) {
delay_ms(1000);
output_high(LED_ROSSO);
output_low(LED_VERDE);
delay_ms(1000);
output_low(LED_ROSSO);
output_high(LED_VERDE);
}
}
La direttiva #include <18F452.h> determina
l'inclusione nel sorgente del file 18F452.h
fornito con il compilatore CCS in cui sono specificate tutta una
serie di definizioni relative al tipo PICmicro in uso. Questa
direttiva deve essere sempre inclusa nei vostri sorgenti.
La direttiva #use Delay(Clock=10000000)
comunica al compilatore la frequenza di clock del quarzo
collegato al PICmicro, in questo caso un quarzo da 10MHz.
Questa informazione verrà usata dal compilatore per la
generazione di eventuali cicli di ritardo software. Anche questa
direttiva deve essere sempre presente nei vostri sorgenti.
La direttiva #fuses HS,NOWDT,NOPROTECT,NOLVP
determina il settaggio della Configuration Word interna al
PICmicro. Questo particolare registro contiene dei flag che
devono essere settati opportunamente durante la programmazione
del PICmicro per consentire un corretto funzionamento. Ogni flag
o fuses può essere settato con questa direttiva inserendo il
nome relativo. In questo caso:
- HS L'oscillatore lavora con un
cristallo esterno con frequenza superiore a 4Mhz
- NOWDT Il watch dog timer è disabilitato
- NOPROTECT Il codice inserito non sarà
protetto per cui il PICmicro, una volta programmato, potrà
essere anche riletto
- NOLVP La programmazione in modalitò Low
Power è disattivata
Per maggiori informazioni sul significato dei fuses
consultare il
Datasheet Microchip del PICmicro 18F452
Le direttive:
#define LED_ROSSO PIN_C0
#define LED_VERDE PIN_C1
associano semplicemente i nomi LED_ROSSO e LED_VERDE ai
rispettivi pin di I/O del PICmicro. Da questo punto in poi
potremo riferirci al pin RC0 del PICmicro con
il nome LED_ROSSO più semplice da ricordare.
Dalla istruzione main() inizia il vero
codice che il PICmicro dovrà eseguire.
Tutto quello contenuto nelle parentesi graffe dopo la main() fa
parte della funzione main(). Ovvero il punto di ingresso da cui
ogni programma in C inizia la sua esecuzione.
L'istruzione for(;;) è seguita anch'essa da
una coppia di parentesi graffe ed indica che tutte le istruzioni
all'interno di queste parentesi verranno eseguite a ciclo
continuo.
All'interno di questo ciclo vengono eseguite due gruppi di
istruzioni:
delay_ms(1000);
output_high(LED_ROSSO);
output_low(LED_VERDE);
e
delay_ms(1000);
output_low(LED_ROSSO);
output_high(LED_VERDE);
L'istruzione delay_ms(1000); si occupa di
inserire un semplice ritardo software di 1000mS (1 secondo).
L'istruzione output_high(LED_ROSSO); mette
a 1 (5 volt) la linea LED_ROSSO corrispondente al pin RC0 del
PICmicro. Questo provoca l'accensione del led rosso.
L'istruzione output_low(LED_ROSSO); la mette
invece a 0 (0 volt) causando lo spegnimento del led rosso.
La stessa cosa viene fatta per il led verde.
Esempio 2 - Input da una linea
in ingresso
Vediamo ora come leggere lo stato di una linea di ingresso.
Modifichiamo lo schema dell'esempio 1 aggiungendo un pulsante
sulla linea RC2 ed una resistenza di pull up come visibile nello
schema seguente:

La resistenza di pull up R3 serve a mantenere a 5 volt la
linea di ingresso RC2. Se venisse omessa questa resistenza
avremmo, sulla linea di ingresso RC2, una condizione logica
indefinita che renderebbe instabile il funzionamento del nostro
programma.
Inseriamo il seguente codice C:
#include <18F452.h>
#use Delay(Clock=10000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
#define LED_ROSSO PIN_C0
#define LED_VERDE PIN_C1
#define S1 PIN_C2
void main(void) {
for (;;) {
if (input(S1)) {
output_high(LED_ROSSO);
output_low(LED_VERDE);
} else {
output_low(LED_ROSSO);
output_high(LED_VERDE);
}
}
}
Scopo di questo codice è riportare sui LED lo stato del
pulsante S1 nel seguente modo:
- Led rosso accesso e led verde spento se il pulsante S1 è
rilasciato
- Led rosso spento e led verde acceso se il pulsante S1 è
premuto
Nella sezione iniziale del nostro codice abbiamo aggiunto la
direttiva #define S1 PIN_C2 con cui assegnamo
il nome del tasto S1 alla linea RC2
del PICmicro.
Nel loop infitito for(;;) abbiamo inserito
l'operatore condizionale if il quale ci
permette eseguire porzioni di codice distinte in base allo stato
del pulsante S1.
Per rilevare lo stato del pulsante abbiamo utilizzato
l'istruzione input(S1) la quale ritorna 1 se
sulla linea di ingresso S1 (la linea RC2 del PICmicro) ci sono 5
volt e 0 se invece ci solo
0 volt. In C lo 0 viene interpretato come valore logico
falso mentre qualsiasi altro valore viene interpretato
come vero.
Nella if, quindi, vengono eseguite le
seguenti istruzioni se il tasto è rilasciato (Linea S1 a 5 volt,
valore di ritorno 1 = vero):
output_high(LED_ROSSO);
output_low(LED_VERDE);
E le seguenti se viene premuto (Linea S1 a 0 volt, valore di
ritorno 0 = falso)
output_low(LED_ROSSO);
output_high(LED_VERDE);
Documentazione tecnica ed articoli relativi al
modulo EE01
-
L'ambiente di sviluppo per EE01
In questo articolo viene illustrato come
installare l'ambiente di sviluppo standard MPLAB 6.xx
ed il programmatore/debugger ICSP Microchip ICD2
consigliati per sviluppare applicazioini per il modulo
EE01
-
CCS-C per PICmicro serie 18
PCH è una versione economica del compilatore CCS C, dotata della stessa
potenza delle versioni piu' costose, ma limitato a generare codice
eseguibile per i soli PICmicro della famiglia 18. Il PCH non dispone di
una propria interfaccia IDE ma si integra perfettamente con
l'interfaccia IDE standard MPLAB ed il programmatore debugger ICD 2
della Microchip consentendo cosi' di ottenere ottimo ambiente integrato
ad un prezzo bassissimo. Ottimo per lo sviluppo di applicazioni per il
modulo M2M EE01
-
Alimentazione e programmazione ICSP
Schema elettrico di base per fornire alimentazione al modullo EE01 e
consentirne la programmazione in circuit
-
Stringhe di connessione GPRS
Elenco delle stringhe di connessione per l'accesso alla rete GPRS in
modalita Easy GPRS su Wind, Vodafone e Tim
- Piedinatura modulo EE01
Esempi di programmazione in C
Documentazione tecnica ed articoli relativi al
modem GM862-GSM-GPRS-PCS
-
Telit GM862 Product Description Documento in formato
PDF di 200 pagine in cui vengono descritti i modem Telit
GM862 nelle versioni GSM, GPRS e PCS. Più di 130 pagine
sono dedicate ai soli comandi HAYES (AT+) per la
gestione del modem
-
Telit GM862 Software User Guide Documento in formato
PDF di 122 pagine in cui vengono forniti esempi pratici
di gestione del modem tramite comandi Hayes
-
EASY GPRS © White Paper L'EASY GPRS è una modalità
operativa implementata sui modelli GPRS di Modem Telit
GM862 che consente di effettuare connessioni TCP/IP su
rete GPRS tramite semplici comandi AT. Questo breve
documento descrive le caratteristiche fornite da questa
modalità
Documentazione relativa al PICmicro 18F452
Documentazione tecnica ai tool di programmazione
per PICmicro 18F452
Altri link utili
Segnala questo articolo:
Parole chiave: - PIC -
|