ZNEO

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Der Zilog ZNEO (Z16Fx) ist ein 16/32-Bit Mikrocontroller. Der interne Flash Speicher ist 16-Bit organisiert. Jeweils 32 Bit breit sind die 14+2 universellen Arbeitsregister.

Durch 32-Bit Verarbeitungsbreite, CISC Befehlssatz und Hardware MUL/DIV übersteigt die Verarbeitungsleistung des ZNEO das sonst übliche 8-Bit Controller Niveau deutlich. Sie liegt, bei gleicher Taktfrequenz, nahe der von ARM-7 Derivaten. Die Struktur und der Komplexitätsgrad des ZNEO ähneln aber mehr den aktuellen 8-Bit Mikrocontrollern.

Alleinstellungsmerkmal

Das unbeschränkte Zilog Entwicklungspaket mit integriertem Editor, C-Compiler, Assembler, In-System-Debugger sowie Programmier- und Debugging-Kabel ist für 30$ zu haben.

Auf den ersten Blick findet man das auch bei anderen Controller Familien. Beim zweiten Hinschauen fehlt aber entweder die Möglichkeit zum Debugging oder die Codegröße ist begrenzt.

Von Quereinsteigern völlig unterschätzt, das Debugging. Damit verbringt man die meiste Zeit und deshalb ist es das Wichtigste am Programmieren. Einen Controller ohne In-System Debugging zu programmieren ist so frustrierend und uneffizient wie das Arbeiten in Maschinensprache; Binärzahl für Binärzahl.

Bauformen

LQFP und PLCC

Der ZNEO ist als 64-pin LQFP, 68-pin PLCC, 80-Pin QFP und 100-pin LQFP verfügbar. Die 80- und 100-poligen Versionen beinhalten, bis auf eine Ausnahme, ein paralleles Adress-/Daten-Interface zu externen Komponenten.

Für Prototyping und Hobby ist die sockelbare 68-pin PLCC Version (Z16F2810VH) mit 128kB Flash, 4kB RAM besonders interessant. Diese ist das Äquivalent der geometrisch kleineren 64-pin LQFP Version Z16F2810AG.

Es gibt eine ZilogZneoSmall.zip optimierte Eagle Library mit den 64- und 68-Pin Bauformen.

Eckdaten

Der Betriebsspannungsbereich ist 2,7-3,6V. Erwähnenswert ist dabei, dass alle rein digitalen IO Pins externe Spannung bis 5,5V vertragen. Die intern erzeugte ADC Referenzspannung von 2V steht ab 3V Betriebsspannung zur Verfügung.

Getaktet wird der Controller vom internen Oszillator mit 5.5MHz oder 32kHz, internen Watchdog Timer oder externen Oszillator/Quarz/Resonator/RC-Glied. Die maximale Taktfrequenz ist 20MHz.

Standard Baugruppen sind drei 16-Bit Timer mit PWM, ein dedizierter 6x1/3x2-Kanal PWM Timer, zwei LIN-UART, Infrarot Encoder/Decoder, ESPI, I2C, Watchdog, 12-Kanal 10-Bit ADC, ein Komparator, ein OPV, 4-Kanal DMA, VBO und PO-Reset.

Der Adressraum des ZNEO ist linear und wird mit 24 Bit adressiert. Der C-Compiler reserviert (einstellbar) die untersten 32kB für „const“ Flash-Daten. Diese werden, Befehlsbreite sparend, mit 16 Bit Adresse angesprochen. Oberhalb des nachfolgenden Codebereichs werden Flash-Daten mit 24 Bit adressiert (far).

Die ZNEO Versionen ohne paralleles Interface haben alle 128kB Flash. Bei den übrigen findet man 128, 64 oder 32kB. Dem zur Seite stehen meist 4kB RAM. Der Flash Speicher ist in 2kB Bänken organisiert die getrennt gelöscht werden können. Damit ist die Emulation des fehlenden EEPROM möglich. Extern, via parallelem Interface, angebundener Flash Speicher kann wie interner Flash Speicher per Programmierkabel geladen werden. Bei gleichem C-Programm benötigt der ZNEO im Vergleich zu RISC Mikrokontrollern nur rund 50 Prozent des Flash Speicher.

Entwicklungshardware

USB Smart Kabel

Als komplettes Paket empfiehlt sich das Zilog Contest Kit ZNEOCTK0100KIT, verfügbar bei Mouser.com, für 49,99$. Es besteht aus USB Smart Kabel, Universal-Netzteil und ZNEO Contest Board mit Z16F2811FI (128kByte Flash), I2C EEPROM (PCA8550), SPI Thermometer (DS1722) und Punktmatrix LED Display.

Ebenfalls 128kByte intern Flash bietet das Zilog Entwicklungs-Kit Z16F2800100ZCOG für 99,95$. Es basiert auf dem 100-Pin Z16F2811AL20SG, externem Flash 1Mx16, externem SRAM 256Kx16, 3 LEDs, RS232, irDA, USB Smart Kabel und Universal-Netzteil. Diese Karte kann allein stehend oder als Prozessor Modul für das modulare Entwicklungssystem ZGENPRP0100MDS genutzt werden.

Minimalbeschaltung

Ein Entwicklungsboard kann man aber auch leicht selbst bauen. Notwendig sind eine Lochraster Karte, der Z16F2810VH im PLCC-68 Gehäuse, die passende Fassung für Lochraster, eine 3x2 Stiftleiste für den Anschluss des USB Smart Kabel und einige Kleinteile. Verdrahtet wird das Ganze mit 0,2-0,3mm Fädeldraht. Zur Stromversorgung reichen 4 Rundzellen.

Zum Programmieren und Debuggen benutzt man das preisgünstige USB Smart Kabel ZUSBSC00100ZACG für 29,95$ oder das ähnliche Ethernet Smart Kabel ZENETSC0100ZACG für 69,99$.

Die bei Kauf meist veraltete Firmware des Smart Kabel sollte auf den neuesten Stand gebracht werden. Aktuelle Firmware-Versionen befindet sich, mit einer genauen Update Vorschrift, im Ordner des Zilog Development Systems ZDSII\bin\firmware. Nicht unerwähnt soll bleiben, dass diese beiden Programmier- und Debugging-Kabel auch mit den 8-Bit Mikrokontrollern der Z8 Encore! Reihe zusammenarbeiten.

Entwicklungssoftware

Das Zilog Developer Studio II (ZDS II) ist ein integriertes Entwicklungs- und Debug-Tool für Assembler und C. Zum Zeitpunkt dieser Niederschrift in der Version 4.11.1. Es ist kostenlos downloadbar und ohne Beschränkungen.

ZDS II gestaltet das Anlegen und Parametrieren von Projekten sehr einfach. Alle Optionen für Assemblieren, Kompilieren, Linken und Debuggen werden zusammengeklickt. Manuelles Bearbeiten eines Makefile ist nicht notwendig.

Leider ist es ein halbherzig entwickeltes Programm mit einigen Bugs. Die Ursachen liegen im Editor- und Disassembler-Fenster. Beide vertragen nur bedingt Umlaute oder Sonderzeichen wie das hochgestellte °. Bei Umlauten kann man das Problem durch Kopieren und Einfügen umgehen, eine befriedigende Lösung ist das aber nicht. Eine weiter Unsicherheit sind die deaktivierbaren Variablen-Popups während des Debuggens. Trotzt dieser Kritikpunkte ist das Programm gut zu bedienen und auf Grund seiner Geradlinigkeit kann man nach kurzer Zeit produktiv damit arbeiten.

Das Help-System ist durch die vielen Controllerfamilien etwas unübersichtlich aber vollständig und hilfreich.

Die Hardware spezifische C-Header Datei enthält leider keine symbolischen Konstanten für die Bits der Konfigurations-Register des Controllers. Abhilfe schaffen nachfolgende C Dateien im ZIP: ZneoHeader_2009-01-27.zip

Das Flashen des Controllers erfolgt direkt aus ZDS II. 10kB brauchen 8 Sekunden. 100kB sind in 40 Sekunden geladen.

Im debugging Modus des Zielsystems kann man das Programm in getrennten Fenstern auf Hochsprach- und/oder Assembler-Ebene Schritt für Schritt abarbeiten und untersuchen. Der Einzelschritt-Betrieb reagiert relativ träge. Dafür bleibt der Debugger aber im Thread und springt nicht unkontrolliert zu Interrupts. 4 Breakpoints sind gleichzeitig möglich.

Bei Programm-Unterbrechung werden der Callstack, Speicherinhalt, die Arbeits- und Konfigurations-Register, alle lokalen Variablen der aktuellen Funktion und die gewünschten globalen Variablen angezeigt. Natürlich kann man alle diese Werte auch verändern; globale Variable sogar während des Programmlaufs.

Für die Produktion existiert ein separates und gutes Flash Programm SFP.

Bezugsmöglichkeiten

Dokumentation, Tools