evbm16c/6na manual
Transcription
evbm16c/6na manual
EVBM16C/6NA MANUAL © 2003 by Glyn GmbH & Co KG, Mikrocontroller Group History 09th February. 01 17th October. 01 02th November. 01 05th March. 02 12th March. 02 08th April 02 16th May 02 26th July 02 04th September 02 17th March 03 07th August. 03 EW15 EW15 EW15 EW15 EW15 EW15 EW15 EW15 EW15 EW15 EW15 V1.0 V2.0 V2.1 V2.2 V2.3 V2.4 V2.5 V2.6 V2.7 V2.8 V2.9 started First general release next release new Tasking Compiler V2.1r1 and new KD30 new M16C Flasher new M30624FGNFP Monitor new Monitor 2.00.01 & new Tasking Compiler V2.2r1 new Monitor 2.00.03 IAR Software Tools (C-Compiler, Simulator) 30 day versions New M16C/62P Monitor & new Tasking Compiler V2.3r1 new Tasking EDE V2.3r2 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 KD30 Debuggers 3.6 der Tasking C-Compiler 3.7 der Tasking ROM-Monitor Debugger 3.8 der Renesas C-Compiler V2.0 3.9 der Renesas C-Compiler V5.10 3.10 das RTOS (Segger) 6 6 6 7 9 11 13 15 17 19 20 4.0 Tipps und Tricks 21 Anhang EVBM16C/6NA Bauteilliste EVBM16C/6NA Schaltplan EVBM16C/6NA Board 22 24 25 © 2003 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 EVBM16C6NA 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 EVBM16C6NA 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/6NA 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 239Kbytes groß sein und dürfte für die meisten Applikationen ausreichen. Zu den mitgelieferten Entwicklungswerkzeugen gehören KD30 Source-Level Debugger, Tasking- bzw. Renesas C-Compiler, 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 Beispiel, das first.c Programm, welches für Tasking-, sowie auch für den Renesas C-Compiler vorhanden ist. Im Verzeichnis 'Samples' findet man (ebenfalls für beide Compiler) vorgefertigte Testprogramme um die Peripherie des Mikrocontrollers zu programmieren. 1.1 Lieferumfang Dem EVBM16C/6NA 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 Tasking C-Compiler RTOS TCP/IP-Stack B/W, Color Display Treiber Mikrocontroller Forum / Beispiele EMIT TCP/IP Software IAR C-Compiler Programmbeispiele 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.eu.renesas.com http://www.tasking.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 http://www.m16canz.com/sampcode.htm 3 2.0 Hardware 2.1 technische Daten Das Board wird mit 16MHz getaktet und verfügt über einen 5V Spannungsregler. Der nötige RS232 Pegelwandler MAX232 befindet sich ebenfalls auf der Platine. Für den FlashProgramming 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 10KB User RAM Area 9984 Bytes 02BFFh 02900h Monitor RAM Area 256 Byte User ROM Area 239,4KB C0000h FC000h do not use do not use do not use Monitor ROM Area 16KB Flash Memory 256KB 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 02900h zur Verfügung. Das Flash ist für eigene Applikationen im Bereich von C0000h und FBDFFh 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 Tasking C-Compiler V2.3r2....... Windows 98/2000/NT4/XP Ansi C-Compiler von Tasking mit integrierter Benutzeroberfläche, Simulator und Monitor Debugger. Ohne zeitliche Begrenzung für C-Code bis 16Kbytes und AssemblerCode bis 2Kbytes. NC30 C-Compiler V2.00............Ansi C-Compiler mit Assembler von Renesas. Ältere DOS-Version ohne Limitierung. Läuft nicht unter Win NT. 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. 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/6NA Mikrocontroller inkl. Software Manuals. Reliability report...................... Reliability Reports für den M306NAFGTFP M16CFlasher............................. 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. Tasking Flasher........................ Flash Programm von Tasking. 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 Monitor V2.02.05....................... ROM Monitore mit Source, fertig mit dem AS30 (Renesas) assembliert für den M306NAFGTFP. Samples.................................... Programmbeispiele für die Peripherie der MCUs. Für Tasking- und für den NC30 C-Compiler von Renesas vorbereitet. Editor......................................... Editor JFE für den TM320 Toolmanager 3.2 Beschreibung der Monitorsoftware Der Monitor belegt im Flash- Speicher den Bereich von FC000h bis FFFFFh und im SRAM den Bereich 02900h bis 02BFFh. Der Monitor ist als Source und als Motorola-File auf der CD im Verzeichnis 'monitor' für den M306NA 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/6NA 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 M306NAFGTFP: 16MHz 10MHz 8MHz 9600 9600 9600 19200 38400 57600 19200 --57600 19200 --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. Hat man vorher ein Tasking Programm geflasht, so muß man in der Regel 7 x FFh eingeben. 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 16MHz 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. 8 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. Hier die möglichen Quarztakte und Baud-Raten für den M306NAFGTFP: 16MHz 10MHz 8MHz 9600 9600 9600 19200 38400 57600 19200 --57600 19200 --57600 9 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. 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 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), 11 "Step" ( Einzelschritt), "Step over Subroutine", "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.02 Release 1' Æ 'KD30 Users Manual.pdf' 12 3.6 Der Tasking C-Compiler Mit einem Doppelklick auf Setup.exe wird der Tasking C-Compiler installiert. Der Compiler meldet sich dann mit seiner EDE Workbench wie folgt: Kurzanleitung zum Laden des 'first' Projekts: 1. Auf der CD im Verzeichnis Tasking C-Compiler V2.3r2/ first das File first.zip entpacken und auf der Festplatte z.B. unter c:\dcm16c\examples\first installieren. 2. Mit der Maus über den Text 'M16C Examples' gehen und mit der rechten Maustaste 'Add existing Projekts...' das eben entpackte Projekt first.pjt' auswählen und O.K. drücken. 3. Das Projekt ist nun im linken Fenster eingetragen und muß jetzt noch als aktuelles Projekt markiert werden. Dies erfolgt wiederum mit der rechten Maustaste über dem Text 'first(2Files)' mit der Auswahl 'Set as Current Project'. Das Projekt erscheint nun fett auf dem Bildschirm. 4. Mit dem 'Rebuild'-Button wird nun das Projekt komplett compiliert und auch ein first.x30- File zum debuggen erzeugt. 5. Nun kann das first.x30 File in den KD30 geladen werden, aber vorher muß dem KD30 mitgeteilt werden, daß ein Tasking Source gedebuggt wird. Das geschieht im KD30 unter 'Environ Æ Init Æ Compiler'. Dort den Tasking Compiler auswählen und unter download das X30 File laden. 6. Dieses Beispiel läuft nicht im Simulator da durch das Einbinden der SFR Register die erlaubte Zahl der Variablen dieser Trial Version überschritten wird. Dafür läuft es jetzt direkt mit dem Monitor ohne KD30 ! Ein neues Projekt erstellen: 1. als erstes mit der Maus über den Text 'M16C Examples' gehen und mit der rechten Maustaste ‚Add new Projects...‘ auswählen. 13 2. Mit ‚Browse‘ neuen Pfad und Projektnamen eingeben, dazu eventuell neuen Ordner anlegen. 3. Mit O.K. bestätigen. 4. Nun ‚Add new file to Project‘ z.B. main.c eingeben und mit O.K. bestätigen. 5. Das Fenster ‚Project Properties‘ ebenfalls mit O.K. bestätigen. 6. Mit der rechten Taste nun im linken Rahmen über das neue Projekt gehen und mit ‚Set as current Project‘ als aktuelles Projekt markieren. 7. Auf das + Zeichen des Projektes klicken, danach noch einmal auf das + von Source Files. 8. Man sieht nun ein main.c mit Ausrufezeichen (es ist noch kein Text drin, deshalb das (!)) 9. Mit einem Doppelklick aufmachen und ein paar C Zeilen einfügen. z.B. #include <stdio.h> void main (void) { char i; i = 74; } 10. Mit dem 'Rebuild'-Button wird nun das Projekt komplett compiliert und dürfte ohne Fehler durchlaufen. Damit das jetzt noch mit dem Renesas Debuger KD30 gedebuggt werden kann muß man noch die nächsten Punkte beachten. 11. Als nächstes wird unter ‚Project‘ Æ ‚Project Options‘ Æ ‚Processor‘ --> 'Startup Code' --> ‚Generate startup code‘ gesetzt. Das Ganze wird dann mit O.K. bestätigt. 12. Unter ‚Project‘ Æ 'Project Options' --> ‚Linker/Locator Options...‘ --> ' Output Format' setzt man jetzt das Flag ‚IEEE-695 for Renesas Debuggers‘, sowie ‚Motorola S-records...‘. Danach geht man zu 'Project' --> 'Poject Options' --> 'Processor' --> ‚Vector table‘ und trägt unter ‚ Alternative variable vector table name‘ die Adresse 0xFBD00 ein. (unbedingt für der ROM-Monitor erforderlich). Mit O.K. bestätigen. 13. Nun wieder mit der rechten Taste im linken Rahmen über das neue Projekt gehen und das Menü ‚Properties‘ auswählen. 14. Auf den Reiter ‚Members‘ klicken. 15. Mit ‚Add existing Files‘ das File cstart.src auswählen und mit ‚öffnen‘ bestätigen. Das ist notwendig, damit der Debugger auch den Source dieses Assembler Startup-Files zu sehen bekommt. Nun mit O.K. bestätigen. 16. Damit der ROM-Monitor nach dem laden des USER-Programms seine Verbindung über UART1 halten kann, muß jetzt noch der UART1 Vector und Interruptnummer eingegeben werden. Dazu wir unter Project Æ Project OptionsÆ Cross View Pro Æ ROM-Monitor das Häkchen gesetzt und dann Serial transmit Interrupt auf 19 und Serial vector address auf 0xFF900 eingestellt. 17. Jetzt noch ein Rebuild und das main.abs File kann in den Debugger geladen werden. Die Vollversion (TK499-024-05-CL) des Tasking C / C++ Compilers kann man über uns, oder bei Altium Germany GmbH Albert-Nestler-Straße 7 D-76131 Karlsruhe Tel.: 0721-8244-300, Fax.: 0721-8244-320 für 2790.- Euro kaufen. Den C / C++ Compiler gibt es auch für Linux. 14 3.7 Der Tasking ROM-Monitor Debugger In der Version 2.3 der Tasking Entwicklungsumgebung gibt es auch einen eigenen ROM-Monitor Debugger. Um den Monitor zu bearbeiten öffnet man unter File Æ open project space Æ C:\Program Files\TASKING\dcm16c v2.3 r2\c-monitor das File C-monitor.psp Mit der rechten Maustaste wird dann der Monitor 3diamonds_m306NA mit „set as current project“ ausgewählt. Danach den Monitor mit „Rebuild“ neu compilieren. Auf dem EVB-Board den Jumper JP12 stecken und Reset durchführen. In der IDE das Flash-Symbol drücken ( das 7. von rechts). Der Monitor wird nun in die MCU geflasht. Auf dem EVB-Board nun wieder den Jumper JP12 ziehen und wieder einen Reset durchführen. In der IDE das Symbol „Synchronize options with the Monitor“ ( das 6. von rechts) drücken. Das Ergebnis sollte so aussehen: Um den Monitor auszuprobieren, öffnet man unter File Æ open project space Æ C:\Program Files\TASKING\dcm16c v2.3 r2\examples das File M16C Examples.psp Dort mit der rechten Maustaste das Projekt glyn62blink mit „set as current project“ ausgewählen. Das Projekt ist zunächst für den älteren M16C62 voreingestellt und muss unter Project Æ Project Options Æ Processor Æ Processor Definition Æ Select Group “M16C6NA” und M306NAFGTFP angepasst werden. 15 Nach dem compilieren mit „Rebuild“ auf das Symbol Verbindung mit dem Tasking ROM-Monitor auf.: 16 klicken. Der Debugger baut dann die 3.8 Der Renesas C-Compiler V2.0 Renesas C-Compiler: Um den C-Compiler zu installieren geht man wie folgt vor: 1. Verzeichnis c:\mtool\nc30 erzeugen 2. nc30.zip dorthin kopieren 3. mit pkunzip -d nc30 oder winzip dort entpacken 4. die Textzeilen von autoexec.mit ins eigene autoexec.bat kopieren Kurzanleitung zum Laden des 'first' Projekts: Auf der CD im Verzeichnis NC30 C-Compiler V2.00/ first 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: 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Æ 256Kbytes Flash bclr 1,0ah bset 0,0ah mov.b #20h,07h ;set clock control register mov.b #08h,06h ;to no clock division bclr ldc ldc ldc ldintb sect30.inc: 0,0ah #0080h, flg #stack_top,sp #data_SE_top,sb #VECTOR_ADR ;set stack pointer ;set sb register ;----------------------------------------------------------------------------------------------------------------------------------; Far ROM data area hier 0C0000h eintragen ;----------------------------------------------------------------------------------------------------------------------------------.section rom_FE,ROMDATA .org 0c0000h; 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 ebenfalls wie beim Tasking C-Compiler 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 0C0000-0CFFFF ins ‚leere‘ greift. 17 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, ...) Output: filename.x30 filename.map : machine language file des erstellten C-Programmes : 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 18 3.9 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. 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. 19 3.10 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 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 1.05.02 1.05.03 1.05.04 1.05.05 1.05.06 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 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 object codes 390.-- 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 object codes 490.-- 20 4.0 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 0xA0000 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 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 Protect-Register 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. 21 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 256Kbyte Flash-Chip dürfen ab 0D0000 starten, die Adressen 0C0000 bis 0CFFFF sind zunächst für die CPU unsichtbar und müssen mit dem "Internal reserved area expansion bit" freigeschaltet werden. 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. 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. 22 EVBM16C/6NA 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 Bauteil C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 D1 D2 D3 D4 G1 IC1 IC2 JP1 JP2 JP3 JP4 JP5 JP6 JP7 JP8 JP9 JP12 JP11 Q1 Q2 R1 R2 R3 R4 R5 R6 R7 R8 R9 U1 X1 X2 ----- * Reichelt Elektronik Elektronikring 1 26452 Sande Tel.: 04422-955-333 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 LED 3mm grün LED 3mm rot 1N4002 1N4148 2 pol. Anreihklemme M306NAFGTFP 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 Quarz 16MHz 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 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) Jumper (Programmieren) 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 Fax.: 04422-955-111 23 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 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 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 LED 3mm grün LED 3mm rot 1N4002 1N4148 ARK 210-2 --MAX232CPE Jumper schw. Stiftl. 2x50G Stiftl. 2x50G 2 x Jumper schw. Jumper schw. Jumper schw. Jumper schw. Jumper schw. Jumper schw. Jumper rot Jumper blau 16-HC18 0,032768 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 µA 7805 D-SUB BU 09EU D-SUB BU 09EU Stiftl. 36G GS16P 24 25