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