Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori ST626X. Quinta parte 4/4

ST626X Corso di programmazione per microcontrollori ST626X

Per scegliere il banco con cui lavorare e, successivamente, per scrivere o leggere la memoria EEPROM si usano due registri, il DRBR (Data RAM Bank Register) e l’EECR (EEPROM Control Register). Il primo consente la selezione del banco; precisamente, settando il bit 1 si abilita il banco 1, mentre settando il bit 0 si seleziona il banco 0. Il secondo registro, l’EECR, controlla la memoria EEPROM e ogni bit di tale registro ha un preciso significato, vediamo quale. Il bit 0 (E2ENA, EEPROM Enable Bit) se settato abilita la programmazione e deve perciò essere posto a 1 prima di effettuare l’operazione di scrittura.

Il bit 1 (E2BUSY, EEPROM Busy Bit) a sola lettura viene settato automaticamente dall’hardware del chip in fase di lettura o scrittura per indicare lo stato di EEPROM pronta. Il bit 2 (E2PAR2, Parrallel Mode Enable Bit) deve essere settato nel caso in cui si voglia effettuare una programmazione “parallela” della EEPROM, ovvero la programmazione di più di un byte nello stesso tempo. Il bit 3 (E2PAR1, Parallel Start Bit) deve essere settato per attivare la programmazione parallela della EEPROM.

vettori interruzione

I bit 4 e 5 sono riservati, non possono essere gestiti da software, e devono essere tenuti a livello logico 0. Il bit 6 (E2OFF, Stand-by Enable Bit) viene settato per disabilitare la EEPROM quando non usata onde ridurre i consumi del chip.

Infine, il bit 7 è libero e non viene utilizzato. Nella nostra applicazione utilizziamo il banco 0 che abilitiamo attraverso l’istruzione: LDI DRBR,#01 e leggiamo e scriviamo un solo byte per volta della EEPROM richiamando le subroutine EEPRR (EEPROM Read) e EEPRW (EEPROM Write).

La prima subroutine legge all’indirizzo “puntato” dal registro X, ovvero trasferisce nell’accumulatore il contenuto della cella EEPROM la cui locazione coincide con il contenuto di X. La seconda subroutine, di scrittura, trasferisce il contenuto dell’accumulatore nella cella EEPROM con locazione definita dal contenuto di X. Va osservato che sia in lettura che in scrittura occorre attendere, testando il bit 1 di EECR, che la EEPROM sia pronta ad accettare dati. Continuiamo l’analisi del nostro software e rimaniamo in tema di EEPROM poiché adesso il programma esegue la subroutine denominata LEGEP.

Qui il micro legge la cella numero 1 del banco 0 della EEPROM, la trasferisce nel byte RAM chiamato STATO, e in funzione di quest’ultimo ripristina i relè. Praticamente, riporta i relè nella stessa condizione (acceso o spento) in cui si trovavano prima dello spegnimento del micro. Proseguiamo e arriviamo al “main”, dove il micro testa lo stato del bit 5 del DRPB controllato dal pulsante “+” e quello del bit 6 associato al pulsante “-”. In condizioni normali, pulsante non premuto, questi bit risultano a valore logico 1. Infatti le linee di I/O hanno due resistenze di pull-up che le vincolano al +5 volt.

Al contrario, premendo uno dei due pulsanti andremo a collegare verso massa la linea di I/O appartenente al pulsante e di conseguenza anche il bit del DRPB verrà resettato dall’hardware del micro. Se viene premuto “+” il programma esegue la subroutine GESP, esegue cioè tutte le istruzioni comprese tra la label GESP e l’istruzione RET, se, invece, si preme “-” la subroutine processata è la GESM. Le due subroutine sono concettualmente identiche esaminiamo perciò, ad esempio, solo la GESP. Per prima cosa il software deve leggere la condizione attuale del led e lo fa testando il bit 1 di STATO.

In funzione di tale bit, il programma deve accendere il led e settare il bit, oppure spegnere il led e resettare il bit. Successivamente, memorizza il contenuto di STATO nella EEPROM per trattenere l’informazione anche nel caso in cui venga tolta alimentazione al micro. Infine, attende il rilascio dello stesso e, a pulsante rilasciato, esegue la subroutine D50ms. Attende quindi che le lamelle del pulsante terminino di rimbalzare. Terminata la spiegazione del software, vediamo la procedura pratica di programmazione del chip.

ASSEMBLAGGIO E PROGRAMMAZIONE

Dopo aver trascritto tutte le istruzioni necessarie all’interno del file MF55.ASM occorre procedere alla conversione del file da sorgente ad oggetto. Selezioniamo il programma di assemblaggio digitando: AST6 MF55.ASM. L’assemblatore della famiglia ST6 creerà così il file MF55.HEX adatto a essere caricato all’interno della memoria del micro. Posizioniamo i dip del selettore “MODE” dello Starter Kit in posizione PROG, e quelli del selettore “DEVICE” su ST6265 ed inseriamo il micro ST62E65 da programmare nel text-tool. Selezioniamo ora il software di programmazione digitando: ST626XPG.

Vedremo apparire a video il menù di selezione del micro da programmare, digitiamo “ST62E65” e premiamo “invio”. Trasferiamo nel buffer del PC il software, per fare ciò selezioniamo il comando “LOAD” e digitiamo: “MF55.HEX”. Infine passiamo realmente alla programmazione del chip selezionando il comando “PROG” e, se tutto funziona correttamente, dopo qualche secondo vedremo comparire a video la scritta: “The device is succesfully programmed”. A questo punto la programmazione è completata. Togliamo alimentazione alla piastra base dello Starter Kit, scolleghiamo il cavo di collegamento tra piastra base e PC, portiamo il selettore “MODE” in posizione “USER” e diamo nuovamente alimentazione alla piastra.

Proviamo ora a premere il pulsante “+”: il led LD1 si deve accendere, premendo poi il pulsante “-” sarà il led LD2 ad accendersi. Premiamo nuovamente i pulsanti e verifichiamo che ad ogni attivazione coincida un cambiamento di stato dei led. Infine togliamo alimentazione alla piastra, attendiamo qualche istante, ridiamo alimentazione e verifichiamo che i due led si accendano o meno rispettando l’ultima condizione assunta prima dello spegnimento. Bene, questo semplice esempio è stato sufficientemente commentato: appuntamento dunque alla prossima puntata nella quale ci occuperemo dei timer dei micro della famiglia ST626X.

Il kit è disponibile da Futura Elettronica

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 24 utenti e 91 visitatori collegati.

Ultimi Commenti