Simplex3 68HC11 bord.

© 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:

Microcontroller.

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.

Geheugenindeling.

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.

Voeding.

Om de Simplex3 te gebruiken is een 9V adapter nodig.

Debuggen met behulp van de THRSim11 simulator.

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.

  1. Start THRSim11.
  2. Kies de menu optie File, Options, Memory Configuration...
  3. Configureer het geheugen als volgt:

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:

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:

  1. Maak een nieuw directory aan en kopieer de files: vb1.c, simplex3.ld en makefile in dit directory. Let op: Internet Explorer zet de extensie .txt achter de makefile. Deze extensie moet je verwijderen.
  2. Laad het programma vb1.c in THRSim11. Als het goed is wordt nu de editor SciTe automatisch geopend.
  3. Compileer het programma en laad het resultaat met behulp van de sneltoets F5.
  4. Je kunt het programma nu testen op de simulator met behulp van de I/O box.
  5. Je kunt nu het programma in het Simplex3 bord downloaden door het List Window te selecteren en de sneltoets Ctrl+D te gebruiken. Je kunt onder andere ook de CPU registers en de C variabelen op het target board zichtbaar maken.

TODO:

Voorbeeldprogramma's.

<<Nog verder invullen>>.