NuTiny Board
N76E003
Letzte
Woche kam das Starterkit von Nuvonton an. Der Keil C-Compiler und die
Beispielprojekte waren schon installiert (siehe Labortagebuch: Mikrocontroller von
Nuvoton),
sodass ich gleich beginnen konnte, die wichtigsten Eigenschaften des
N76E003 zu testen. Die Platine trägt links den Zielcontroller und
rechts das Programmier- und Debug-Interface Nu-Link-Me. Man kann beide
Teile später trennen und hat dann ein vollständiges Programmiergerät
für die Controllerfamilie. Die fünf Leitungen zum Zielcontroller sind an JP2 herausgeführt. Außer der Betriebsspannung und Reset
werden nur zwei Ports angeschlossen, CLK und Data. Rechts oben gibt
es den Mini-Dipschalter SW3. Wenn man alle vier Schalter auf ON stellt,
hat man eine virtuelle COM-Schnittstelle für TX und RX des Controllers.
Die wichtigsten Eigenschaften des 8081-kompatiblen N76E003: Er hat 18
kB Flash, von denen man 2 kB oder mehr als Boot-Bereich verwenden kann.
Außerdem können beliebige Bereiche des Flash als Datenspeicher genutzt
werden. Ein Datenlogger für bis zu 16 kB ist denkbar. Die Ports sind
wahlweise CMOS-Ein- oder Ausgänge, oder auch quasi-bidirektionale Ports
wie beim originalen 8051. Es gibt dann noch weitere Eigenschaften, wie
z.B. Schmitt-Trigger-Eingänge, die zusätzlich eingeschaltet werden
können. Der Controller hat einen genauen RC-Oszillator mit 16 MHz und
kann wahlweise mit oder ohne Quarz betrieben werden. Der AD-Wandler hat
bis zu acht Eingänge und eine Auflösung von 12 Bit. Es gibt eine
interne Referenz mit 1,2 V und dazu eine bei der Produktion
eingespeicherte Konstante, die die genaue Spannung nennt.
Das
Beispielprojekt Output\ADC_Bandgap_VDD zeigt die Eigenschaften des
AD-Wandlers und der Bandgap-Referenz. Hier wird durch Messung der
Referenz die genaue Betriebsspannung VDD bestimmt. Das Beispiel zeigt
die im ROM gespeicherte genaue Bandgap-Spannung von 1,2315 V und die
damit gemessene VCDD von 3,048 V. Mein Digitalmultimeter
behauptet, es wären 3,013 V. Die Abweichung beträgt 1%.
Das Beispiel GIOP behandelt die Ports. Man sieht ein Blinken an der
roten LED am Port P1.2 und kann die Reaktion an den anderen Ports
messen. Die Eigenschaften aller Ports werden mit
Set_All_GPIO_Quasi_Mode; // Define in Function_define.h eingestellt. In
Function_Definde.h findet man, dass tatsächlich jeweils zwei Register
pro Port betroffen sind:
P0M1=0;P0M2=0;P1M1=0;P1M2=0;P3M1=0;P3M2=0; Diese Zeile habe ich direkt
eingesetzt, was auch funktioniert, es blinkt. Ganz ohne geht es nicht,
weil nach einem Reset alle Port hochohmige CMOS-Eingänge sind.
Der Compiler erzeugt ein Hex-File im Output-Verzeichnis. Interessant
ist nun, ob man ein Hexfile auch ohne die IDE in den Controller bringen
kann. Das Ziel ist nämlich, dass für richtige Anwendungen ein anderer
Compiler wie SDCC ohne Beschränkung der Programmgröße eingesetzt wird.
Nuvoton stellt ein Programmier-Tool bereit, das auch mit dem Nu-Link-Me
arbeitet. Wichtig ist, dass die 8051 T1 Serie gewählt wird. Beim ersten
Anschluss möchte das Tool die Firmware updaten, was auch ohne Probleme
funktioniert.
Mit einem Klick auf Connect findet der Brenner von allein den
verwendeten Chip. Dann muss man (eigentlich nur für das AROM) die
Hex-Datei angeben und untern AROM anklicken. Mit Start wird der
Controller gebrannt. Wenn man im Laufe der Arbeit das Programm ändert
und neu kompiliert, muss man nur auf Refresh klicken, damit es neu
geladen wird.
Soweit funktioniert alles. Dem Einsatz anderer Compiler steht also
nichts mehr
im Weg. Mit Keil-µVision sollen dann die Details untersucht werden,
damit klar
ist, welche Register bei einer Aufgabe mitspielen. Die eigentliche
Arbeit soll
aber mit SDC oder vielleicht mit Bascom-51 gemacht werden.
weiter...