Scheda basata su microcontrollore MC68HC11

 

Il progetto è nato dalla necessità di avere a disposizione una scheda general purpose per applicazioni 'casalinghe', possibilmente senza la necessità di dover tutte le volte fare una EPROM per caricare un nuovo firmware , e possibilmente programmabile in 'C'.
Da qui la ricerca di un micro 'vispo' con un (bel) po' di periferiche a bordo , e con un bel po' di software free a corredo.
La scelta è andata subito verso l' MC68HC11 della Motorola , prodotto anche da altre case quali la TOSHIBA .
Per la descrizione dettagliata del micro rimando al sito Motorola , dove si trovano data sheet e applications a tonnellate.
Dico soltanto che in questa scheda ho scelto l'MC68HC11A1, con contenitore DIP a 48 piedini , che tra le caratteristiche salienti vanta una EEPROM da 512 bytes , timerS, seriale sincrona e asincrona, ADC , 256 byte di RAM interna, con la capacità di indirizzare fino a 64Kbyte di memoria.
Nella scheda i 64Kbyte esterni servono ad indirizzare complessivamente una EPROM da 32K e una RAM da 32K , quest'ultima tenuta sempre 'sveglia' da una batteria tampone.
Tramite un ponticello , la mappa di memoria del micro può essere variata nei modi seguenti:

 

<elenco modi>
 

; when bram=1 ( boot from ram )
;
; 0000-3FFF free
; 4000-7FFF ram low
; 8000-BFFF eprom low
; C000-FFFF ram high
;
; when bram=0 (boot from eprom )
;
;
; 0400-0FFF ram
; 2000-7FFF ram
; 8000-FFFF eprom
;

 

In tal modo il micro può effettuare il bootstrap da EPROM oppure da RAM.

Se sulla EPROM si mette un S-record loader , è possibile quindi caricare il programma da testare in RAM ( tramite la seriale del micro ).
Una volta caricato , cambiando semplicemente il ponticello di configurazione , oppure scrivendo sul registro di configurazione mappa , si prova il programma , senza dove rifare la EPROM ogni volta.
Se il programma gira , si può fare la EPROM o lasciarlo in RAM , dove comunque rimarrebbe fintanto che l'accumulatore tampone resta carico.
Le mie applicazioni su questa scheda stanno girando ormai da quasi un anno in RAM.
L'accumulatore tampone viene comunque tenuto carico se la scheda è alimentata.

Fatta questa panoramica sulla scheda , descrivo le caratteristiche in dettaglio.

 MC68HC11 card Features

Input Voltage : min 8 Volt , max 40 Volt
5 Volt 1A SWITCHING regulator 78S40 ( Motorola or National)
EPROM size 32K
RAM size 32K
RAM standby & watchdog controller MAX691 ( Maxim )
IO decode by GAL 16V8
TTL to RS232 level converter MAX232 (Maxim) for serial port

 

MC68HC11 card I/O

Power connector
RS232 3 wire connector
48 pin expansion ( all uP pins except XTAL )
3 pin custom decode

 
Come ho detto prima , nella scelta del micro ho dato molto peso alla disponibilità di Software.
Per questo micro è presente praticamente tutto il necessario per un rapido sviluppo di applicazioni.
Partiamo dai cross-asm/c
L' AS11 dato anche in forma sorgente è il primo tool che ho utilizzato per fare la EPROM di test.
Gira benissimo su una finestra DOS di W95 , e benissimo sul DOS.
Esiste una versione del gcc , il compilatore C e C++ che si è molto diffuso ed è stato portato sui piu' svariati OS ( ho visto da qualche parte la dicitura 'Industry Standard GCC') , compilato per generare codice per questo ( e anche altri , comunque ) microprocessore.
La versione che ho scaricato dalla Rete è compilata con lui stesso usando il dos extender djgpp.

Devo dire che va molto bene !
Ho visto ma non ho provato anche basic cross-compiler , forth cross-compiler e altri cross-C ma non li ho provati .
Lato scheda , come ho già detto , esistono tonnellate di applicazioni e di librerie per il 68HC11.

Basta cercare sulla rete e il gioco è fatto.

 La scheda , di per se , non contiene periferiche che servono normalmente per una applicazione 'casalinga' , come dicevo all'inizio.

Questo è voluto.
La scheda ,come ho detto prima , riporta due connettori , uno piu' grande , che rispecchia i pin del microcontroller, e un altro più piccolo, che riporta tre pin liberi della GAL , che nella scheda decodificano tre spazi di indirizzamento e che possono essere usati come segnali di abilitazione per latch .

Grazie a tali connettori è possibile innestare sulla scheda MC68HC11 una scheda figlia che dipende dall'applicazione richiesta.
Io ne ho realizzata una che ha a bordo quattro relè , una manciata di fotoaccoppiatori, un RTC ( real time clock) , e quattro triac comandabili in fase dal micro per creare effetti luce.
Tale scheda si innesta sulla prima per mezzo dei connettori menzionati prima.

I files forniti per ora sono:

hc11cpu.gif     schema elettrico
sol-cpu.gif     circuito stampato lato saldature
com-cpu.gif     circuito stampato lato componenti
68hc11a.eqn     equazioni della GAL 16V8 ( o equivalente ) usata
68hc11a.jed     equazione compilata pronta all'uso
hc11boot.asm    programma S-record loader su Eprom
cpu.jpg         immagine di un prototipo

as11.exe        cross Assembler ( come si trova su internet)
hc11boot.asm    sorgente codice di boot con S-record loader
hc11boot.bin    immagine EPROM di hc11boot.asm
hc11mon.asm     sorgente piccolo monitor
m.out           S record di hc11mon.asm creato da as11
motbin.c        sorgente convertitore S-record binario per Eprom
motbin.exe      eseguibile MS-DOS di motbin.c
dnld.c          programma di download S-record su scheda
dnld.exe        eseguibile su MS-DOS di dnld.c
hcasm.bat       batch file per creazione eprom da .asm

Una nota sulle immagini del circuito stampato : sono a grandezza naturale se stampate con una stampante a 300 dpi.