Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:microcontroller_mcu:mc68hc12

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

hardware:microcontroller_mcu:mc68hc12 [2023-03-02 17:33:28] – angelegt manfredhardware:microcontroller_mcu:mc68hc12 [2024-03-10 13:13:42] (aktuell) – gelöscht manfred
Zeile 1: Zeile 1:
-====== MC68HC12 ====== 
- 
- 
-===== Card12.DG128A (MC68HC12) ===== 
- 
-Ich habe mir diesen MC von "www.elektronikladen.de/mct" mit dem //Motorola MC68HC912DG128A// geholt. 
- 
-Einstellungen und Software für den //Mikrokontroller MC68HC912DG128A// 
-auf der Karte "//Card12.DG128A//" von "http://www.elektronikladen.de/mct". 
-Wenn man soein Ding das erste mal in Händen hält, stellen sich einige Fragen 
-die vom beigelegten Dokumentationsmaterial nicht beantwortet werden. 
-Die Fragen, die sich mir stellten und die ich nach meinem ersten Kontakt mit 
-dieser Karte nicht unter zur Hilfenahme der beigelegten Dokumentation 
-beantworten konnte, will ich hiermit dokumentieren (und noch etwas mehr...). 
- 
-Ich habe den DG128 nicht wegen der größeren Speicherausstattung gewählt, 
-sondern weil er noch eine zusätzliche IIC-Schnittstelle besitzt. 
- 
-Die Karte ist im Format 87mm x 54mm und wird ausschließlich mit 5V betrieben! 
-Zum Programmieren darf KEINE separate 12V-Versorgung am MC anliegen, 
-denn diese würde den MC zerstören. Auf der Unterseite der Platine 
-ist (im Normalfall) für diese in der entsprechenden Leiterbahn eine 
-Unterbrechung eingearbeitet, so das //eigentlich// nix passieren sollte. 
- 
-Diese Beispiele wurden alle mit FreeBSD durchgeführt. 
- 
- 
-==== COM-Port ==== 
- 
-Verbindungsparameter der //TwinPEEKs RS232-Kommunikationsschnittstelle// (serielle Schnittstelle auf dem MC-Board): 
-  19200 Bps 
-  8N1 
-  kein Hardwarehandshake 
-  kein Softwarehandshake 
-  kein Terminal-Protokoll (ANSI) 
- 
-Verbindung mit //cu// aufbauen (geht nur als "root"): 
-  # cu -s 19200 -l /dev/cuaa0 
- 
-  # vi /etc/remote 
-  cuaa0d|cua0d:dv=/dev/cuaa0:br#19200:pa=none: 
- 
-Verbindung mit //tip// aufbauen (geht nur als "root"): 
-  # tip cuaa0d 
- 
-Konfigurationsdatei bearbeiten (als "normaler" Benutzer): 
-  # vi ~/.minirc.card12 
-  pu pname9           YUNYNascii 
-  pu pname10          YDNYNascii 
-  pu pprog9           /usr/bin/ascii-xfr -dsv 
-  pu pprog10          /usr/bin/ascii-xfr -drv 
-  pu baudrate         19200 
-  pu bits             8 
-  pu parity           N 
-  pu stopbits         1 
-  pu minit 
-  pu updir            Card12 
-  pu downdir          card12 
-  pu backspace        BS 
-  pu rtscts           No 
-  pu xonxoff          No 
-  pu fselw            Yes 
-  pu askdndir         Yes 
- 
-serielle Verbindung zwischen dem PC und dem MC starten (als "normaler" Benutzer): 
-  # minicom /dev/cuaa0 card12 
- 
-oder so (als "normaler" Benutzer): 
-  # minicom -t ansi /dev/cuaa0 card12 
- 
-Bedienung von //minicom//: 
-  # CTRL-A T: 
-  #     "A - Terminal emulation  : ANSI" 
-  #     "D -  Newline delay (ms) : 200" 
-  #     Anschließend MC einschalten oder den RESET-Knopf drücken! 
- 
-  # TwinPEEKs V1.6a for Card12.DG128A 
-  # 
-  #     Help: H   (listet alle Monitorbefehle auf) 
- 
-Um eine Datei (z.B.: **"//blink.s19//"**) in den Speicher des MC zu laden, 
-muss im Monitor ein **"l"** eingegeben werden, 
-jetzt ist der MC empfangsbereit. 
- 
-Jetzt sendet man mit dem Terminalprogramm die gewünschte Datei an das Monitorprogramm im MC. 
- 
-Damit das funktioniert, muss das Terminalprogramm folgendermaßen bedient werden: 
-  - "Wait for Handshake" bei "File Transfer" 
-  - "Quittungszeichen/Sequence" ist **"*"** oder **"#42"** 
- 
- 
-==== beiliegende Beispiele ==== 
- 
-Ein Beispielprogramm wird schon fertig mitgeliefert, 
-leider ist das für den //HC12D60// geschrieben worden und 
-der hat unter anderem seinen RAM-Bereich auf "0x0200 - 0x05FF" liegen 
-und der HC12DG128 hat seinen frei verwendbaren RAM-Bereich 
-auf "0x2000 - 0x3DFF" liegen, so das man das Programm für den ersten Test 
-umschreiben (blink.s) und neu übersetzen (blink.s19) muss. 
-  Program Memory (ORG): 0x8000 (erste Adr. auf der das Program gspeichert ist) 
-  Data Memory         : 0x2000 (erste RAM-Adresse) 
-  Sack Pointer   (lds): 0x4000 (letzte RAM-Adresse + 1) 
- 
-Ein funktionierender Quelcode, bei dem der Stack Pointer von 0x0600 auf 0x4000# geändert wurde könnte wie folgt aussehen. 
- 
- 
-=== Inhalt der Datei "blink.s" === 
- 
-                    CPU 68HC12 
-                    PADDING OFF 
-                    ORG $8000 
-    main            lds  $4000 
-                    clr  $0016 
-                    bset $002b,$80 
-    blink1          ldaa $0029 
-                    eora #$80 
-                    staa $0029 
-                    bsr  delay 
-                    bra  blink1 
-    delay           psha 
-                    pshx 
-                    ldx #$1000 
-    _loop1          clra 
-    _loop0          dbne a,_loop0 
-                    dbne x,_loop1 
-                    pulx 
-                    pula 
-                    rts 
-                    END main 
- 
- 
-=== MEMORY MAP des Motorola MC68HC912DG128A (//Card12.DG128A//) === 
- 
-        Register block: 0x0000 - 0x03FF 
-        EEPROM        : 0x0800 - 0x0FFF   (02 kB) 
-        RAM           : 0x2000 - 0x3FFF   (08 kB) 
-                                               (Monitor belegt 0x3E00 - 0x3FFF) 
-                                               (freier  RAM    0x2000 - 0x3DFF) 
-        Flash ROM     : 0x4000 - 0x7FFF   (16 kB  un-paged) 
-        Flash ROM     : 0x8000 - 0xBFFF   (16 kB  paged, page0...7 also 128kB) 
-        Flash ROM     : 0xC000 - 0xFFFF   (16 kB  un-paged) 
-                        (Bootblock des Monitorprogramms belegt 0xE000 - 0xFFFF) 
-                                     (freier Flash-ROM-Bereich 0xC000 - 0xDFFF) 
- 
- 
-==== Daten in den MC laden ==== 
- 
-Nach dem übersetzen in das //S19//-Format sieht das Programm wie folgt aus: 
- 
-Inhalt der Datei "blink.s19": 
-  S0030000FC 
-  S1138000CF40007900164C2B80962988805A290786 
-  S11380100220F63634CE1000870430FD0435F930E2 
-  S1058020323DEB 
-  S90380007C 
- 
-Im einfachsten Fall kann man diese Zeilen folgender maßen in den MC bekommen. 
-Man tipt im Terminalfenster, in dem das Monitorprogramm läuft, **"l"** ein und 
-fügt mit der Maus (copy + past / makieren und einfühgen) die Zeilen ein, 
-eine nach der anderen. Wichtig ist nur, das nach jeder Zeile ein 
-Zeilenumbruch mit eingegeben wird! Den kann man in X11 mit der Maus 
-mit übergeben, sonst muss man einmal ENTER drücken bevor man die nächste 
-Zeile kopieren kann. Nach dem ENTER (Zeilenumbruch) muss unbedingt auf das 
-Quittungszeichen (ein **"*"**) gewartet werden (ein paar Millisekunden) 
-bevor die nächste Zeile kopiert werden kann. 
-Aus diesem (Timing-) Grund kann man nicht immer den ganzen Inhalt 
-der S19-Datei, sozusagen mit einem Maus-Klick in den MC pumpen. 
- 
-Verwendet man //tip// oder //cu//, schaltet man mit **"l"** den MC auf "Empfang" und 
-sagt //tip/cu// mit der Zeichenfolge "~>" (oder "~~>") das eine Datei 
-eingespielt werden soll. Jetzt wird man aufgefordert den Dateinamen 
-einzugeben, an dieser Stelle gibt man den Namen der //S19//-Datei an 
-und drückt ENTER. Die //S19//-Datei sollte sich im aktuellen Pfad 
-(meistens dem HOME-Verzeichnis) befinden. 
- 
-Um das Programm dann zu starten genügt die Eingabe //g 8000//, das bedeutet 
-das Monitorprogramm soll an Adresse //0x8000// springen und das dort liegende 
-Programm starten. 
-Soll das Programm gleich nach dem einschalten automatisch gestartet werden, 
-müssen zwei Pins auf dem Board verbunden werden. 
-Das sind die Portleitungen //PH6// und //PH7//, auf dem Board sind das 
-die Pins //7// und //8// des Steckverbinders //ST5//. Zu finden oben links auf dem Board. 
-Besteht diese Verbindung, so wird nach dem einschalten immer an die Adresse 
-//0x8000// gesprungen und das Monitorprogramm nicht weiter abgearbeitet! 
- 
- 
-==== Programmiersprachen ==== 
- 
-=== Assembler === 
- 
-Zum Assemblerprogrammieren ist "asl" sehr gut geeignet: 
-  * Web  : [[http://john.ccac.rwth-aachen.de:8000/as/]] 
-  * FreeBSD-Ports-Tree: ///usr/ports/devel/asl// 
- 
-Den Quellcode in ein Binärformat übersetzten: 
-  asl blink.s                        (es wird die Datei "blink.p" erzeugt) 
- 
-Die Binärausgabe in das gewünschte //S19//-Format übersetzen: 
-  # p2hex -r \$-\$ -F Moto -M 1 +5 blink.p blink.s19 
- 
-jetzt wird die Datei "blink.s19" erzeugt. 
- 
- 
-=== C/C++ === 
- 
-Zum C/C++-programmieren kann man "m6811-elf-gcc" verwenden, 
-das ist nicht das neueste aber speziell für FreeBSD angepasst 
-und stark optimiert, so das es kleineren und schnelleren Code erzeugt: 
-  * Web  : [[http://www.gnu-m68hc11.org/]] 
-  * Hilfe: [[http://www.ee.nmt.edu/~dbaird/gcc-hc1x.html]] 
-  * Ports: ///usr/ports/devel/m6811-gcc// 
- 
-  # m6811-elf-gcc     -m68hc12 -c -o blink.o   blink.c 
-  # m6811-elf-gcc     -m68hc12    -o blink.elf blink.o 
-  # m6811-elf-objcopy -O srec        blink.elf blink.s19 
- 
-oder so: 
-  # m6811-elf-gcc -m68hc12 -nostartfiles -Wl,--oformat=srec -o blink.s19 blink.c 
- 
-jetzt wird die Datei "blink.s19" erzeugt. 
- 
- 
-==== MC68HC12-Simulator ==== 
- 
- 
-=== Simulator in Java === 
- 
-Ein MC68HC12-Simulator in Java programmiert und sehr nett aufgemacht: 
-  * [[http://www.almy.us/68hc12.html]] 
- 
-  # export JAVA_HOME=/usr/local/jdk1.4.1 
-  # export CLASSPATH=${JAVA_HOME}/lib/ 
-  # export PATH=${PATH}:${JAVA_HOME}/bin/:${JAVA_HOME}/jre/bin/ 
- 
-JRE 1.1.7: 
-  # java -jar simhc12.jar 
- 
-ab JRE 1.1.8 (dann ist er schneller!): 
-  # java -server -jar simhc12.jar 
- 
-== MEMORY MAP im evaluation board mode (MC68HC12A4EVB) == 
- 
-  #        Register block: 0x0000 - 0x01FF 
-  #        RAM           : 0x0800 - 0x0BFF   ( 01 kB) 
-  #        EEPROM        : 0x1000 - 0x1FFF   ( 02 kB) 
-  #        External RAM  : 0x4000 - 0x7FFF   ( 16 kB) 
-  #                        (gespiegelt in den Bereich 0x0000-0x3FFF 
-  #                         wo gerade ein Loch ist) 
-  #        External ROM  : 0x8000 - 0xFFFF   ( 16 kB) 
-  #                        (Monitorsimulator und Vectoren) 
- 
- 
-== MEMORY MAP im Single Chip Mode (MC68HC912B32) == 
- 
-dann sind keine Externen Speicher verfügbar 
- 
-  #        Register block: 0x0000 - 0x01FF 
-  #        RAM           : 0x0800 - 0x0BFF   ( 01 kByte) 
-  #        EEPROM        : 0x0D00 - 0x0FFF   (768  Byte) 
-  #        Flash ROM     : 0x8000 - 0xFFFF   ( 16 kByte) 
- 
  
/home/http/wiki/data/attic/hardware/microcontroller_mcu/mc68hc12.1677778408.txt · Zuletzt geändert: von manfred