© Harry Broeders.
Deze pagina is bestemd voor studenten van de THRijswijk.
De Elektrotechniek P1 en Pv studenten van de THRijswijk zijn in het bezit van een Simplex3 68HC11 ontwikkelbord. Dit bord wordt door de P1 studenten gebruikt in het "windmeter" project en door de Pv studenten in het "inbraakalarm" project. Dit bord kan ook gebruikt worden als ondersteuning bij de microcontroller programmeer lessen. Er zijn allerlei leuke toepassingen voor dit bord te bedenken. Deze webpagina is bedoeld om informatie over en ideeën voor het Simplex3 bord uit te wisselen. Als je specifieke vragen hebt over of leuke ideeën hebt voor het Simplex3 bord neem dan contact met mij op (Harry Broeders, kamer 411).
Het Simplex3 bordje is op verzoek van de THRijswijk ontwikkeld door Leiderdorp Instruments en wordt ook verkocht door Elomax. Dit bordje kan door studenten van de THRijswijk tegen een sterk gereduceerde prijs worden aangeschaft in onze reproshop.
Op de website van Elomax is een gratis 68HC11 cursus die gebruik maakt van het Simplex3 bord beschikbaar.
Een eenvoudige introductie in de theorie van de 68HC11 kun je vinden in hoofdstuk 8 van het in de P fase gebruikte boek: Electrical Engineering:Principles and Applications van Allan R. Hambley.
Een andere introductie van de 68HC11 kun je hier vinden.
Docenten en studenten die al bekend zijn met de EVM die we bij de micocontroller practica gebruiken kunnen hier de belangrijkste verschillen tussen de Simplex3 en de EVM hier vinden:
De Simplex3 gebruikt een 68HC11E microcontroller. Er zijn maar weinig verschillen met de in de EVM kast gebruikte 68HC11A microcontroller. Het belangrijkste verschil is de pin PA3. Dit is een output pin bij de 68HC11A microcontroller maar een bi-directionele pin bij de 68HC11E microcontroller.
Het Simplex3 bord heeft de volgende geheugenindeling (memory map):
adressen | functie | toelichting |
---|---|---|
$0000-$01FF | On-chip 512 byte RAM | Maar pas op! $002D-$00FF worden gebruikt door het BUFFALO monitor programma. Dit programma start als het bord wordt gereset en is nodig om te kunnen debuggen met THRSim11. |
$1000-$103F | On-chip I/O registers | De 68HC11E1 wordt op het Simplex3 bord gebruikt in de external mode. Dit wil zeggen dat de poorten B en C gebruikt worden als adres/data bus om de externe geheugens aan te spreken. |
$1200-$12FF | PSD 833F2-90J | De chip bevat het externe geheugen (192K Flash en 8K RAM) en diverse (27) I/O poorten. Dit device wordt later uitgebreid besproken. |
$2000-$3FFF | 8K RAM | Dit geheugen bevindt zich op de PSD chip kun je gebruiken voor de opslag van je programma (en eventueel voor data). |
$4000-$DFFF | 40K Flash | Dit geheugen bevindt zich op de PSD chip en kun je gebruiken in je programma om data op te slaan die behouden moet blijven als de spanning wegvalt. Je kunt ook je programma in dit geheugen opslaan. Dit wordt later nog uitgebreid besproken. |
$E000-$FFFF | ROM | Dit geheugen bevindt zich op de 68HC11 chip en bevat de BUFFALO monitor firmware. Dit programma start als het bord wordt gereset en is nodig om te unnen debuggen met THRSim11. |
Om de Simplex3 te gebruiken is een 9V adapter nodig.
Je kunt een programma in het Simplex3 bord laden met behulp van THRSim11. Het is ook mogelijk een programma op het bord te debuggen (breakpoints zetten, registers en geheugen bekijken, single steppen enz.). Let op: jumper JP1 (TRACE) moet op de stand PA3 staan.
Om programma's voor de Simplex3 met behulp van THRSim11 te kunnen simuleren moet het geheugenindeling van de simulator worden aangepast.
Toelichting:
Je kunt nu een eenvoudig assemblertaal programma voor het Simplex3 bord schrijven. Bijvoorbeeld (vb1.asm):
porta equ $1000 org $2000 start lds #$01ff again ldaa $1000 read switches PA0 and PA1 anda %00000011 clear all other PA signals lsla shift 5x so PA5=PA0 and PA6=PA1 lsla lsla lsla lsla staa $1000 write LEDs bra again
Dit programma kun je eenvoudig testen op de simulator met behulp van het PA pinnen window (Kies menu: View, Pins, PA Pins. Als je het programma start op de simulator moet PA5 de waarde van PA0 overnemen en PA6 de waarde van PA1 overnemen. Als je echte LEDs wilt zien kun je twee LEDs verbinden met PA5 en PA6. Kies menu: Connect, LED, selecteer Pin PA5/OC3, druk eerst op Connect en dan op OK. Kies nogmaals menu: Connect, LED, selecteer Pin PA6/OC2, druk eerst op Connect en dan op OK. Als je echte schakelaars wilt zien kun je twee switches verbinden met PA0 en PA1. Kies menu: Connect, Switch, selecteer Pin PA0/IC3, druk eerst op Connect en dan op OK. Kies nogmaals menu: Connect, Switch, selecteer Pin PA1/IC2, druk eerst op Connect en dan op OK.
Als je dit programma op het Simplex3 bord wil testen dan moet je de seriële poort P2 van het bord (rechts boven) verbinden met een COM poort van de PC. Als het goed is, is een seriële kabel bij het bord aanwezig. In THRSim11 moet je de communicatie opties via het menu Target, Target Communications Options... als volgt instellen:
Je kunt nu het programma in het Simplex3 bord downloaden. Bijvoorbeeld via de sneltoets Ctrl+D. Via de spatiebalk kun je het programma instructie voor instructie op het bord uitvoeren. Met de sneltoets Ctrl+F9 kun je het programma op het target bord starten. De enige manier om het programma daarna te stoppen is via de reset switch (SW2).
Je kunt het Simplex3 bord ook in C/C++ programmeren met behulp van de GNU gcc compiler. Deze compiler is opgenomen in de volledige installatie van THRSim11. Meer informatie over het debuggen van een C programma met behulp van THRSim11 kun je vinden op: http://bd.eduweb.hhs.nl/thrsim11/hllsupport.htm.
Het bovenstaande voorbeeld kun je in C als volgt implementeren (vb1.c):
int main() { volatile unsigned char* porta=(volatile unsigned char*)0x1000; while(1) { unsigned char c=*porta; /* read switches PA0 and PA1 */ c&=0x03; /* clear all other PA signals */ c<<=5; /* shift 5x so PA5=PA0 and PA6=PA1 */ *porta=c; /* write LEDs */ } return 0; }
Om dit programma te kunnen compileren is een link script nodig waarin je de linker van gcc (onder andere) vertelt hoe de geheugenindeling van de target is. Je kunt hiervoor de file simplex3.ld gebruiken. De geheugenindeling is hierin als volgt gespecificeerd:
MEMORY { ram (rwx) : ORIGIN = 0x0000, LENGTH = 0x0200 rom (rx) : ORIGIN = 0x2000, LENGTH = 0x2000 } PROVIDE (_stack = 0x01ff);
Toelichting:
!readelf -l a.out
Om het programma eenvoudig te kunnen compileren kun je de volgende makefile gebruiken. Als je wilt weten hoe dit werkt dan kun je de handleiding voor het programma make vinden op http://www.gnu.org/software/make/manual/html_node/make_toc.html.
Je kunt het bovenstaande C programma nu als volgt op het Simplex3 bord testen:
$00D9-$00DB
.
$00DC-$00DE
.
<<Nog verder invullen>>.