View
54
Download
0
Category
Preview:
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
Citation preview
Daniel Betz
Wintersemester 2011/12
*Tutorium Tech II
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
10
*AufgabenVHDL
10.01.2012
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
13
*AufgabenAssembler
10.01.2012
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
18
*AufgabenC
10.01.2012
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
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
Daniel Betz • daniel.betz@daniel-betz.com
21
*Danke für die Aufmerksamkeit
Bis nächste Woche!
10.01.2012
Recommended