Tutorium Tech II

21
Daniel Betz Wintersemester 2011/12 * Tutorium Tech II

description

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. - PowerPoint PPT Presentation

Transcript of Tutorium Tech II

Page 1: Tutorium Tech II

Daniel Betz

Wintersemester 2011/12

*Tutorium Tech II

Page 2: Tutorium Tech II

Daniel Betz • [email protected]

2

*Typischer Aufbau Embedded-Programm

*Includes

*Prozessor-Hardware

*Eigener, mehrfach verwendeter, Code, z.B. Makros

*Main-Methode

*Hardware initialisieren

*Endlosschleife mit eigentlichem Programm

10.01.2012

Page 3: Tutorium Tech II

Daniel Betz • [email protected]

3

*Zugriff auf Register bzw. Adressen

#define T3CON (*((volatile unsigned short *) 0xFF42))

SpeicheradressevorzeichenloserShort-Pointer

Variable kann sich „von alleine“ ändern

Dereferenzierung, um „normale“ Variable zusimulieren

10.01.2012

Page 4: Tutorium Tech II

Daniel Betz • [email protected]

4

*Bit-Maskierung

* 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;

10.01.2012

Page 5: Tutorium Tech II

Daniel Betz • [email protected]

5

*Einzelbit-Zugriff

* In C möglich durch „union“-Typ

* Mehrere Variablen unterschiedlicher Typen an einem Ort im Speicher

*Beispiel:

typedef union bitreg {unsigned int reg;struct {

unsigned int b0 : 1;…unsigned int b15 : 1;

} bits;} bitreg_t;

*Zugriff:

((volatile bitreg_t *) 0xFF42)->bits.b0

10.01.2012

Page 6: Tutorium Tech II

Daniel Betz • [email protected]

6

*C166-spezifische Datentypen

*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;

10.01.2012

Page 7: Tutorium Tech II

Daniel Betz • [email protected]

7

*C166-Speicherbereiche

*Auswahl bei Variablendeklaration möglich

*unsigned int bdata myvar;*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

10.01.2012

Page 8: Tutorium Tech II

Daniel Betz • [email protected]

8

*Interrupts

*Unterbrechen den normalen Programmfluss um besondere Ereignisse zu bearbeiten

*Beispiel: Ungültiger Speicherzugriff

*Können auch durch Software ausgelöst werden

10.01.2012

Page 9: Tutorium Tech II

Daniel Betz • [email protected]

9

*Beispiel Interrupt Control Register

7 6 5 4 3 2 1 0

T3IR T3IE ILVL 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.

10.01.2012

Page 10: Tutorium Tech II

Daniel Betz • [email protected]

10

*AufgabenVHDL

10.01.2012

Page 11: Tutorium Tech II

Daniel Betz • [email protected]

11

*VHDL-WissenSS10

*Erläutern Sie den Unterschied des Verhaltens der beiden folgenden Wait-Befehlen

*wait until x='1' or y='1';*wait on x, y until x='1' or y='1';

10.01.2012

Page 12: Tutorium Tech II

Daniel Betz • [email protected]

12

*VHDL-StrukturmodellSS10

* Aufgabe: VHDL-Strukturmodell

* Skizze

* Modell

* Gegeben: Folgende Bausteine

* entity nand3 is port (a, b, c : IN std_logic; y : OUT std_logic);end;

* entity oder4 is port (a, b, c, d : IN std_logic; y : OUT std_logic);end;

* entity xor2 is port (a, b : IN std_logic; y : OUT std_logic);end;

XOR

10.01.2012

Page 13: Tutorium Tech II

Daniel Betz • [email protected]

13

*AufgabenAssembler

10.01.2012

Page 14: Tutorium Tech II

Daniel Betz • [email protected]

14

*Adressen und Ausführung

SS10

*Gegeben ist folgender ASM-Code für den C166:Zeig DW 2Bit32 DW 0x5566, 0xaaffFeld DB 100, 0x45, 75, 103, 55MOV R3,Zeig ;?1MOV R2,#Bit32 + 2 ;?2MOV RL0,[R3 + #Feld] ;?3ADD R3,#FeldMOV R1,[R2+]MOV RH0,[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!

10.01.2012

Page 15: Tutorium Tech II

Daniel Betz • [email protected]

15

*Flags nach AdditionSS10

*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?

10.01.2012

Page 16: Tutorium Tech II

Daniel Betz • [email protected]

16

*InterruptsSS06

*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

10.01.2012

Page 17: Tutorium Tech II

Daniel Betz • [email protected]

17

*T3-RegisterSS07

*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?

10.01.2012

Page 18: Tutorium Tech II

Daniel Betz • [email protected]

18

*AufgabenC

10.01.2012

Page 19: Tutorium Tech II

Daniel Betz • [email protected]

19

*Bit-MaskierungWS07/08

*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

10.01.2012

Page 20: Tutorium Tech II

Daniel Betz • [email protected]

20

*Timer & aktives Warten

WS09/10

*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

10.01.2012

Page 21: Tutorium Tech II

Daniel Betz • [email protected]

21

*Danke für die Aufmerksamkeit

Bis nächste Woche!

10.01.2012