Mitsubishi Single-Chip Microcomputer

Transcription

Mitsubishi Single-Chip Microcomputer
EVBM16C/62P
MANUAL
© 2003-2005 by Glyn GmbH & Co KG, Mikrocontroller Group
History
30.05.03
09.07.03
07.08.03
15.07.05
29.11.05
23.10.06
EW15
EW15
EW15
EW15
EW15
DP115
V1.0
V1.1
V1.2
V1.3
V1.4
V1.5
started
new Sevenstax Demo, new Sample Demos, Tasking PLL-Bugfix
new Tasking EDE V2.3r2
Change to M30626FJPFP (512KB Flash)
New Version
UIC Programmer added
Support contact address:
[email protected]
Inhaltsverzeichnis
Inhalt
Seite
1.0
Einleitung
1.1
Lieferumfang
1.2
Kurzanleitung
3
3
3
2.0
Hardware
2.1
technische Daten
2.2
Spannungsversorgung
2.3
Jumper
2.4
Anschlüsse
2.5
Memory mapping
2.6
Anwenderhinweise
4
4
4
4
4
5
5
3.0
Software
3.1
mitgelieferte Software
3.2
Beschreibung der Monitorsoftware
3.3
Beschreibung der Flashersoftware (Renesas)
3.4
Beschreibung der Flashersoftware
3.5
Beschreibung des UIC Programmers
3.6
Beschreibung des KD30 Debuggers
3.7
der Renesas C-Compiler als Kommandozeilenversion
3.8
der Renesas C-Compiler V5.10
3.9
das RTOS (Segger)
6
6
6
7
9
11
12
13
15
16
4.0
Tipps und Tricks
17
Anhang
EVBM16C/62P Bauteilliste
EVBM16C/62P Schaltplan
EVBM16C/62P Board
19
22
23
© 2003-2005 Glyn GmbH & Co. KG
Alle Rechte vorbehalten. Kein Teil dieser Dokumentation darf in irgendeiner Form darf in irgendeiner
Form (Druck, Fotokopie, Mikrofilm oder einem anderen Verfahren) ohne schriftliche Genehmigung der
Glyn GmbH & Co. KG, D-65510 Idstein reproduziert oder unter Verwendung elektronischer Systeme
verarbeitet, vervielfältigt oder verbreitet werden.
Microsoft and MS-DOS are registrated trademarks of Microsoft Corporation.
Bezüglich des Inhalts dieser Dokumentation und des EVBM16C62P Software-Paketes übernimmt die
Glyn GmbH & Co. KG, D-65510 Idstein keinerlei Haftung oder Garantie. Die Firma Glyn GmbH & Co.
KG, D-65510 Idstein behält sich das Recht der Überarbeitung dieses Werkes oder des EVBM16C62P
Software-Paketes vor. Alle Programme und Beschreibungen wurden nach bestem Wissen erstellt und
mit Sorgfalt getestet. Dennoch können wir Fehler nicht ganz ausschließen. Aus diesem Grund
übernimmt die Glyn GmbH & Co. KG keine Garantie für mögliche Fehler oder Folgeschäden, die in
Verbindung mit der Bereitstellung, Leistung oder Verwendung dieses Materials stehen.
2
1.0
Einleitung
Das Glyn EVBM16C/62P Evaluation Board ist ein Mini-Emulator um einfach und preiswert mit den
Features des M16C Mikrocontrollers eigene Applikationen zu entwickeln. Diese Mikrocontrollerfamilie
wird von Renesas (ehemals Mitsubishi Electric) seit 1996 gefertigt und ist seit 1999 auch mit FlashSpeicher erhältlich.
Das Applikationsprogramm darf bis zu 496Kbytes groß sein und dürfte für die meisten Applikationen
ausreichen.
Zu den mitgelieferten Entwicklungswerkzeugen gehören KD30 Source-Level Debugger, Renesas CCompiler, sowie Flasher Programm. Zusätzlich ist auch noch ein RTOS von der Fa. Segger (Trial
Version mit bis zu 3 Tasks) dabei, welches für beide C-Compiler vorbereitet wurde.
Auf der CD ist ein speziell für dieses Tool vorbereitetes Beispiele.
Im Verzeichnis 'Samples' findet man (ebenfalls für beide Compiler) vorgefertigte Testprogramme um
die Peripherie des Mikrocontrollers zu programmieren.
1.1 Lieferumfang
Dem EVBM16C/62P Board liegt folgendes bei:
1. dieses Manual
2. eine CD mit allen Softwaretools
3. das Board mit geflashtem Monitor.
4. RS232 Kabel
5. zwei 50-polige Stiftleisten zum auflöten
1.2 Kurzanleitung
Um das Board schnell auszuprobieren geht man folgendermaßen vor:
1. serielles Kabel mit dem Anschluss X1 des Boards und dem PC verbinden.
2. Spannung anschliessen (>= 9V).
3. den KD30 Debugger unter CDROM:\KD30_Debugger installieren und dann starten.
4. unter File-->Download-->Load Module das File CDROM:\Samples\led_toggle\ led.x30 laden.
5. GO im KD30 drücken.
6. Die rote LED blinkt
Wichtige Links:
MCU Datenblätter
M16C Forum
Aktuelle M16C und Board Infos
MCU Tools
Renesas allgemein
RTOS
TCP/IP-Stack
B/W, Color Display Treiber
Mikrocontroller Forum / Beispiele
EMIT TCP/IP Software
IAR C-Compiler
http://www.renesas.com/eng/products/mpumcu/index.html
http://www.m16c-forum.com/
http://www.m16c.de
http://www.renesas.com/eng/products/mpumcu/tools/index.html
http://www.renesas.com
http://www.segger.com
http://www.segger.com
http://www.segger.com
http://mikrocontroller.cco-ev.de/de/m16c.php
http://www.emware.com
http://www.iar.com
3
2.0
Hardware
2.1
technische Daten
Das Board wird mit 12MHz getaktet und verfügt über einen 5V Spannungsregler. Intern wird im
M16C/62P der Takt mit der PLL auf 24MHz verdoppelt. Der nötige RS232 Pegelwandler
MAX232 befindet sich ebenfalls auf der Platine. Für den Flash-Programming Modus ist ein
spezieller Jumper (JP12) vorhanden und wird mit einer roten Leuchtdiode angezeigt.
2.2
Spannungsversorgung
Das Board wird über die 2 polige Anreihklemme angeschlossen. Eine unstabilisierte Spannung
von 8-15V ist ausreichend. Es wird ein Strom von bis zu 100mA benötigt. Das Board kann man
auch direkt über die Pfostenfeldstifte mit 5V bzw. 3,3V speisen. Dazu muß nur die Verbindung
zum Spannungsregler unterbrochen werden (JP9). Liegt Spannung an, so leuchtet die grüne
Leuchtdiode.
2.3
Jumper
JP1
JP2
JP3
JP4
JP5
JP6
JP7
JP8
JP9
JP10
JP11
RESET
JP12
JP13
MAX232
2.4
Jumper für die Power LED. Damit kann für Strommessungen die LED
ausgeschaltet werden.
Stiftleistenanschluß für die CPU-Pins 1-50
Stiftleistenanschluß für die CPU-Pins 51-100
Zwei Jumper für den SUB-Oszillator. Werden gesteckt, um die 32KHz
Oszillatorschaltung auf dem Board zu verwenden. Wenn diese offen sind,
werden P86 und P87 nur als Port-Pins verwendet.
Ist nur zum flashen notwendig, nicht zum debuggen.
Verbindet dir RXD0-Leitung mit dem MAX232. Sollte P62 aber als Port
verwendet werden, so muß dieser offen sein.
Verbindet dir TXD0-Leitung mit dem MAX232. Sollte P63 aber als Port verwendet
werden, so muß dieser offen sein.
Verbindet den VREF-Pin mit VCC. Bei Verwendung anderer Spannungen muß
dieser offen sein.
Verbindet den Ausgang vom Spannungsregler mit der Schaltung. Sollte das
Board über die Stiftleistenanschlüsse JP2/JP3 mit anderer Spannung gespeist
werden (z.B. für eine Strommessung), so muß der Jumper offen sein.
Verbindet Pin 62 (VCC2) mit VCC.
Verbindet Pin 16 (VCC1) mit VCC.
Damit kann ein Reset ausgelöst werden.
Jumper zum programmieren. Im geschlossenen Zustand wird die MCU nach
einem RESET in den Bootloadermode gebracht.
Verbindet den Byte-Pin mit GND
Der Chip ist gesockelt, um Strommessungen an der MCU zu ermöglichen
(MAX232 Chip aus dem Sockel ziehen)
Anschlüsse
Auf dem Board befinden sich zwei Reihen mit je 50 Anschlüssen. Jeder Anschluss
entspricht dem jeweiligen Pin der MCU. Dem Board sind zwei 50-polige Stiftleisten
beigefügt, die man unter- oder auf das Board löten kann. Je nach Anwendungsfall.
Zwei 9-polige D-SUB Buchsen X1 und X2 ermöglichen Kommunikation mit der Umwelt. Zum
debuggen muss das mitgelieferte Kabel mit X1 verbunden werden (UART1). Der Anschluss
X2 ist mit der UART0 verbunden, kann aber mit den Jumpern JP6 und JP7 wieder von dieser
getrennt werden.
4
2.5
Memory mapping
00000h
SFR
00400h
RAM
31KB
User RAM Area
31488Bytes
07FFFh
07F00h
Monitor RAM Area
256 Byte
User ROM Area
496KB
80000h
FE000h
do not use
Monitor ROM Area
16KB
Flash Memory
512KB
do not use
do not use
do not use
do not use
do not use
FFFDCh
do not use
Fixed Interrupt
Vector Area
do not use
Reset
FFFFFh
Für eigene Programme steht das SRAM von 0400h bis 07F00h zur Verfügung. Das Flash ist
für eigene Applikationen im Bereich von 80000h und FDDFFh nutzbar.
2.6
Anwenderhinweise
Bei jedem Download wird die MCU geflasht. Entgegen den Daten im Users Manual ist die
MCU nicht 100 mal, sondern 100.000 mal flashbar.
Das Prozessor Mode Register 0 darf nicht verändert werden, falls doch, meldet sich der
Debugger ab, das Anwenderprogramm läuft aber weiter (dabei Free RUN-Mode nutzen).
Die Watchdog-, Adress Match-, NMI-, Overflow- und Undefined Instruction Interrupts sind bei
dem Monitor nicht verwendbar.
5
3.0
Software
3.1
mitgelieferte Software
NC30 C-Compiler V2.00............ Ansi C-Compiler mit Assembler von Renesas. Ältere DOS-Version
ohne Limitierung. Läuft nicht unter Win NT/2000/XP. Im
Unterverzeichnis first und LED_toggle befinden sich zwei fertige
compilierte Demos für das EVBM16C Board.
NC30 C-Compiler V5.10r1........ Neuste Version des Ansi C-Compilers von Renesas als Trial Version.
Diese läuft 4 Monate. Bitte nicht in das NC30V2.00 Verzeichnis
kopieren. Wird diese Version verwendet, müssen die Pfade zur V2.00
in der Autoexec.bat gelöscht werden.
NC30 C-Compiler V5.30 (HEW) Neuste Version des ANSI C-Compilers von Renesas als Trial Version.
Diese läuft 60 tage als Vollversion, compiliert danach aber nur noch
Code bis 64KByte. Dieser Compiler beinhaltet die kostenlose
Benutzeroberfläche HEW.
IAR............................................ Aktuelle Kickstart-Versinon des C-Compilers. Kann bist zu 16KByte
Code compilieren.
KD30_Debugger ...................... Windows 98/2000/NT4/XP Source Level Debugger für Renesas-,
Tasking- und IAR C-Compiler und Assembler.
EMI, EMV.................................. EMI und EMV Design-Hinweise für Mikrocontroller
Datasheets................................ Datenblätter für die M16C/62P Mikrocontroller inkl. Software Manuals.
Im File rej09b0016_16c62phm.pdf befinden sich im hinteren Teil ganz
detailierte Informationen zur Peripherie.
Reliability report...................... Reliability Reports für den M30626FJPFP
FlashStart................................. Flash Programm von Renesas für das serielle asynchrone Flashen
der Mikrocontroller. Ist notwendig um bei 'leeren', neuen MCUs den
ROM-Monitor zu flashen, oder um später das eigene Programm ohne
ROM-Monitor zu flashen.
Flasher...................................... Batchfähiges Flash Programm, ebenfalls für das serielle asynchrone
Flashen der Mikrocontroller.
Application Notes...................... Hier sind 4 Application Notes: 3-Phasen Motor PWM, CANSchnittstelle, Flash programming und I²C Schnittstelle beschrieben.
RTOS (Segger)......................... RTOS von der Fa. Segger für Tasking- und Renesas C-Compiler.
Ohne Limit bis 3 Tasks.
Packages.................................. Gehäusemaßzeichnungen
Monitorgenerator...................... ROM Monitore mit Source, fertig mit dem AS30 (Renesas) assembliert
für den M30626FJPFP.
Samples.................................... Programmbeispiele für die Peripherie der MCUs. Für den NC30 CCompiler von Renesas vorbereitet.
3.2
Beschreibung der Monitorsoftware
Der Monitor belegt im Flash- Speicher den Bereich von FE000h bis FFFFFh und im SRAM den
Bereich 07F00h bis 07FFFh. Der Monitor ist als Source und als Motorola-File auf der CD im
Verzeichnis 'monitor' für den M30626 vorhanden. Die Monitorsoftware erwartet an UART1 die PC
Debuggersoftware. Die Kommunikationsgeschwindigkeit beträgt 38400Bd.
6
3.3
Beschreibung der Flashersoftware Flashsta (Flasher_Mitsu)
Vorab Info: Das Flash-Programm wird erst am Schluß der Entwicklung benötigt.
Es wird nicht zum debuggen benötigt !
Man flasht damit das Applikationsprogramm oder einen neuen ROM-Monitor in die MCU. Deswegen
kann man diesen Teil des Manuals erst mal überspringen.
Jeder Flash Mikrocontroller aus der M16C Serie verfügt über einen integrierten Bootloader. Bei dem
M16C/62P ist dieser in einem zusätzlichen Flash-Speicher von 8Kbytes abgelegt.
Durch das umstecken des JP12 (programmieren) startet die MCU nach dem Reset diesen Bootloader.
Ist der CLK1-Pin High, so geht der Bootloader in den seriellen synchronen Betrieb, ist er Low (wie in
dieser Schaltung) geht er in den asynchronen Betrieb. Im Gegensatz zum synchronen Modus sind im
asynchronen Modus sind nicht alle Quarzfrequenzen möglich, deshalb gibt Renesas im Datenblatt die
Frequenzen an, mit denen es funktioniert.
Hier die möglichen Quarztakte und Baud-Raten für den M30626FJPFP:
16MHz
12MHz
11MHz
10MHz
8MHz
7,3728MHz
6MHz
5MHz
4,5MHz
4,194304MHz
4MHz
3,58MHz
3MHz
2MHz
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
---
38400
38000
38000
----38400
38400
----38400
--38400
38400
---
57600
57600
--57600
57600
57600
----57600
----57600
-----
Flashersoftware starten:
Durch einen Doppelklick wird das Programm Flashsta.exe gestartet. Die detailierte
Bedienungsanleitung zu dem Programm (in englisch) findet man im File manual_e.pdf.
Das Programm fragt jetzt nach der RS232 Schnittstelle des PCs an dem der Mikrocontroller
angeschlossen ist. Bitte noch Internal Flash Memory auswählen und bestätigen.
Sollte es nach kurzer Zeit nach 9600 Bd fragen, so ist keine Verbindung zustande gekommen. Sind
alle Verbindungen o.k. und greift kein zweites Programm auf die COM- Schnittstelle zu, so ist die
Schaltung funktionsuntüchtig.
In diesem Fall sollte man noch einmal Reset drücken, den Oszillator-, Betriebsspannung- und am
MAX232 die Spannungspegel prüfen. Eigentlich sollte nichts schiefgehen. Falls man aber ein Fenster
sieht, in dem nach einem Filenamen gefragt wird, hat alles funktioniert.
Bitte den Filenamen auswählen und bestätigen. Es muß ein Motorola Hex-File sein.
Das Flash-Programm Flashsta.exe wird sich jetzt über das Fehlen des ID-Files beschweren, falls das
ID File nicht vom C-Compiler oder Assembler generiert wurde. Man kann es zunächst erst einmal
wegklicken.
Eine Zeile tiefer sind 7 Felder zu sehen. Dort wir der Identifier des Mikrocontrollers eingegeben, der
jetzt gerade läuft. Wurde er noch nie programmiert, oder ist er vorher gelöscht worden, gibt man 7 x
FFh ein. Hat man ein Assemblerprogramm (z.B. unseren Monitor) oder ein C-Programm vorher
geflasht, so gibt man 7 x 00h ein. Wurde vorher ein spezieller ID geflasht, so gibt man diesen ein.
7
Ist alles in Ordnung., erscheint dieses Fenster. Falls nicht, war die ID falsch.
Mit 'Setting' stellt man nun die maximale Baud-Rate ein, die mit der Quarzfrequenz möglich ist.
Bei 12MHz sind das z.B. 57600Bd. Geht eine Baudrate nicht, so gibt es einen 'Fall-back' zu letzten
funktionstüchtigen Baudrate. War der Chip nicht leer, so muß er jetzt mit Erase gelöscht werden.
Um das neue Programm (in diesem Fall den ROM-Monitor) zu flashen, benutzt man am besten
'B.P.R.' = Blank-Check, Program, Read (verify). Sollte es zu keiner Fehlermeldung kommen, so
ist der Chip ordnungsgemäß geflasht.
Nachdem das Programm beendet wurde, kann man jetzt die Betriebsspannung ausschalten, oder
den Reset-Taster drücken und dabei dem Jumper ziehen.
Wird jetzt die MCU gestartet, so startet das User-Programm im User-Flash.
3.4
Beschreibung der Flashersoftware M16CFlasher (Flasher)
Vorab Info: Das Flash-Programm wird erst am Schluß der Entwicklung benötigt. Man flasht damit das
Applikationsprogramm oder einen neuen ROM-Monitor in die MCU. Deswegen kann man diesen Teil
des Manuals erst mal überspringen.
Diese Software ist unter allen Windowsversionen getestet worden.
Die neuste Version kann unter http://www.mikrocontroller.com unter M16C/62 geladen werden.
Jeder Flash Mikrocontroller aus der M16C Serie verfügt über einen integrierten Bootloader. Bei der
M16C/62 und M16C/6NA Serie ist dieser in einem zusätzlichen Flash-Speicher von 8Kbytes abgelegt.
Durch das umstecken des JP12 (programmieren) startet die MCU nach dem Reset diesen Bootloader.
Ist der CLK1-Pin High, so geht der Bootloader in den seriellen synchronen Betrieb, ist er Low (wie in
dieser Schaltung) geht er in den asynchronen Betrieb. Im Gegensatz zum synchronen Modus sind im
asynchronen Modus sind nicht alle Quarzfrequenzen möglich, deshalb gibt Renesas im Datenblatt die
Frequenzen an, mit denen es funktioniert.
8
Hier die möglichen Quarztakte und Baud-Raten für den M30626FHPFP:
16MHz
12MHz
11MHz
10MHz
8MHz
7,3728MHz
6MHz
5MHz
4,5MHz
4,194304MHz
4MHz
3,58MHz
3MHz
2MHz
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
9600
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
19200
---
38400
38000
38000
----38400
38400
----38400
--38400
38400
---
57600
57600
--57600
57600
57600
----57600
----57600
-----
Flashersoftware starten:
Durch einen Doppelklick wird das Programm M16CFlasher.exe gestartet.
Ist alles in Ordnung., erscheint dieses Fenster. Falls nicht, gibt es ein Problem mit der Hardware.
9
In diesem Fall sollte man noch einmal Reset drücken, den Oszillator-, Betriebsspannung- und am
MAX232 die Spannungspegel prüfen. Ein häufiger Fehler ist das Floaten des NMI-Pins bei eigenen
Schaltungen.
Mit 'Settings' stellt man nun die COM-Schnittstelle und die maximale Baud-Rate ein, die mit der
Quarzfrequenz möglich ist. Bei 16MHz sind das 57600Bd.
Nachdem das Programm beendet wurde, kann man jetzt die Betriebsspannung ausschalten, oder
den Reset-Taster drücken und dabei dem Jumper ziehen.
Wird jetzt die MCU gestartet, so startet das User-Programm im User-Flash.
10
3.5
Beschreibung des UIC – Programmers
Beim UIC – Programmer handelt es sich um ein Tool der Firma EDX, welches folgende
Funktionalitäten verspricht:
Der UIC Programmer (Universal In Circuit Programmer) ist eine Applikation zum Programmieren von
Microcomputern. Über die serielle Schnittstelle vom PC wird der Microcomputer direkt in der ZielHardware programmiert.
Durch die vielseitigen Funktionen und die konfigurierbare Bedienung eignet sich der UIC Programmer
für Entwicklung, Produktion und den Einsatz im Feld.
Der UIC Programmer ist für das programmieren und verifizieren von UIC Code Dateien gratis.
Firmware Updates kann Ihr Kunde mit UIC code Dateien selbst durchführen.
Merkmale
Programmieren und verifizieren
Programmieren von Adressbereichen
ID Code Check
Konfigurierbare Bedienung
Einbindung in andere Tools (Kommandozeile)
Kein proprietärer Hardware Adapter (asynchrone Datenübertragung)
Gratis für UIC Code Dateien
Unterstützte Typen
Renesas M16C 26A Group
Renesas M16C 62A Group
Renesas M16C 62N Group
Renesas M16C 62P Group
Renesas M16C 80A Group
weitere Typen auf Anfrage
Anforderungen
Betriebssysteme: Microsoft Windows (ab Win95)
Schnittstelle: RS232
Adapterkabel: Pegelanpassung zwischen PC und Zielhardware. Beschreibung in der Online-Hilfe.
Auf der CD befindet sich die Trial – Version des Programms.
Zum Testen einfach den Ordner auf ihren Rechner entpacken und die Datei: UICProgrammer.ex_
umbennen nach UICProgrammer.exe .
Mit diesem Tool ist es dann ebenfalls möglich, Ihren Chip zu flashen.
Weitere Informationen finden Sie im mitgelieferten Manual.
Preise, Informationen und Downloads finden Sie unter http://www.TheEdx.ch .
11
3.6
Beschreibung des Debuggers
Mit einem Doppelklick auf Setup.exe wird der Debugger installiert. Nach der Installation wird die COM
Schnittstelle des PCs ausgewählt und mit OK bestätigt (das EVBM16C muß angeschlossen und
eingeschaltet sein). Die detailierte Bedienungsanleitung zu dem Programm (in englisch) findet man
im Help-File. Das Ergebnis müsste dann so aussehen:
Über das Pull-down Menü 'File  download  Load Module...' kann man jetzt das mitgelieferte und
compilierte Programm first.x30 (vom NC30) downloaden und anzeigen lassen. Das Program-Window
(links) folgt immerdem PC, das Source Window (wird über BasicWindow  Source Window geöffnet)
zeigt immer die beobachtete Funktion an. In diesem Fall wird main angezeigt.
Unten sieht man das Dump Window (wird über BasicWindow  Dump Window geöffnet) ab der
Adresse FBD00, der Anfangsadresse der variablen Interrupt Vektoren.
Auf der Benutzeroberfläche befinden sich Buttons, wie
"GO" (Programmstart ab Program Counter),
"Come" (Go bis cursor),
"Step" ( Einzelschritt),
"Step over Subroutine",
12
"Step from Subroutine",
"Stop" (hält laufendes Programm an),
"RST" (Reset des Systems),
"BREAK-points" (listet alle Breakpoints auf)
um nur die wichtigsten zu nennen.
Zum debuggen ist es möglich, neben dem Program-Window auch mehrere Source-Windows zu
öffnen. In dem Script-Window können Scripte eingegeben und abgespeichert werden. Damit kann z.B.
eine persönliche Arbeitsumgebung für den Start des Emulators initialisiert werden. Der Emulator frischt
einmal pro Sekunde den Bildschirm auf. D.h. RAM Monitor-Window und Watch-Window werden
ständig aufgefrischt. Damit das die laufende Applikation nicht stört, kann man die refresh-Zeit erhöhen,
oder diese Funktion abschalten (Free-Run Mode).
Eine detailierte Beschreibung befindet sich nach der Installation
unter 'Start'  'Programme'  'Renesas Tool'  'KD30 V3.20 Release 1'  'KD30 Users
Manual.pdf'
3.7
Der Renesas C-Compiler als Kommandozeilenversion
Wird der Renesas NC30 C-Compiler installiert, so bekommt man den Compiler, Linker, Assembler und
Code-Converter als DOS-Programm nach C:\mtools\NC30 bzw. C:\Programme\Renesas\NC30
kopiert. Eventuell auch in ein anderes Verzeichnis. Je nach Version.
Anbei einige Informationen, um diesen Compiler als Kommandozeilenversion zu nutzen:
Kurzanleitung zum Laden des 'first' Projekts:
Auf der CD im Verzeichnis Samples das File first.zip entpacken und auf der Festplatte z.B. unter
c:\mtool\first installieren.
Dann im DOS-Modus 'comp' eingeben. Nun wird das Programm first.c wird compiliert.
Die Anpassungen für den ROM-Monitor sind in den Files sect30.inc (Vektoren, Mapping) und nrt0.a30
(Startup Assemblerfile) schon enthalten.
Hier die Vorgehensweise:
13
Anpassen der Startup Files an den ROM-Monitor:
ncrt0.a30:
;----------------------------------------------------------------------------------------------------------------------------------; INTERRUPT VECTOR ADDRESS definition
von 0FFD00h in 0FBD00h ändern
;----------------------------------------------------------------------------------------------------------------------------------VECTOR_ADR
.equ
0fbd00h
;special vector adress for monitor
start:
;----------------------------------------------------------------------------------------------------------------------------------; after reset,this program will start
hier mov.b #08h,05h eintragen
;----------------------------------------------------------------------------------------------------------------------------------ldc
#istack_top,isp
;set istack pointer
bset
1,0ah
mov.b
#00h,04h
;set processer mode
mov.b
#08h,05h
;set reserved area expansion bit (192 384Kbytes Flash
bclr
1,0ah
bset
0,0ah
mov.b
#20h,07h
;set clock control register
mov.b
#08h,06h
;to no clock division
btst 1,07h
jne skip_pll
mov.b
bset
bset
bset
bset
#11h,1ch
0,0ah
7,1ch
0,0ah
1,07h
bclr
ldc
ldc
ldc
ldintb
0,0ah
#0080h, flg
#stack_top,sp
#data_SE_top,sb
#VECTOR_ADR
;PLL multiply by 2
;PLL On
;PLL = main-clock
skip_pll:
sect30.inc:
;set stack pointer
;set sb register
;----------------------------------------------------------------------------------------------------------------------------------; Far ROM data area
hier 0A0000h eintragen
;----------------------------------------------------------------------------------------------------------------------------------.section rom_FE,ROMDATA
.org
0a0000h;
diese Zeilen eintragen:
;----------------------------------------------------------------------------------------------------------------------------------; code area
;----------------------------------------------------------------------------------------------------------------------------------.section program
.section program_S
.section interrupt
.org
0D0000H
;----------------------------------------------------------------------------------------------------------------------------------; variable vector section
von dummy_int in 0FF900h ändern
;----------------------------------------------------------------------------------------------------------------------------------.lword
0FF900h
; uart1 trance (for user)
.lword
0FF900h
; uart1 receive (for user)
.
Erklärung:
Die Vektoradresse wird auf 0xFBD00 eingetragen. In diesem Beispiel wird hier schon einmal das
Clock-Register auf /1 gesetzt und das reserved area expansion Bit wird auf auf H eingestellt, damit die
Far ROM Area gefahrlos auf die Startadresse 0C0000 gesetzt werden kann. Die Code Area ab
0D0000 wird hier auf 0D0000 eingestellt, damit die MCU (ohne ROM-Monitor) nicht im Bereich
0A0000-0CFFFF ins ‚leere‘ greift.
Am Schluß wird noch der UART1 Vektor 0FF900h eingetragen, damit der ROM-Monitor nach dem
laden des USER-Programms seine Verbindung über UART1 halten kann.
Aufruf des C-Compilers in folgender Syntax
Command Line:nc30 -silent -v -g -ooutputname -lnc30lib.lib ncrt0.a30 filename.c
Input:
filename.c
lnc30lib.lib
ncrt0.a30
: das auszuführende C-Programm
: Standard Libary
: startup program incl. sect30.inc (Initialisierung des heap, stack, ...)
14
Output: filename.x30 : machine language file des erstellten C-Programmes
filename.map : map file mit Informationen für den Debugger
Parameter:
-silent
-v
-g
-ooutputname
-llnc30.lib
: unterdrückt die Copyright-Meldung
: teilt den Namen des ausführenden Programmes mit
: erzeugt Informationen für den Debugger
: gibt den Namen des zu erzeugenden X30 files an
: bindet Standard Libary file für den Linker ein
Um zum flashen ein Hex-File zu erzeugen, kann mit dem Aufruf 'lmc30 filename' ein Motorola HEXFile erzeugt werden.
Zum debuggen ist es erforderlich, daß das Interrupt Flag gesetzt ist. Damit man im C-Programm
debuggen kann, muß dieses dort auch gesetzt werden.
Beispiel:
void far main()
{
timerinit ();
asm( "\tFSET I");
.
.
.
.
}
/* Enable interrupt */
Aber Vorsicht, man sollte das erst nach der Initialisierung eigener Interrupts eintragen.
(Siehe Seite 15 bzw.16 unter Punkt 10)
Noch ein Hinweis:
Man kann mit dem Befehl printf........ Daten seriell oder parallel übertragen. Bei dem NC30 C-Compiler
ist das sogar schon voreingestellt. Leider verwendet Renesas als Standard Ausgabe die UART1, also
die serielle zum debuggen. Man kann das in der Library ändern oder, um es abzuschalten die
folgenden Zeilen im NCRT0.A30 auskommentieren:
;====================================================================
; Initialize standard I/O
;--------------------------------------------------------------------;
.glb
_init
;
jsr.a
_init
3.7
Der Renesas C-Compiler V5.10
Die Weiterentwicklung des Renesas Compilers kann aus dem Internet geladen werden und hat zur
Zeit die V. 5.10r1. (http://www.renesas.com/eng/products/mpumcu/toolhp/trial/trys_e.htm)
Um diesen zu installieren geht man wie folgt vor:
(die NC30 Version 2.00 darf zwar dann noch in einem anderen Verzeichnis auf dem Rechner
sein, die Pfade in der Autoexec.bat müssen aber vorher ausgetragen werden)
1. Doppelklick auf das File nc30wav510r1_e (Installiert die Windows-Version),
und dann Trial-Version auswählen.
2. Doppelklick auf das File tm320_e (Installiert den Toolmanager)
Kurzanleitung zum Laden des 'port_toggle' Projekts (läuft mit NC30V2.00 und NC30V5.10):
Auf der CD im Verzeichnis sample-program das File port_toggle.zip entpacken und auf der Festplatte
z.B. unter c:\mtool\port_toggle installieren.
Dann im DOS-Modus 'comp' eingeben. Nun wird das Programm port_toggle compiliert.
Wichtige Anpassungen an den ROM-Monitor sind in den Files sect30.inc (Vektoren, Mapping) und
nrt0.a30 (Startup Assemblerfile) schon enthalten.
15
Mit dem C-Compiler NC30V510 wird ein TM3.20 ausgeliefert. Dies ist eine Benutzeroberfläche, die für
Windows Rechner eingesetzt werden kann.
Ist der Toolmanager installiert und gestartet, so meldet er sich mit dieser Leiste:
Wird mit dem
gestartet:
Button das Projekt Port_toggle von der CD geöffnet, so wird der Projekteditor
Alle weiteren Informationen zu diesem Programm kann man unter Start --> Programme -->
MITSUBISHI-TOOL --> TM V.3.20 --> TM User's Manual.pdf entnehmen.
3.8
Das RTOS (Segger)
Hierbei handelt es sich um eine vollständige Objekt-Code Version, die bis
zu 3 Tasks verwalten kann.
Installationsanleitung (Tasking C-Compiler):
um das RTOS mit dem Mini-EMU zu nutzen, geht man wie folgt vor:
1. Das Zip-File RTOS(Segger) \ 3 Task Version für Tasking \ embOS_M16C_TASKING_Trial_V304l
auf die Festplatte entpacken.
2. ein Projekt auswählen (Detailierte Beschreibung im Manual)
3. kompilieren, dazu
drücken.
4. start.x30 in den KD30 laden (KD30 muß auf Tasking eingestellt sein)
Installationsanleitung (Renesas C-Compiler):
um das RTOS mit dem Mini-EMU zu nutzen, geht man wie folgt vor:
1. Das Verzeichnis RTOS(Segger) \ 3 Task Version für NC30 auf die Festplatte kopieren
16
2. Bei allen Dateien das Dateiattribut 'Schreibgeschützt' löschen.
3. comp starten
4. start.x30 in den KD30 laden (KD30 muß aud NC30 eingestellt sein)
Sie finden dann im frame.c zwei Tasks, Task0 und Task1, wobei der Task0
vom Task1 aufgerufen wird.
Die Vollversion des RTOS kann man bei uns, oder bei
Segger Microcontroller Systeme GmbH
Kleinhülsen 4
D-40721 Hilden
Tel.: 02103-895899, Fax.: 02103-895860
kaufen. Es gibt mehrere Möglichkeiten:
No.
1.05.01
Item
embOS for Renesas
M16C
Object code,
SOL
embOS for Renesas
M16C
Object code,
AOL
embOS for Renesas
M16C
Object code, extended
update period
embOS for Renesas
M16C
Source code,
SSL
embOS for Renesas
M16C
Source code,
ASL
embOS for Renesas
M16C
Source code, extended
update period
1.05.02
1.05.03
1.05.04
1.05.05
1.05.06
4.0
Description
Price [EUR]
Single object code license, unlimited 1,490.-no. of projects, no royalties, 3
months updates
Additional object code license for
one developer
540.--
One year extended update period for 390.-object codes
Single object code license, unlimited 4,980.-no. of projects, no royalties, 3
months updates
Additional object code license for
one developer
940.--
One year extended update period for 490.-object codes
Tipps und Tricks
Wie bekommt man später das Programm ohne Monitor zum laufen ?
Zunächst muß der UART1 Vektor im File sect30.inc auf dummy_int gesetzt werden. (Ist nicht
unbedingt erforderlich, sollte aus Sicherheitsgründen aber gemacht werden.
Als zweites stellt man im File ncrt0.a30, einige Zeilen nach dem Label 'start: ' den Clockgenerator von
/8 auf /1 (Protection aufheben nicht vergessen), damit Ihre Applikation nicht plötzlich mit 1/8 der
Geschwindigkeit läuft.
Als drittes muß beachtet werden, daß der Mikrocontroller nach dem Einschalten die Flash-Adressen
0x80000 bis 0xCFFFF und die RAM-Adressen 0x04000 bis 0x07FFF nicht sieht. Diese müssen aus
Kompatibilitätsgründen zur M16C/61 Serie mit dem 'Internal reserved area expansion bit' im Prozessor
Mode Register 1 (Bit 3 auf H ) eingeschaltet werden.
Als viertes schaltet man die PLL auf x2, sonst läuft die Software nur mit 12MHz.
Und als fünftes fügen Sie dem Batch-File comp.bat die Zeile ' lmc30 first ' ein (das erzeugte x30-File).
Diese erzeugt dann ein Motorola Hex-File, welches Sie zum flashen mit dem oben genannten FlashProgramm benötigen.
Weitere Tipps gibt es unter http://www.m16c.de
17
Hinweise zur Applikationserstellung mit dem M16C
Um den M16C in der Schaltung ordnungsgemäß zum arbeiten zu bringen sind einige wichtige Dinge
zu beachten:
1. Der M16C verfügt 2 mal über einen VCC- und VSS-Anschluss. Diese Anschlüsse gehen sehr
niederohmig an die I/O Pins. Diese Anschlüsse sollten Sie mit breiten
Leiterbahnen an die Stromversorgung anschließen und mit einem Kondensator abblocken.
Die Anschlüsse AVCC und AVSS sind Anschlüsse, die etwas hochohmiger intern mit dem
Chip verbunden sind und müssen ebenfalls außen mit VCC und VSS verbunden werden.
Die Leitungen können etwas dünner ausfallen, da dort die Ströme geringer sind. Ein
Abblockkondensator ist aber dringend erforderlich. Diese Anschlüsse sind direkt mit dem
D/A- und A/D-Wandler verbunden.
2. Der NMI-Pin darf niemals gleichzeitig mit dem RESET Low sein, da die CPU sofort nach dem
bedienen des RESET-Vektors in die NMI-Routine springt. In diesem Zustand ist aber noch
kein Stackpointer initialisiert und die CPU geht ins Nirwana. Deshalb immer einen Pull-Up
einbauen und, falls ein MAX-xxx –Chip eingesetzt wird, ein Gatter mit RESET und MAXAusgang so verknüpfen, daß beim RESET ein H am NMI anliegt.
3. Die Leitung RDY und HOLD benötigen bei der Verwendung von externem Speicher immer
einen Pull-up, oder einen entsprechenden Schaltkreis zur Verzögerung. Die MCU bleibt sonst
nach dem Zugriff auf externen Speicher stehen.
4. Die Leitung CS0 hat einen integrierten Pull-up, der bei der ausschließlichen Verwendung von
externem Speicher (das entscheidet der CNVss-Pin) aktiviert ist und damit externe EPROMs,
Flash etc ohne zusätzliche HardwareHH ansteuern kann. Die Leitungen CS1, CS2, CS3 haben
keinen Pull-up und benötigen (falls verwendet) unbedingt einen, da diese beim Start der
Programme noch nicht initialisiert sind. Es kommt durch das floaten sonst zum Crash auf der
Datenleitung.
5. Offenliegende Portleitungen müssen, um Strom zu sparen entweder extern einen Pullup/down
oder intern einen Pullup/down (programmiert) bekommen, oder der offene Port muß auf
Ausgang geschaltet werden.
6. Die A/D-Wandler Eingänge sind normalerweise sehr hochohmig (im Megaohmbereich),
während dem Messvorgang sind es aber für einige Nanosekunden nur ca 7,8 KOhm. Deshalb
ist bei jedem A/D-Wandlereingang ein Kondensator (ca 100pF) vorzusehen.
7. Um einen 32KHz Quarz extern zu nutzen, sind die Portleitungen P86 und P87 mit Software auf
die XCIN und XCOUT umzuschalten. Dazu muß aber das Clock-Register über das ProtectRegister freigeschaltet werden.
8. Die CPU ist nach dem RESET auf Takt/8 geschaltet. Das kann man im Clock-Register auf
Takt/1 ändern. (Protectregister beachten)
9. Hat die Applikation kritische Mechanik anzusteuern, so sollte man das über Port 9 realisieren,
da auch dieser Protectbar ist.
10. Interrupts (Priorität, ein und aus) dürfen innerhalb eines Interrupts nur dann verändert werden,
wenn die Programmfolge
FCLR I
AND.B #00h, 055h (OR, BSET, BCLR geht auch)
NOP
NOP
FSET I
eingehalten wird. MOV ist verboten! Der Grund ist die instruction queue, die erst geleert
werden muß.
11. Programme für den 384Kbyte Flash-Chip dürfen ab 0D0000 starten, die Adressen 0A0000 bis
0AFFFF sind zunächst für die CPU unsichtbar und müssen mit dem "Internal reserved area
expansion bit" freigeschaltet werden. Dabei wird auch das SRAM im Bereich 0x04000 bis
0x07FFF freigeschaltet.
12. Soll der Software-Reset ausgelöst werden (Flag im Prozessor-Mode-Register 0), muß vorher
der Clock auf /8 geschaltet werden.
13. Falls für die serielle Datenübertragung kein MAX232 sondern eine andere Schaltung
verwendet wird, muß überprüft werden, ob diese ebenfalls über einen Pull-up Widerstand am
TTL-Eingang verfügt. Falls nicht, muß ein Widerstand (ca 470kOhm) zwischen TXD1 und
VCC geschaltet werden. Grund: Der Monitor, sowie der Bootloader lösen im Betrieb öfter
einen Software-RESET aus. Da der TXD1 Pin dann für Sekundenbruchteile Input wird und
floatet, kann es zu fehlerhaften Datenübertragungen kommen.
14. Damit auch der Memory Expansion Mode genutzt werden kann, benötigt der Mikrocontroller
nach dem Umschalten im Prozessor Mode Register 0 ein H auf der Leitung HOLD.
18
Auf dem Board ist zum Flashen ein 100KOhm Pull-down Widerstand vorhanden. Den HOLD
Pin also niederohmig mit VCC verbinden und schon läuft auch dieser Modus.
19
EVBM16C/62P Bauteilliste:
Pos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Bauteil
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
C11
C12
C13
C14
C15
C16
C17
C18
C19
C20
D1
D2
D3
D4
G1
IC1
IC2
JP1
JP2
JP3
JP4
JP5
JP6
JP7
JP8
JP9
JP10
JP11
JP12
JP13
RESET
Q1
Q2
R1
R2
R3
R4
R5
R6
R7
R8
R9
U1
X1
X2
-----
Typ
4µ7 / 16V
4µ7 / 16V
4µ7 / 16V
4µ7 / 16V
30pF
30pF
10pF
30pF
100nF
100nF
1uF / 6,3V
10uF / 6,3V
220uF / 35V
470nF
100nF
100nF
470nF
100nF
100nF
100nF
LED 3mm grün
LED 3mm rot
1N4002
1N4148
2 pol. Anreihklemme
M30626FJPFP
MAX232 DIP
Stiftleiste 1x2 + Jumper
Stiftleiste 2x25
Stiftleiste 2x25
Stiftleiste 2x2 + 2 Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Stiftleiste 1x2 + Jumper
Quarz 12MHz
Quarz 32,768KHz
470 Ω
100 KΩ
470 Ω
10 MΩ
100 KΩ
100 KΩ
10 KΩ
10 KΩ
10 KΩ
7805T
F09H
F09H
Stiftleiste für Jumper
Sockel 16-pol.
Wert
Elko / Tantal
Elko / Tantal
Elko / Tantal
Elko / Tantal
Keramik-Kondensator
Keramik-Kondensator
Keramik-Kondensator
Keramik-Kondensator
MKS-Kondensator
MKS-Kondensator
Elko / Tantal
Elko / Tantal
Elko
MKS-Kondensator
MKS-Kondensator
MKS-Kondensator
MKS-Kondensator
MKS-Kondensator
MKS-Kondensator
MKS-Kondensator
Leuchtdiode
Leuchtdiode
Diode
Diode
Anreihklemme
MCU
MAX232
Jumper (Power LED)
Stiftleiste
Stiftleiste
Jumper (Sub-Oszillator)
Jumper (P50-Leitung)
Jumper (RXD0-Leitung)
Jumper (TXD0-Leitung)
Jumper (VREF-Leitung)
Jumper (Regler)
Brücke
Brücke
Jumper (Programmieren)
Jumper (Byte)
Jumper (Reset)
HC18 / HC49
Uhrenquarz
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Widerstand 1/4W
Spannungsregler TO220
D-SUB Buchse 9-Pol
D-SUB Buchse 9-Pol
Sockel für MAX232
20
Raster (mm)
2,5
2,5
2,5
2,5
2,5
2,5
2,5
2,5
2,5 / 5
2,5 / 5
2,5
2,5
5
5
5
5
5
5
5
5
2,5
2,5
10
10
5
0,65
DIP
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
2,54
5
2,5
10
10
10
10
10
10
10
10
10
2,54
2,5
2,5
2,54
2,54
Reichelt Bezeichnung*
rad 4,7/35
rad 4,7/35
rad 4,7/35
rad 4,7/35
Kerko 33p
Kerko 33p
Kerko 10p
Kerko 33p
MKS-2 100n
MKS-2 100n
rad 1/63
rad 10/35
rad 220/35
MKS-2 470n
MKS-2 100n
MKS-2 100n
MKS-2 470n
MKS-2 100n
MKS-2 100n
MKS-2 100n
LED 3mm grün
LED 3mm rot
1N4002
1N4148
ARK 210-2
M30626FJPFP (Glyn)
MAX232CPE
Jumper schw.
Stiftl. 2x50G
Stiftl. 2x50G
2 x Jumper schw.
Jumper schw.
Jumper schw.
Jumper schw.
Jumper schw.
Jumper schw.
----Jumper rot
Jumper schw.
Jumper blau
12-HC49U-S
VT-200-F (Glyn)
1/4W 470
1/4W 100K
1/4W 470
1/4W 10M
1/4W 100K
1/4W 470
1/4W 10K
1/4W 10K
1/4W 10K
TA7805S (Glyn)
DRB-09S (Glyn)
DRB-09S (Glyn)
Stiftl. 36G
GS16P
* Reichelt Elektronik
Elektronikring 1
26452 Sande
Tel.: 04422-955-333
Fax.: 04422-955-111
21
22
23