68HC11
Famiglia di microcontrollori ad 8 bit introdotti da Motorola a partire dal 1985. Attualmente 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).
Caratteristiche generali
CPU
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 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. 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.
Modi di funzionamento
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 è di 8 bit, tranne D, che è di 6 bit (in alcune varianti del chip, anche D ha 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:
- Single-chip
- Expanded-multiplexed
- Test
- Bootstrap
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 C e D 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 al segnale 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.
Periferiche
Le periferiche integrate nel 68HC11 sono:
- SCI - Serial Communication Interface - asincrona, con un baud-rate impostabile da pochi baud fino a 250000 baud (versione F1).
- SPI - Serial Peripheral Interface - sincrona, con una frequenza massima di 2 Mhz (versione F1).
- 16 bit System timer con 3 canali di input capture, 5 di 'output compare e un Pulse accumulator a 8 bit
- Circuito di Real-Time Interrupt
- Timer di COP (Computer Operating Properly) - watchdog
- Convertitore A/D a 8 bit e 8 ingressi multiplati
- 512 byte di RAM (768 nella versione E9)
- 512 byte di EEPROM (assente in alcune versioni)
- 8 Kb di ROM/EPROM (20 Kb nella versione E9, assente in alcune versioni)
- 38 linee di I/O general-purpose, di cui 15 bidirezionali, 11 solo in ingresso e 12 solo in uscita
Interrupts
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.
Buffalo
Dalla versione A8 è presente un firmware di 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:
- Caricamento del codice eseguibile in memoria, da porta SCI, nel formato s-record
- Avvio del codice eseguibile
- Inserimento e rimozione di breakpoints
- Ispezione e modifica di aree di memoria e registri interni
- Ispezione di parti di programma tramite un disassembler incorporato
- Scrittura o modifica di linee di programma, grazie ad un assembler incorporato.
Applicazioni
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 sono poche le applicazioni complesse che 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.
Fonti
Riferimenti esterni
- Freescale 68HC11 (Legacy) Part Info
- Wytec 68HC11 Development Board
- A fully synthesizable VHDL implementation of the HC11 CPU
- Digital Core Design 68HC11E - HDL IP Core
- Digital Core Design 68HC11F - HDL IP Core
- Digital Core Design 68HC11K - HDL IP Core
- Win/Linux-based freeware cross-assembler
- 4MHz-bus 68HC11F1-based board