# NEC 78K0-Familie

Bei den 78K-Familien handelt es sich um 8- und 16-Bit-Mikrocontrollerfamilien, die von der Firma Renesas Electronics (vormals NEC Electronics) hergestellt werden. Ende 2006 wurde die „78K0R“ Familie mit 16-Bit-Mikrocontrollern eingeführt. Nach der Verschmelzung von NEC zu Renesas Electronics ersetzt der 16-bittige RL78 die 78K0-Familie gänzlich und den Renesas R8C.

## Familienübersicht
### 78K0S

Die kleineren Controller innerhalb der 8 Bit Familie mit gegenüber dem 78K0 reduzierten Befehlssatz
   * hier sind zum Beispiel einige Produkte der K Series für Standardanwendungen, 78K0S/Kx1+, verfügbar, mit 1 bis 8 KByte Flash, 128 oder 256 Byte RAM, 1 Registerbank mit den 8 bzw. 16 Bit-Registern A-X, B-C, D-E und H-L, Gehäusegrößen von 10 bis 30 Pin
       Aus dieser Familie stammt auch das kleine BGA-Gehäuse, das mit den Außenmaßen von nur rund 1,9 mm × 2,2 mm Platz für 16 Balls (Pins) und unter anderem integrierten 4 Kilobyte Flash, 128 Byte RAM, 4 Kanal 10 Bit AD-Wandler, einen 8 Bit- und einen 16 Bit-Timer, bis zu 14 I/O-Leitungen sowie On-Chip-Oszillatoren bietet. Die Produktbezeichnung lautet 78K0S/KY1+ bzw. µPD78F9212.

### 78K0

die verbreitetste NEC 8 Bit Familie. 4 Registerbänke mit jeweils 8 bzw. 16 Bit Registern A-X, B-C, D-E und H-L, Multiplikations- und Divisionseinheit im Kern (8 × 8 bzw. 16/8 zum Teil auch mit 16 × 16 bzw. 32/16).
Einige Produkte sind
   * 78K0/Fx2 in der "F Series" mit und ohne CAN, insbesondere für Automobilanwendungen, mit 32 bis 128 KByte Flash, 2 Byte bis 7 KByte RAM, Gehäusegrößen von 44 bis 80 Pins
   * 78K0/Ix2 in der "I Series" insbesondere für Motor- und Lichtsteuerungen, mit 4 bis 32 KByte Flash, 384 Byte bis 2 KByte RAM, Gehäusegrößen von 16 bis 64 Pins.
   * 78K0/Lx3 in der "L Series" mit integriertem LCD-Controller. Es können LCD-Displays mit bis zu 8 fach multiplex mit 36 I/O, das heißt bis 288 Elemente (oder z. B. auch 4 × 40 Elemente), angesteuert werden. 8 bis 60 KByte Flash, 512 Byte bis 2 KByte RAM, Gehäusegrößen von 48 bis 80 Pins. Daneben wird auch noch die ältere Version 78K0/Lx2 angeboten. Diese bestehen im Gegensatz zur 78K0/Lx3 intern aus 2 Dies, hier können LCD-Displays nur bis zu vierfach multiplex mit maximal 40 I/O angesteuert werden. 16 bis 128 KByte Flash, 756 Byte bis 7 KByte RAM, Gehäusegrößen von 64 bis 100 Pins.
   * Dazu kommen noch einige ASSPs (Applikationsspezifische Standardprodukte) für z. B. Motor Control, spezielle Automotive Anwendungen oder USB (Function)

### 78K0R

mit 16 Bit das jüngste Mitglied der Familie. Besonderheiten sind etwa der integrierte DMA-Controller, eine dreistufige Befehlspipeline und bei einigen Produkten ein externes Speicherinterface. Der Registersatz ist der gleiche wie bei der 78K0-Familie, also vier Bänke mit jeweils acht 8 Bit- oder vier 16 Bit-Registern.
Einige Produkte sind
   * 78K0R/Kx3 und 78K0R/Kx3-L in der "K Series", mit 16 bis 512 KByte Flash, 1 bis 30 KByte RAM, Gehäusegrößen von 44 bis 144 Pins
   * 78K0R/Fx3 in der "F Series" mit CAN, insbesondere für Automobilanwendungen, mit 24 bis 256 KByte Flash, 1,5 bis 16 KByte RAM, Gehäusegrößen von 30 bis 100 Pins
   * 78K0R/Ix3 in der "I Series" insbesondere für Motor- und Lichtsteuerungen, mit 16 bis 64 KByte Flash, 1 bis 3 KByte RAM, Gehäusegrößen von 30 bis 64 Pins
   * 78K0R/Lx3 in der "L Series" mit integriertem LCD-Controller, mit 64 bis 128 KByte Flash, 4 bis 7 KByte RAM, Gehäusegrößen von 80 bis 128 Pins

## Speicheraufteilung

Die Speicheraufteilung ist nach der Von-Neumann-Architektur ausgeführt, d. h. Programm- und Datenspeicher werden über einen gemeinsamen Bus angesprochen.
Bei den 8-Bit-Controllern der Serie 78K0 kann ein Flashbereich bis 60 KB linear angesprochen werden, bei den Bausteinen mit mehr als 60 KB Flash werden die Bereiche größer 32 KByte in sogenannte Bänke von jeweils 16 KByte eingeteilt.
Die 16-Bit-Controller der Familie 78K0R können ihren gesamten Speicher linear adressieren.

## Interruptbehandlung

Die Mikrocontroller verfügen über eine voll vektorisierte Interruptbearbeitung für jede Interruptquelle mit zuweisbarem Prioritätslevel.

## Der Oszillator

Die Mikrocontroller der 78K-Familie verfügen alle über einen 8-MHz-Oscillator auf dem Chip. Darüber hinaus befindet sich noch ein stromsparender 240-kHz-Ringoszillator für den Watchdog auf dem Chip. Dieser Ringoszillator kann aber nicht die CPU oder andere Peripherie mit einem Takt versorgen.

## Interne Peripherie

Die Ausstattung mit interner Peripherie unterscheidet sich von Derivat zu Derivat, besteht aber prinzipiell u. a. aus den folgenden Funktionsblöcken:
* Timer, in 8- und/oder 16-bit Breite
* A/D-Wandler
* PWM
* Standard-Kommunikationsschnittstellen UART (teils auch LIN-kompatibel), SPI und I²C
* USB-Function (Slave) für maximal 12 MBit/s (FullSpeed-USB)
* CAN 2.0B
* Watchdog-Timer
* LCD-Controller und -Treiber für Matrix-LCDs
Diese Peripheriefunktionen werden über spezielle Funktionsregister angesprochen und können je nach Funktion verschiedene Interrupts auslösen.

## Programmentwicklung

Um den Mikrocontroller in einer Anwendung einsetzen zu können, muss zuerst vom Entwickler ein Programm entwickelt werden. Die Programmentwicklung kann mittels Assembler oder einer Hochsprache, z. B. C geschehen. In der Industrie kommt heute zumeist nur noch C zum Einsatz, da der Programmcode später damit besser zu pflegen ist.
* Programmierung in C
    C-Compiler zur Programmerzeugung sind von NEC Electronics und IAR verfügbar.
* Fehlersuche – Emulator
    Zum Debuggen kann man auf den Emulator von NEC, den IE-Cube, zurückgreifen. Mit dem IE-Cube kann man die Chips aber nicht programmieren.
* Fehlersuche – Debugger
    Zum preisgünstigen Debuggen kann man bei vielen 78K-Derivaten auch auf einen On-Chip Debugger von NEC, den älteren MiniCube (verschieden für die verschiedenen Familien) oder den neuen MiniCube2 (ein Modell für alle Familien inklusive der 32 Bit V850-Controller), zurückgreifen. Mit den MiniCube und MiniCube2 kann man die Chips auch programmieren. Auch Drittanbieter bieten Debuglösungen für die 78K Familien an (z. B. Lauterbach TRACE32 oder iSYSTEM)
* Programmierung
    Dieser Vorgang wird auch als Brennen bezeichnet. Dies bedeutet, dass Informationen (z. B. ein kompiliertes Programm, auch Firmware genannt) auf dem internen Flash-Speicher oder OTP-Speicher des Bausteins gespeichert werden. Hierzu bieten die 78K-Mikrocontroller eine serielle Programmier-Schnittstelle, die auch noch zur Übertragung des Maschinencode benutzt werden kann, wenn der Chip bereits in die Schaltung eingebaut wurde. Dieser Vorgang kann dann mit einem Programmiergerät oder bei neueren Derivaten mit einem der oben aufgeführten Debugger durchgeführt werden. Ein Programmiergerät gibt es von NEC Electronics unter der Bezeichnung ‚PG-FP5‘.
* Minicube2
* 78K0R Evalboard 78K0R - Cool-It
* 78K0 Minicube
* 78K0S Demoboard Low Pin Count - Do-It

## Anwendungen

Die 78K-Mikrocontroller von NEC Electronics lassen sich in vielen Standard- und Spezialanwendungen von Industrie, Automobiltechnik, Kommunikation oder Medizintechnik einsetzen. Hauptanwendungsgebiete sind in der Antriebstechnik zum Ansteuern und Regeln von Motoren, z. B. Bürstenmotoren (DC-Motoren) oder Bürstenlose Motoren (BLDC), in der Automobilelektronik als intelligenter Sensor oder Aktor.

## RL78

Der RL78 ist eine Weiterentwicklung des CPU-Kerns aus der 78K0-Familie. Es bestehen verschiedene Ausführungen für verschiedene Anwendungsbereiche, mit einer Auswahl von Peripherieelementen wie z. B. serielle I/O Ports, unterschiedliche Größen von ROM und Flash-Speicher und RAM. Die On-Chip ROM- und Flash-Speicher rangieren in den Bereichen von 1 KByte bis 512 KByte und RAM von 128 Byte bis 32 KByte.