1 / 21

Tutorium Tech II

Tutorium Tech II. Daniel Betz Wintersemester 2011/12. Includes Prozessor-Hardware Eigener, mehrfach verwendeter, Code, z.B. Makros Main-Methode Hardware initialisieren Endlosschleife mit eigentlichem Programm. Typischer Aufbau Embedded-Programm.

habib
Télécharger la présentation

Tutorium Tech II

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. Tutorium Tech II Daniel Betz Wintersemester 2011/12

  2. Includes • Prozessor-Hardware • Eigener, mehrfach verwendeter, Code, z.B. Makros • Main-Methode • Hardware initialisieren • Endlosschleife mit eigentlichem Programm Typischer Aufbau Embedded-Programm Daniel Betz • daniel.betz@daniel-betz.com

  3. #define T3CON (*((volatile unsignedshort*) 0xFF42)) Dereferenzierung, um „normale“ Variable zusimulieren vorzeichenloserShort-Pointer Speicheradresse Variable kann sich „von alleine“ ändern Zugriff auf Register bzw. Adressen Daniel Betz • daniel.betz@daniel-betz.com

  4. Setzen eines Bits durch OR • Maske mit 0 bis auf Zielbit(s) • Rücksetzen eines Bits durch AND • Maske mit 1 bis auf Zielbit(s) • Bit-Operationen in C • | – OR • &– AND • ~– NOT • Beispiele: • Set: T3CON |= T3R; • Set: T3CON = T3CON | T3R; • Reset: T3CON &= ~T3R; • Reset: T3CON = T3CON & ~T3R; Bit-Maskierung Daniel Betz • daniel.betz@daniel-betz.com

  5. In C möglich durch „union“-Typ • Mehrere Variablen unterschiedlicher Typen an einem Ort im Speicher • Beispiel: typedefunionbitreg {unsignedint reg;struct {unsignedintb0 : 1; …unsignedint b15 : 1; } bits;} bitreg_t; • Zugriff: ((volatile bitreg_t *) 0xFF42)->bits.b0 Einzelbit-Zugriff Daniel Betz • daniel.betz@daniel-betz.com

  6. bit • sbit • sfr • Wird im offiziellen Header verwendet • Ermöglicht Spezialsyntax für Bit-Zugriff mit ^ • Adressierung von Bit 10:sfr MSW = 0xFFDE;sbit MSW_MC = MSW^10; C166-spezifische Datentypen Daniel Betz • daniel.betz@daniel-betz.com

  7. Auswahl bei Variablendeklaration möglich • unsignedintbdatamyvar; • bdata: Bit-Adressierbar, ^-Syntax möglich • idata: schneller Speicher • sdata: Systemspeicher • near: maximal 16k große Objekte, 16-Bit-Adressen • far: wie near, 24-Bit-Adressen • huge: wie far, maximal 64k-Objekte • xhuge: wie far, maximal 16M-Objekte C166-Speicherbereiche Daniel Betz • daniel.betz@daniel-betz.com

  8. Unterbrechen den normalen Programmfluss um besondere Ereignisse zu bearbeiten • Beispiel: Ungültiger Speicherzugriff • Können auch durch Software ausgelöst werden Interrupts Daniel Betz • daniel.betz@daniel-betz.com

  9. ILVL T3IR T3IE GLVL • T3IR: Interrupt RequestDas Interrupt soll ausgelöst werden • T3IE: Interrupt EnableSteuert, ob das Interrupt ausgelöst werden kann • ILVL: PrioritätLegt die Priorität fest. „Wichtigere“ Interrupts können andere Interrupts unterbrechen • GLVL: GruppenprioritätWenn zwei Interrupts gleicher Priorität anstehen, entscheidet die Gruppenpriorität, welches ausgeführt wird • Wichtig: Die Gruppenpriorität entscheidet nicht über Unterbrechung anderer Interrupts. Beispiel Interrupt Control Register Daniel Betz • daniel.betz@daniel-betz.com

  10. Aufgaben VHDL Daniel Betz • daniel.betz@daniel-betz.com

  11. Erläutern Sie den Unterschied des Verhaltens der beiden folgenden Wait-Befehlen • waituntilx='1' ory='1'; • waiton x, y untilx='1' ory='1'; VHDL-WissenSS10 Daniel Betz • daniel.betz@daniel-betz.com

  12. Aufgabe: VHDL-Strukturmodell • Skizze • Modell • Gegeben: Folgende Bausteine • entitynand3 isport(a, b, c : IN std_logic;y :OUTstd_logic);end; • entityoder4 isport(a, b, c, d : IN std_logic;y :OUTstd_logic);end; • entityxor2 isport(a, b : IN std_logic;y :OUTstd_logic);end; XOR VHDL-StrukturmodellSS10 Daniel Betz • daniel.betz@daniel-betz.com

  13. Aufgaben Assembler Daniel Betz • daniel.betz@daniel-betz.com

  14. Gegeben ist folgender ASM-Code für den C166:Zeig DW2Bit32 DW0x5566, 0xaaffFeld DB100, 0x45, 75, 103, 55MOV R3,Zeig ;?1MOVR2,#Bit32 + 2 ;?2MOVRL0,[R3 + #Feld] ;?3ADD R3,#FeldMOV R1,[R2+]MOVRH0,[R3+] ;?4 • Welche Adressierungsarten werden an den markierten Stellen benutzt? • Angenommen, die Adresse von Zeig sei 0x100. Was steht nach Programmende in R0 bis R3? In Hex! Adressen und AusführungSS10 Daniel Betz • daniel.betz@daniel-betz.com

  15. Der C166 führt folgendes Programm aus:MOV R1,#0xBAFFADD R1,#0xCAFF • Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum? Flags nach AdditionSS10 Daniel Betz • daniel.betz@daniel-betz.com

  16. Folgende Interrupt-Quellen sind mit ICR-Eintrag gegeben • Timer 3 (3): 0x5C • Timer 5 (5): 0x51 • Serial 1 Receive(R): 0x54 • Serial 1 Transmit (T): 0x43 • AD Overrun Error (A): 0x55 • Das Hauptprogramm ist mit H abgekürzt • Aufgaben: • Bedeutung der ICR-Einträge angeben • Matrix ausfüllen InterruptsSS06 Daniel Betz • daniel.betz@daniel-betz.com

  17. Gegeben ist folgendes ASM-FragmentMOV T3CON,#5MOV T3IC,#0x57MOV T3,#6941BSET T3R • Was bedeutet der T3CON-Wert? • Nach welcher Zeit wird der Interrupt ausgelöst? • Bei Auslösen des T3-Interrupts wird gerade ein anderer Interrupt mit ICR-Eintrag 0x54 bearbeitet. Was passiert? T3-RegisterSS07 Daniel Betz • daniel.betz@daniel-betz.com

  18. Aufgaben C Daniel Betz • daniel.betz@daniel-betz.com

  19. Gegeben: Timer 3 ist in Betrieb • Gefragt: C-Code, ohne Bitbefehle, der folgendes macht • Timer stoppen • Vorteiler auf 64 setzen (011) • Timer starten • Natürlich dürfen nur die betroffenen Bits geändert werden Bit-MaskierungWS07/08 Daniel Betz • daniel.betz@daniel-betz.com

  20. Für ein Spielzeug-Polizeiauto sollen abwechselnd 440 Hz und 585 Hz je ¼ Sekunde ausgegeben werden • Verwendet wird ein C166 mit 20 MHz • Die ¼ Sekunde wird durch Active Waiting erzeugt • Aufgaben • Methode „Delay“ schreiben – für ¼ Sekunde sind etwa 2 Millionen Schleifendurchläufe nötig • Geeigneten Vorteiler finden und Reload-Werte für beide Frequenzen berechnen • Methode „T3_Init“ schreiben, die auch den ersten Ton ausgibt – Werte dokumentieren! • Hauptprogramm schreiben Timer& aktives WartenWS09/10 Daniel Betz • daniel.betz@daniel-betz.com

  21. Danke für die Aufmerksamkeit Bis nächste Woche! Daniel Betz • daniel.betz@daniel-betz.com

More Related