AVR LCD Visualizer

Un utile tool offerto da Atmel facilita lo sviluppo ed il debug di applicazioni in cui è necessario comandare direttamente display LCD, integrandosi con l’ambiente di sviluppo AVR Studio.

Il crescente utilizzo dei microcontrollori in moltissime applicazioni, anche consumer, rende sempre più frequente l’impiego di interfacce utente basate su display LCD. Nonostante in molti casi sia possibile impiegare display alfanumerici generici  dotati  di  controllore  integrato,  in  altri casi questa soluzione risulta troppo  costosa o non adeguata. In molte applicazioni infatti è preferibile utilizzare display progettati appositamente, contenenti pochi simboli e caratteri specifici, piuttosto che matrici generiche (di punti o di caratteri). Questa soluzione risulta molto più economica per determinati volumi di produzione, ma richiede l’impiego di un controllore esterno al display,  capace di generare le complesse forme d’onda e tensioni necessarie per il suo pilotaggio.

Per facilitare l’interfacciamento ed il pilotaggio diretto dei display LCD, Atmel propone una serie di microcontrollori AVR dotati  di driver interni, che non richiedono quindi componenti d’interfaccia aggiuntivi. Questi dispositivi sono gli ATmega169, 329 e 649. Questi microcontrollori permettono di controllare da 25 a 40 segmenti e fino a 4 terminali comuni, rendendo possibile l’impiego di display di complessità e struttura molto varia. Il controllo del display da parte del software è molto semplice: è sufficiente impostare ad 1 o 0 i bit dei registri LCDDR per accendere o spegnere i singoli segmenti  (la  decodifica   e  la  generazione  delle forme  d’onda  per il pilotaggio  sono generate dal  controllore).  Altri  registri  consentono  di impostare altri parametri di funzionamento, come la frequenza di refresh, il contrasto  o il consumo di potenza. Quando si impiegano display contenenti caratteri o simboli personalizzati, può risultare difficile o poco intuitivo associare una determinata immagine sul display alla corrispondente sequenza di bit da impostare nei registri. Questo complica un po’ sia la scrittura del firmware sia il suo debug. Per rendere più semplici queste operazioni Atmel fornisce un pacchetto software chiamato AVR LCD Visualizer.

L’LCD VISUALIZER

L’LCD Visualizer viene fornito da Atmel come un piccolo pacchetto software che è possibile scaricare dal sito del produttore (www.atmel.com), e che deve essere installato su una macchina su cui  si  trova  già  l’ambiente  di  sviluppo  AVR Studio 4 (anch’esso scaricabile dal sito di Atmel). Una volta installato il programma si ha a disposizione un applicativo chiamato AVR LCD Editor ed un plug-in per l’AVR Studio (LCD plugin). Il primo permette di descrivere il particolare LCD che si sta utilizzando, e di definirne i collegamenti con l’AVR, il secondo invece è utilizzato assieme al simulatore dell’AVR Studio per visualizzare graficamente il comportamento del display durante la simulazione. Utilizzando i due programmi quindi è possibile avere direttamente un feedback visivo del corretto  funzionamento del programma, piuttosto che doverlo dedurre osservando i bit dei registri.

LCD Editor

A prima vista l’LCD Editor si presenta simile ad un programma di grafica vettoriale (Figura 1).

Figura 1. Schermata dell’LCD Editor

Figura 1. Schermata dell’LCD Editor

La sua principale funzione infatti è ricostruire l’aspetto e la struttura del display che si intende utilizzare. Sono presenti comandi per caricare immagini (in formato metafile .emf), per allinearle, ridimensionarle, ruotarle, raggrupparle o dividerle. Tipicamente si inizia dal caricare un’immagine del display vuoto (spento), e le immagini di tutti i segmenti che esso contiene. Sono forniti con il programma diversi oggetti preimpostati e di uso comune che è possibile utilizzare direttamente, quali segmenti singoli, cifre numeriche a 7 segmenti o cifre alfanumeriche a 14 e 16 segmenti. Per creare segmenti di forma arbitraria è sufficiente disegnarli con un programma che sia in grado di generare file .emf (Visio, PowerPoint, Core Draw, Adobe Illustrator, e molti CAD) ed importarli nel programma. Una volta assemblate le varie parti e ricostruito l’aspetto del display, è possibile selezionare ciascun segmento o gruppi di segmenti, ed associarli ai vari bit dei registri LCDDR dell’ATmega. Questa operazione corrisponde a specificare il collegamento dei segmenti ai piedini del microcontrollore che gestiscono il display. Chiaramente questa descrizione riflette le scelte di progetto fatte nella realizzazione del circuito stampato, e non dipende dal display o dal microcontrollore. Una volta completata la descrizione è possibile salvare la descrizione del display. Il formato utilizzato, che ha estensione .dis, consiste una descrizione XML testuale, quindi facilmente leggibile o modificabile anche da altri programmi. I file così generati possono essere caricati ed utilizzati dall’AVR LCD plug-in durante le simulazioni in AVR Studio.

AVR LCD Plug-in

Dopo l’installazione del software, aprendo l’AVR Studio si può notare la presenta di alcune nuove opzioni, ed in particolare una nuova toolbar contenente le icone relative al plug-in installato (Figura 2).

Figura 2. Schermata dell’AVR Studio con l’AVR LCD plug-in visibile al suo interno

Figura 2. Schermata dell’AVR Studio con l’AVR LCD plug-in visibile al suo interno

Da questo momento, se il target del simulatore è uno degli ATmega che dispongono del controller LCD, il plug-in potrà essere attivato ed utilizzato per visualizzare il comportamento del display durante la simulazione. Per utilizzare il plug-in occorre prima caricare il file relativo al display che si intende simulare (creato con LCD Editor) ed aprire l’apposita finestra su cui viene visualizzata l’immagine del display. Il plug-in legge il valore dei registri relativi al controller LCD, e reagisce di conseguenza accendendo e spegnendo i vari segmenti e reagendo ai diversi comandi. Le opzioni presenti nel plug-in permettono, oltre a caricare ed aggiornare il file di descrizione del display, anche di accendere momentaneamente tutti i segmenti, di impostare l’intervallo di aggiornamento (ossia di lettura dei registri), e di aprire e chiudere la finestra di visualizzazione.

ESEMPIO DI UTILIZZO

Per creare un nuovo display si inizia aprendo l’LCD Editor e creando un nuovo progetto.  È possibile caricare  un’immagine  di  sfondo  per  il  display (Menu Object / Insert Metafile), che ha la funzione di fornire uno sfondo dai contorni ben definiti ed identificabili quando i segmenti saranno tutti spenti. Occorre indicare che l’immagine costituisce lo sfondo, e non ha nessuna funzione attiva. Questo avviene selezionandola ed impostando Immagine dal box Select Register. A questo punto è possibile inserire le immagini relative ai segmenti, o a primitive preimpostate. Dal box Add Primitive è possibile selezionare ad esempio 7_Segment, per inserire un intero digit a 7 segmenti. Si procede in modo simile, aggiungendo altri segmenti o simboli, fino a descrivere completamente tutta la grafica del display (Figura 3).

Figura 3. Creazione di un display nell’LCD Editor

Figura 3. Creazione di un display nell’LCD Editor

I vari elementi aggiunti possono essere spostati, ridimensionati ed allineati, sia manualmente, sia con gli appositi comandi. Una volta composta  la grafica, occorre  selezionare i singoli elementi ed assegnarli ai registri o ai singoli bit dei registri. Questo viene fatto dal box Select Register, che contiene l’elenco di tutti i registri disponibili e dei loro bit. Per le primitive o i gruppi l’assegnazione dei singoli bit avviene direttamente selezionando un registro, e non è necessario farla manualmente. Come già detto l’assegnazione dei segmenti ai bit dei registri, riflette il modo in cui il display viene collegato alle uscite del microcontrollore. Nell’esempio mostrato in Figura 3 è stato associato il primo digit al registro LCDDR0, il secondo a LCDDR1, il tero ed il quarto a LCDDR 5 e 6 rispettivamente. I restanti simboli sono stati associati ai bit del registro LCDDR2. Il risultato finale è stato salvato come file .dis per potere essere caricato successivamente in fase di simulazione dal plug-in.  Per  provare  il  funzionamento  dell’LCD plug-in è possibile avviare l’AVR Studio e creare un nuovo progetto che impiega un microcontrollore dotato di controller LCD. Occorre selezionare il simulatore come strumento di debug predefinito. Si può scegliere di creare un codice sia in assembler che in C. Dal momento che il test può avvenire agendo  direttamente  sui  registri  del  simulatore, non è necessario che il codice provveda a programmare il controller ed a gestire l’LCD, può essere anche costituito solo da una sequenza di “nop”. Prima di avviare la simulazione, occorre aprire la finestra del simulatore e caricare il file relativo al display creato. Una volta avviata la simulazione, si può accendere e spegnere contemporaneamente tutti i segmenti selezioando l’icona, o la voce di menu, “Toggle LCD Segments”. Per testare l’accensione dei singoli segmenti, e la loro corretta assegnazione ai vari bit dei registri, si può cambiare manualmente il valore dei vari registri LCDDR e osservare la risposta del display nella finestra, come mostrato in Figura 4 (si noti la corrispondenza tra i segmenti accesi e i bit attivati nei registri).

Figura 4. Simulazione dell’LCD in AVR Studio

Figura 4. Simulazione dell’LCD in AVR Studio

Se si notano delle incongruenze (possibilmente dovute alle assegnazione di gruppi di segmenti a registri), si può correggere la descrizione nell’Editor e salvare, avendo cura di selezionare la voce “Reload Display file”. Il plug-in è capace di funzionare anche durante la simulazione di un programma in modalità trace, e questo  permette di osservare il comportamento del programma in modo realistico. In questo caso occorre  solo  abilitare  aggiornamento automatico del display e specificare in modo appropriato l’intervallo di lettura dei registri (il valore di default è 200ms, che è nella maggior parte dei casi adatto alla velocità con cui viene simulato il programma). In conclusione l’LCD Visualizer offre un notevole aiuto nella scrittura e nel test dei programmi che coinvolgono l’utilizzo di display personalizzati, consentendo di velocizzare queste operazioni e di verificare il programma senza la necessità di disporre dei componenti o di attendere i tempi di produzione (sensibili, soprattutto nel caso di display realizzati su misura).

 

STAMPA     Tags:, , ,

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *