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.