Esercitazioni ASM - PIC18

 


ESERCITAZIONE # 12


Espansioni


Potete provare a variare i caratteri inviati che compongono il messaggio di prompt o scrive sull' una piuttosto che sull' altra riga.

Osservate nel sorgente che i caratteri visualizzati sono semplicemente richiamati con gli ASCII corrispondenti, lasciando all' Assembler il compito di sostituire i caratteri con l' esadecimale equivalente.

Ad esempio:

         movlw '1'        ; scrive 1
         rcall LCDWrDat
         movlw 'r'        ; scrive r
         rcall LCDWrDat
         movlw '!'        ; scrive !
         rcall LCDWrDat

sono molto più comprensibili che:

         movlw 0x31       ; scrive 1
         rcall LCDWrDat
         movlw 0x72       ; scrive a
         rcall LCDWrDat
         movlw 0x21       ; scrive !
         rcall LCDWrDat

anche se il risultato della compilazione è identico.

In particolare si potranno provare i codici sopra 0x7F: i caratteri presentati dipenderanno dal set del character generator  (CG) integrato nel controller del display.

Potete anche variare la frequenza dell' oscillatore del PIC; sul campione provato, il driver con le routine di tempo calibrate per un clock di 4 MHz funziona anche se si alza il clock a 16MHz, il che vuol dire ridurre a 1/4 tutti i ritardi. Però, aumentando ulteriormente il clock, il sistema comincia presentare problemi per via sei tempi troppo ridotti. Oltre i 30 MHz di clock il display non risponde più correttamente. 

Inoltre, un altro display di costruzione decisamente più anziana, a 16 MHz cessa di funzionare.
Altri moduli, con controller simili all' HD44780 funzionano senza problemi anche con clock a 40 MHz, mdificando le temporizzazioni.

Provate con il vostro display quale è la tolleranza e provate a verificare quali tempi devono essere adeguati per far riprendere il funzionamento.

Questo filmato presenta una variazione del programma di test che effettua le seguenti operazioni:

  1. prima scrittura del messaggio a 4 MHz di clock con 0.5 s di ritardo tra un carattere e il successivo
  2. seconda scrittura del messaggio a 8 MHz
  3. terza scrittura a 16 MHz
  4. quarta scrittura con clock a 4 MHz, ma senza ritardo tra i caratteri

Si osserva bene la differenza di esecuzione ai diversi clock, dato che i ritardi di tempo, calcolati per 4 MHz, vengono dimezzati ad ogni step; nel caso di scrittura senza ritardo, le due linee appaiono quasi istantaneamente, indice che questi display sono "lenti", ma solo se non comparati con le possibilità percettive dell' osservatore.

Il sorgente di questa versione è qui.


Nota: se il controller è stato mandato in palla a causa del clock troppo elevato o di una sequenza di inizializzazione non corretta, per riportarlo alla ragione, a volte la procedura di inizializzazione software non è sufficiente. Allora è necessario togliere alimentazione al display e poi ripristinarla e re inizializzare via software in modo regolare e con le giuste temporizzazioni.

Volendo ottenere un oggetto adatto ad essere scritto nella memoria programma del PIC, si dovrà aggiungere nel sorgente la modifica per un CONFIG adeguato all' esecuzione stand alone, come visto nell' esercizio precedente. 


Nei prossimi esercizi vediamo come migliorare il driver rispetto al clock del microcontroller, come utilizzare il display per comunicazioni a 4 bit e senza lettura di BF. Poi potremo creare una interfaccia seriale SPI-like per ridurre al minimo le connessioni tra display e microcontroller.


 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 17/11/11.