La sigla 68HC11 identifica una famiglia di microcontrollori ad 8 bit introdotti da Motorola a partire dal 1985. Prodotto da Freescale, la sua CPU, ad architettura CISC, è un'evoluzione del Motorola 6800. Realizzato con la tecnologia High Speed C-MOS (HCMOS), è stato il primo microcontrollore ad incorporare un banco di EEPROM (dalla versione A8).
La produzione è iniziata con la versione A0 (MC68HC11A0), che poteva funzionare con un clock massimo di 2 MHz. Nel tempo sono state realizzate numerose versioni, con più o meno risorse, in termini di memoria e periferiche. Tutte le versioni attualmente in produzione tollerano una frequenza massima di clock di 3 MHz (tranne la versione F1, che arriva a 4 MHz), con un ciclo di bus di 333 ns minimo (250 ns per la versione F1).
Il suo set di istruzioni è compatibile in avanti con il 6800, con l'aggiunta del registro indice Y (le istruzioni che usano il registro Y hanno lo stesso codice operativo (opcode) del registro X, precedute dal byte 0x18). Dispone di 2 accumulatori ad 8 bit (registri A e B) che possono essere usati insieme come un accumulatore a 16 bit (registro D), due registri indice a 16 bit X e Y, un puntatore allo stack (SP), un registro di stato, condition code ad 8 bit (CCR) e il program counter. Può eseguire moltiplicazioni 8 x 8 bit (A x B), con 16-bit di risultato, divisioni frazionali e intere a 16 bit. Una parte di istruzioni a 16 bit utilizzano i registri A e B come un unico accumulatore a 16 bit (D) per le operazioni di confronto (in più, i registri X e Y possono essere confrontati anche con operandi a 16-bit in memoria), di addizione, di sottrazione e di spostamento, è inoltre possibile sommare l'accumulatore B ai registri indice X o Y. Sono state aggiunte operazioni di bit test and jump, eseguendo una funzione logica AND tra operandi, che modifica il condition code (CCR), ma lascia invariati gli operandi. L'architettura del 68HC11 supporta 5 modalità di indirizzamento delle istruzioni: immediato, diretto, esteso, indicizzato, inerente e relativo. Le istruzioni di Stop e Wait sospendono l'esecuzione del programma, forzando uno stato di basso consumo (low power-stand by), in attesa di reset o interrupt.
Le diverse versioni del 68HC11 hanno un differente numero di porte esterne, etichettate in ordine alfabetico. La versione più comune ha cinque porte, A, B, C, D, ed E, ma alcune hanno un minimo di 3 porte (versione D3). Ogni porta è a 8 bit, tranne D, che è a 16 bit (in alcune varianti del chip, anche D è a 8 bit). Il 68HC11 può essere utilizzato con programma interno e RAM interna (da 1 a 768 byte) o una memoria esterna fino a 64 kilobyte. Con memoria esterna, B e C sono usate come bus indirizzi e dati. In questo modo, la porta C è multiplata per trasportare sia il byte inferiore del bus indirizzi che i dati. Le porte sono multifunzione, a seconda della modalità impostata. Le modalità configurabili sono 4:
In modalità single-chip tutte le porte sono utilizzabili come linee di I/O e le risorse di memoria sono solo quelle interne. Nella modalità expanded-multiplexed le porte B e C assumono la funzione di bus dati/indirizzi per l'accesso a poco meno di 64 Kb di spazio esterno d'indirizzamento, altre due linee sono dedicate rispettivamente ai segnali di R/W (read/write) e AS (address strobe), quest'ultimo necessario per il multiplexing del bus dati con gli 8 bit più bassi del bus indirizzi, che condividono gli stessi pin. La modalità di test è utilizzata principalmente per scopo di test durante la produzione. La modalità di bootstrap è una variante di quella single-chip; al reset si attiva un particolare firmware che consente di caricare e avviare un programma nella Ram interna, tramite l'interfaccia seriale.
Le periferiche integrate nel 68HC11 sono:
Il 68HC11 dispone di 18 vettori di interrupt e 3 di reset, questi ultimi generabili dal COP watchdog e dalla condizione di slow clock, oltre che dall'esterno; il reset generato da cause interne, viene forzato anche verso l'esterno.
Dalla versione A8 è presente il firmware di un monitor (o bootloader), chiamato Buffalo (“Bit User Fast Friendly Aid to Logical Operation“ è il prompt visualizzato al suo avvio), che consente di effettuare il caricamento di programmi in Ram e il debug on-chip, tramite l'interfaccia seriale asincrona. Le sue caratteristiche sono:
Il 68HC11 è utilizzato per lettori di codici a barre, telefoni, macchine fotografiche, strumenti musicali, elettrodomestici, scrittori di Key Card, apparecchiature elettromedicali e di misura, robotica amatoriale, automotive e molti altri sistemi embedded. Con un ciclo macchina di 333 nSec (a 3 MHz di clock), è in grado di eseguire mezzo milione di istruzioni al secondo, consumando pochi mA. Non poche applicazioni complesse basate sul 68HC11, ricorrono alla tecnica di bank switching per aumentare la memoria programma indirizzabile.
Il suo progetto si è dimostrato talmente innovativo, da essere ancora prodotto ed utilizzato, dopo più di un quarto di secolo, il che lo colloca tra i microcontrollori più diffusi nel mondo.
Controllo di autorità | LCCN (EN) sh92006509 · J9U (EN, HE) 987007541802705171 |
---|