1 / 16

Vorstellung des MC68HC11-µControllers und des Handy Board

Vorstellung des MC68HC11-µControllers und des Handy Board. gehalten durch Frank Sill im Rahmen der - Vorlesung Aufbau und Anwendungen von µControllern -. Der MC68HC11 - Ein Überblick. einfach zu programmierende Familie von 8 Bit µControllern Anbieter: Firma Motorola (www.motorola.com/mcu)

charleen
Download Presentation

Vorstellung des MC68HC11-µControllers und des Handy Board

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vorstellung des MC68HC11-µControllers und des Handy Board gehalten durch Frank Sill im Rahmen der - Vorlesung Aufbau und Anwendungen von µControllern -

  2. Der MC68HC11 - Ein Überblick • einfach zu programmierende Familie von 8 Bit µControllern • Anbieter: Firma Motorola (www.motorola.com/mcu) • Parameter: • 8 Bit Daten und 16 Bit Adressen • 256 - 1024 Byte RAM • 512 - 2048 Byte EEPROM • 4 - 24 kByte ROM • Takt - 2 MHz (abgeleitet von 8-MHz-Schwingquarz) • 38 Logikpegeleingänge- und –ausgänge, teils mit Handshake-Funktion • 2 Hardware-Interrupts • Echtzeit - Interrupt • Impulszähler

  3. Der MC68HC11-µController – Ein Überblick (Fortsetzung) • 16-Bit-Timer-System mit • 3 Zeitmeß-Eingängen • 4 PWM-Ausgängen • COP-Watchdog • Module (integrierte Hardwarekomponenten) • AD-Wandler mit 8 gemultiplexten Eingängen • synchrone serielle Peripherieschnittstelle • asynchrone serielle Komunikationsschnittstelle • Weitere Besonderheiten: • 5V Betriebsspannung • Stromaufnahme etwa 15mA • eine Instruktion benötigt mindestens 2 Takte = 1 µs • längste Operation: Division (FDIV) mindestens 41 Takte = 20,5 µs

  4. Der MC68HC11-µController - Ein Überblick (Fortsetzung)

  5. Der MC68HC11-µController - Ein Überblick (Fortsetzung)

  6. Der MC68HC11-µController - Betriebsarten • Single Chip Mode (Einchip-Betriebsart) • Programm im internen ROM gespeichert • Port B: digitale Ausgabeschnittstelle • Port C: digitale Eingabe- /Ausgabeschnittstelle • Expanded Mode (Mehrchip-Betriebsart) • externer Speicher • Port B, Port C: Busverlängerung • STRA, STRB: Steuerleitungen • Bootstrap Mode (Urlader-Betriebsart) • µController lädt über ‘Urlader‘ (im ROM $BF40 - $BFFF) Programm aus PC in EEPROM • sehr einfache Programmierung möglich • Test-Mode

  7. Der MC68HC11-µController - Register • Akkumulatorregister A und B mit je 8 Bit auch als Akkumulatorregister D mit • 16 Bit ansprechbar • Indexregister X und Y mit je 16 Bit (Offset, Zählschleifenvariable) • Stackpointer mit 16 Bit • Programmzähler mit 16 Bit • Bedingungsregister (CCR=Condition Code Register)

  8. Der MC68HC11-µController – Adressierungsarten • Wertzuweisung (Immediate Adressing) • Befehl wird Wert zugewiesen • LDAA #90 /* Lade Akku. A mit 90D */ • Adreßzuweisung (Extended Adressing) • Befehl wird Adresse ($0000 - $FFFF) einer Speicherzelle übergeben • für CPU-Register existiert eigener Befehlscode • LDAA $01E2 /*Lade Akku. A mit Wert in RAM-Speicherzelle $01E2 */ • Kurzadreßzuweisung (Direct Addressing) • Adressierung des RAM-Bereich $0000 - $00FF • LDAA <$E2 /* Lade Akku. A mit Wert in RAM-Speicherzelle $E2 */ • Indizierte Adreßzuweisung (Indexed Addressing) • Adresse aus Summe des Wertes der Indexregister X oder Y und gesetztem Offsetwert • LDX #$1000 /*Lade X mit $1000 */ • LDAA $0A,X /*Lade Akku. A mit Wert der Adresse $100A */

  9. Der MC68HC11-µController – Befehle • Ladebefehle (LDA, LDB, LDD) • Schiebebefehle (LSR, LSRA, LSRB, LSRD, LSL, ...) • Rotationsbefehle (ROR, RORA, ROL, ROLA ... ) • Bit-Befehle (BSET, BCLR ...) • Einer- , Zweierkomplement (COM, COMA, NEG, NEGA ,...) • Addition (ABA, ABX, ABY, ADCA, ADDD, ...) • Subtraktion ( SBA, SUBA, ...) • Multiplikation (MUL) • Division (IDIV, FDIV) • konditionale Befehle (BCC, BNE, BEQ, ...) • NOP, STOP

  10. Das Handy Board

  11. Das Handy Board - Ein Überblick • handgroßes, batteriebetriebenes µController-Board • MC68HC11 • 32 kByte RAM • 16 x 2 Zeichen LCD - Display • zwei L293D IC‘s zur Ansteuerung von 4 DC-Motoren • Eingänge für 7 analoge und 9 digitale Sensoren • Infrarot Empfänger und - Sender (38 kHz) • zwei vom Benutzer programmierbare Schalter und ein Drehknopf • Piezo-Lautsprecher • Stecker für 6811 SPI • entwickelt im MIT (Massachusetts Institute of Technology) unter Fred G. Martin

  12. Das Handy Board - Ein Überblick (Fortsetzung)

  13. Das Handy Board - Interactive C (IC) • C Sprache, bestehend aus Compiler und Laufzeit-Interpreter • Compilierung und Debugging erfolgt interaktiv über Kommandozeile • enthält viele bekannte C-Befehle (for,while,if,else) • kennt lokale und globale Variablen, Arrays, Zeiger, 16 Bit und 32 Bit Integer- und 32 Bit Gleikommazahlen • IC compiliert in Psydocode für Stackmaschine dieser durch Laufzeit-Interpreter auf entsprechenden µC umgesetzt, dadurch: • beobachtete Ausführung: Erkennung von Laufzeitfehlern und Vorbeugung von Crashs • einfacheres Design: Portierung auf andere µC erfodert nur neuen p-Code Interpreter • kleiner Objekt Code: Stackmaschinecode ist kleiner als gewöhnlicher Code • Multitaskingfähigkeit: Prozesszustand definiert durch Stack, Programmzähler (PC) > einfacher Taskwechsel durch Laden von neuen Stackzeiger und PC

  14. Das Handy Board - Interactive C (Fortsetzung) • Ansteuerung des Display mit printf (format-string, [arg-1],.., [arg-N]) • DC-Motoransteuerung mit Funktionen für: • Drehrichtung (void fd(int m), void bk(int m) ) • Voltzahl (void motor(int m, int p)) • Servo-Motoransteuerung über Port A Bit 7 • Periode (int servo(int period)) • Winkel (int servo_rad(float angle)) • Ansteuerung des IR-Senders/ Empfänger • Ein-/Ausschalten ( int sony_init(i) , i{0;1}) • Datenauslesen (int ir_data(int dummy)) • einfaches Auslesen der digitalen und analogen Eingänge und Schalter • Soundausgabe

  15. Das Handy Board - Interactive C (Fortsetzung) • Multitasking • Prozesse dynamisch kreieren und zerstören • Prozeßkommunikation über globale Variablen (shared memory) • jeder Prozeß erhält bei Erstellung Zeitkontingent (Ticks) - Standard: 5ms • alle Prozesse in Prozeßtabelle • jeder Prozeß mit eigenem Stack • Argumente für Funktionsaufrufe • Abspeichern von lokalen Variablen • Rücksprungadresse für Funktionsaufrufe • Standard 256 Bytes • jeder Prozeß erhält PID

  16. /*Motoren abwechselnd an- und ausschalten*/ void drive() { while(1){ motor(2,70); printf("\nMotor1 rechtsrum"); sleep(3.0); ao(); motor(3,70); printf("\nMotor2 und linksrum"); sleep(3.0); ao(); } } /*Tonfrequenz in 10Hz-Schritten steigern*/ void beepen() { float ton; while (1){ ton = 100.0; while (ton < 10000.0){ tone(ton,0.7); ton=ton+10.0; } } } void main() { int pid1,pid2; /*neue Prozesse starten*/ pid1 = start_process(drive()); pid2 = start_process(beepen()); /*warten bis SOP-Button gedrückt*/ while (!stop_button()); kill_process(pid1); kill_process(pid2); beeper_off(); ao(); } Das Handy Board - Interactive C (Fortsetzung)

More Related