DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT...

51
DST EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 1 DST - MRT - Einführung V1 (90 min) Projekt Versuch 1.1: Gegeben ist ein Atmel uC. An PortA sind 8 Taster angeschlossen. An PortC sind 8 LEDs. Geben Sie die Taster - Information an den LEDs aus. (Wenn Taster betätigt, entspr. LED an)

Transcript of DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT...

Page 1: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Projektaufbau

13.10.2016 1DST - MRT - Einführung

V1 (90 min)

Projekt Versuch 1.1:

Gegeben ist ein Atmel uC.

An PortA sind 8 Taster angeschlossen.

An PortC sind 8 LEDs.

Geben Sie die Taster - Information an den LEDs aus.

(Wenn Taster betätigt, entspr. LED an)

Page 2: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Projektaufbau als uC - Programmierer

13.10.2016 2DST - MRT - Einführung

V1 (90 min)

Projektannalyse:

Möglicher Ablauf des Projektes (direkt im C - Code)

Page 3: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

int main (void)

{

// --- Initialisierungen ----------------------------------------------

// --- Endlosschleife im Hauptprogramm --------------------------------

while(1) { // Endlosschleife

// Controller haben nie ein Programm-Ende)

}

// --- Programm Ende --------------------------------------------------

return 0; // wird nie erreicht!

}

DST – EINFÜHRUNG IN MRT

Projektaufbau als uC - Programmierer

13.10.2016 3DST - MRT - Einführung

V1 (90 min)

// --- Function Deklarationen -----------------------------------------

void Taster_init(void); // PortA (8-Bit-Taster-Port) als Input

void LEDs_init(void); // PortC (8-Bit-LED-Port) als Output

void Algorithm(void); // gibt den Zustand von PORTA nach PORTC

Taster_init(); // PortA (8-Bit-Taster-Port) als Input

LEDs_init(); // PortC (8-Bit-LED-Port) als Output

Algorithm(); // gibt den Zustand von PORTA nach PORTC

Der Programmierer schreibt: main.c, Taster.c, LEDs.c und Algo.c und erstellt, die oben

verwendeten leeren Routinen, so dass das Projekt von Anfang an lauffähig ist, aber nichts macht!

Page 4: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Projektaufbau als uC - Programmierer

13.10.2016 4DST - MRT - Einführung

V1 (90 min)

Projektannalyse:

Möglicher Ablauf des Projektes (direkt im C - Code)

Analyse und Recherche der Hardware-Komponenten

Wie kann ich die Tasten anschließen ?

Page 5: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

ANSCHLÜSSE DES AT-MEGA32

13.10.2016 5DST - MRT - Einführung

Port Platine Robi

PA0 i -Taste 1

PA1 i -Taste 2

PA2 i -Taste 3

PA3 i -Taste 4

PA4 i -Joystick

PA5 i -Joystick

PA6 i -Joystick

PA7 i -Joystick

PB0 LCD RS

PB1 LCD R/W

PB2 i U2 RxD

PB3 o U2 TxD

PB4 SD XSS

PB5 SD XMOSI

PB6 SD XMISO

PB7 SD XSCK

PC0 o -LED 0

PC1 o -LED 1

PC2 o -LED 2

PC3 o -LED 3

PC4 o -LED 4

PC5 o -LED 5

PC6 o -LED 6

PC7 o -LED 7

PD0 i U1 RxD

PD1 o U1 TxD

PD2 LCD E

PD3

PD4 b LCD DB4

PD5 b LCD DB5

PD6 b LCD DB6

PD7 b LCD DB7

Page 6: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DIGITALER INPUT ÜBER MECH. KONTAKT

13.10.2016 6DST - MRT - Einführung

Page 7: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DIGITALER INPUT „PULL DOWN“

13.10.2016 7DST - MRT - Einführung

Page 8: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DIGITALER INPUT „INTERNER PULL UP“

13.10.2016 8DST - MRT - Einführung

Falls der Controller keinen

schaltbaren Pullup Wider-

stand besitzt, muss natürlich

ein externer Widerstand

eingesetzt werden!

Das ist in der Regel, die meist-

benutzte Schaltungsrealisierung.

Sie ist in „negativer Logik“ und

damit Versorgungsspannungs-

unabhängig!

Page 9: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

PORT - BLOCKSCHALTBILD

13.10.2016 9DST - MRT - Einführung

Page 10: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Projektaufbau

13.10.2016 10DST - MRT - Einführung

V1 (90 min)

Projektannalyse:

Möglicher Ablauf des Projektes (direkt im C - Code)

Analyse und Recherche der Hardware-Komponenten

Analyse und Recherche der Software-Komponenten

Page 11: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Analyse und Recherche der Software-Komponenten

13.10.2016 11DST - MRT - Einführung

V1 (90 min)

#include <avr/io.h> => <portpins.h> => <iom32.h>

/* Port A */

#define PINA _SFR_IO8(0x19)

#define DDRA _SFR_IO8(0x1A)

#define PORTA _SFR_IO8(0x1B)

Page 12: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Analyse und Recherche der Software-Komponenten

13.10.2016 12DST - MRT - Einführung

V1 (90 min)

PortA0 .. PortA7 = Input

PortA0 .. PortA7 Pull-Up-Widerstände

PortC0 .. PortC7 = Output

DDRA = 0b00000000;

PORTA = 0b11111111;

DDRC = 0b11111111;

Test-Software :

Sinnvoll ist es immer mit einer Ausgabe zu beginnen:

Jetzt Live

Page 13: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Steuerungs- und Regelungssysteme

13.10.2016 13DST - MRT - Einführung

V1 (90 min)

Page 14: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Heizungs - Regelung

13.10.2016 14DST - MRT - Einführung

Page 15: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

HEIZUNGS – REGELUNG

13.10.2016 15DST - MRT - Einführung

Page 16: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

5

5

4

1

1 => 16 x Temp.

5 x Durchflußmenge

HEIZUNGS – REGELUNG

13.10.2016 16DST - MRT - Einführung

Uhrzeit & Datum für Algo.

Anzeige und Tasten für Specs.

Page 17: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

HEIZUNGS – REGELUNG

13.10.2016 17DST - MRT - Einführung

-20 °C <= T < 100 °C

Page 18: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

HEIZUNGS – REGELUNG

13.10.2016 18DST - MRT - Einführung

Page 19: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

HEIZUNGS – REGELUNG

13.10.2016 19DST - MRT - Einführung

Page 20: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

HEIZUNGS – REGELUNG

13.10.2016 20DST - MRT - Einführung

5

5

4

1

1 => 16 x Temp.

5 x Durchflußmenge

NTC 0,10 € -80 .. +150 °C

Pt100 2,00 € -100 .. +200 °C

Durchfluss-

Sensor 2,00 €

Platine &

Bauteile 1,50 €

Gehäuse 0,80 €

Lohn & . . . 1,90 €

Software kompl. 0,25 € 250.000,00 €

Summe 16,05 € (150 €)

Gewinn 130 Mio €

Page 21: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

DST – EINFÜHRUNG IN MRT

Steuerungs- und Regelungssysteme

13.10.2016 21DST - MRT - Einführung

Mikroprozessoren

Signalprozessoren

Programmierbare Bausteine

Page 22: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

SYSTEMAUFBAU

13.10.2016 22DST - MRT - Einführung

Page 23: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

BUS SYSTEM

13.10.2016 23DST - MRT - Einführung

Page 24: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

BUS TIMING

Schreiben eines Datenbytes zum Speicher 12345H (0x12345)

13.10.2016 24DST - MRT - Einführung

Page 25: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

PERIPHERIE

Digitale Ports (I/O)Parallel

Seriell

Analoge Ports (I/O)AC

DC

13.10.2016 25DST - MRT - Einführung

Page 26: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER - AUFAGBE

Taster oder Kontakt: soll ein Ereignis auslösen (event) ?Wie muss der Taster betätigt sein ?Zeitbestimmung der Betätigung ?Darf der Taster auch mal nicht erkannt werden ?

13.10.2016 26DST - MRT - Einführung

Lösung:Tastenzähler soll um 1 erhöht werden!10 Betätigungen sollen pro Sekunde erkannt werden!Prellzeit < 20ms (alle kleineren Taster) => fTast Max < 25Hz!Jede Betätigung > 10ms soll erkannt werden!

Page 27: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER - LÖSUNG

++TAST_WERTfTastenabfrage ~ 100HztPrell = 20 ms

13.10.2016 27DST - MRT - Einführung

Lösung per Softwareschleife:

nur möglich, wenn die Schleife alle 10 msdurchlaufen wird!

Lösung per Interrupteingang:

nur möglich, wenn nicht so viele Kontakte (Taster) im

System vorkommen!

Lösung per Timerinterrupt:

universellste Lösung!

Page 28: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – LÖSUNG (MIT TIMERINT.)

++TAST_WERTfTastenabfrage ~ 100HztPrell = 20 ms

13.10.2016 28DST - MRT - Einführung

FCPU = 16MHz => 1 Assemblerbefehl ~ 2Zyklen=> 80.000 Befehle pro Interrupt (100Hz -> 10ms)=> 8.000 einfache C-Anweisungen pro Interrupt!

Page 29: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – LÖSUNG (MIT TIMERINT.)

13.10.2016 29DST - MRT - Einführung

Page 30: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – LÖSUNG (MIT TIMERINT.)

13.10.2016 30DST - MRT - Einführung

Page 31: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – LÖSUNG (MIT TIMERINT.)

13.10.2016 31DST - MRT - Einführung

Page 32: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – STATEMACHINE (1)

13.10.2016 32DST - MRT - Einführung

unsigned int T0_Wert = 0; // globaler Speicher

// Zählt die Tastenbetätigungen

void T0_State_Machine(void) { // 100 Hz also alle 10 ms

static int State = 0; // permanente State Nummer

switch(State) {

case 0: { // 0 warte auf keine Taste

if ((PINA & 0b001) == 0) {State = 100;}

break;

}

case 100: { // 100 warte auf Taste

if ((PINA & 0b001) != 0) {++T0_Wert; State = 0;}

break;

}

default: {

break;

} } }

Page 33: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – LÖSUNG (MIT TIMERINT.)

13.10.2016 33DST - MRT - Einführung

Page 34: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – STATEMACHINE (MIT ENTPR.)

13.10.2016 34DST - MRT - Einführung

unsigned int T0_Wert = 0; // globaler Speicher

// Zählt die Tastenbetätigungen

void T0_State_Machine(void) { // 100 Hz also alle 10 ms

static int State = 0; // permanente State Nummer

static int Cnt = 0; // permanente Counter

switch(State) {

case 0: { // 0 warte auf keine Taste

if ((PINA & 0b001) == 0) {Cnt = 2; State = 50;}

break;

}

case 50: { // 20 ms entprellen

--Cnt; if (Cnt == 0) {State = 100;}

break;

}

case 100: { // 100 warte auf Taste

if ((PINA & 0b001) != 0) {Cnt = 2; ++T0_Wert; State=150;}

break;

}

case 150: { // 20 ms entprellen

--Cnt; if (Cnt == 0) {State = 0;}

break;

} } }

Page 35: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – LÖSUNG (MIT TIMERINT.)

13.10.2016 35DST - MRT - Einführung

Page 36: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TASTER – STATEMACHINE (200MS BETÄT.)

ENTPR.)

13.10.2016 36DST - MRT - Einführung

unsigned int T0_Wert = 0; // globaler Speicher

void T0_State_Machine(void) { // 100 Hz also alle 10 ms

static int State = 0; // permanente State Nummer

static int Cnt = 0; // permanente Counter für div. Aufgaben

switch(State) {

case 0: { // 0 warte auf keine Taste

if ((PINA & 0b001) == 0) {Cnt = 2; State = 50;}

break;

}

case 50: { // 20 ms entprellen

--Cnt; if (Cnt == 0) {State = 100;}

break;

}

case 100: { // 100 warte auf Taste

if ((PINA & 0b001) != 0) {Cnt = 2; State = 150;}

break;

}

case 150: { // 20 ms entprellen

--Cnt; if (Cnt == 0) {Cnt = 20; State = 200;}

break;

}

case 200: { // Taste muss 200 ms gedrückt sein

--Cnt; if (Cnt == 0) {++T0_Wert; State = 0;}

if ((PINA & 0b001) == 0) {State = 0;}

break;

} } }

Page 37: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TIMER / COUNTER ALS INTERRUPTGEBER

13.10.2016 37DST - MRT - Einführung

Interruptfrequenz soll 10 kHz betragen

Page 38: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TIMER / COUNTER ALS INTERRUPTGEBER

13.10.2016 38DST - MRT - Einführung

Interruptfrequenz soll 10 kHz betragen

// Prescaler 101=1024 | 100=256 | 011=64 | 010=8 | 001=1

// f=16MHz/8/200 = 10.000,0 Hz => 0,100 ms

TCCR0 = (0<<CS02) | (1<<CS01) | (0<<CS00); // :8

Page 39: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TIMER / COUNTER ALS INTERRUPTGEBER

13.10.2016 39DST - MRT - Einführung

Interruptfrequenz soll 10 kHz betragen

// Prescaler 101=1024 | 100=256 | 011=64 | 010=8 | 001=1

// f=16MHz/8/200 = 10.000,0 Hz => T = 0,100 ms

TCCR0 = (0<<CS02) | (1<<CS01) | (0<<CS00); // :8

TCCR0 |= (1<<WGM01); // Enable CTC Mode

CTC = Clear Timer On Compare Match

Page 40: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TIMER / COUNTER ALS INTERRUPTGEBER

13.10.2016 40DST - MRT - Einführung

Interruptfrequenz soll 10 kHz betragen

// Prescaler 101=1024 | 100=256 | 011=64 | 010=8 | 001=1

// f=16MHz/8/200 = 10.000,0 Hz => 0,100 ms

TCCR0 = (0<<CS02) | (1<<CS01) | (0<<CS00); // :8

TCCR0 |= (1<<WGM01); // Enable CTC Mode

OCR0 = 200-1; // Output Compare Register = Teiler-1

TCNT0 = 0; // Startwert · Hauptsache <= 199

TIMSK |= (1<<OCIE0); // Timer Interrupt Ausgang Enable

TIFR = (1<<OCF0); // Timer Interrupt Flagregister

// wenn Output Compare == 0

Page 41: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

TIMER ALS ZEITBASIS

13.10.2016 41DST - MRT - Einführung

Interruptfrequenz soll 10 kHz betragen !

Es sollen die Funktionen des H.P. (main.c) aufgerufen werden:

volatile uint16_t tim0_iz; // volatile: akt Wert

volatile unsigned char uhr_sek_um = 0; // steht immer im

// Speicher

ISR(TIMER0_COMP_vect) {

++tim0_iz;

if (tim0_iz >= 10000) { tim0_iz = 0; uhr_sek_um++; }

sei();

int10kHz(); // 10 kHz Interrupt

if((tim0_iz % 10) == 5) int1kHz(); // 1 kHz Interrupt

if((tim0_iz % 100) == 88) int100Hz(); // 100 Hz Interrupt

if((tim0_iz % 1000) == 627) int10Hz(); // 10 Hz Interrupt

if((tim0_iz ) == 1243) int1Hz(); // 1 Hz Interrupt

}

int10kHz();

int1kHz();

int100Hz();

int10Hz();

int1Hz();

Page 42: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

PRAKTIKUMSBOARD MIT AT-MEGA32

13.10.2016 42DST - MRT - Einführung

Page 43: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

PRAKTIKUMSBOARD MIT AT-MEGA32

13.10.2016 43DST - MRT - Einführung

Tastenzähler +Flanke max Wechsel -Flanke

+Flanke Wechsel -FlankePort-Bits

Software-

Realisierte

Entprellung

Prellzeit

Page 44: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

GRUNDBOARD MIT AT-MEGA32

13.10.2016 44DST - MRT - Einführung

Page 45: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

ANSCHLÜSSE DES AT-MEGA32

13.10.2016 45DST - MRT - Einführung

Port Platine Robi

PA0 i -Taste 1

PA1 i -Taste 2

PA2 i -Taste 3

PA3 i -Taste 4

PA4 i -Joystick

PA5 i -Joystick

PA6 i -Joystick

PA7 i -Joystick

PB0 LCD RS

PB1 LCD R/W

PB2 i U2 RxD

PB3 o U2 TxD

PB4 SD XSS

PB5 SD XMOSI

PB6 SD XMISO

PB7 SD XSCK

PC0 o -LED 0

PC1 o -LED 1

PC2 o -LED 2

PC3 o -LED 3

PC4 o -LED 4

PC5 o -LED 5

PC6 o -LED 6

PC7 o -LED 7

PD0 i U1 RxD

PD1 o U1 TxD

PD2 LCD E

PD3

PD4 b LCD DB4

PD5 b LCD DB5

PD6 b LCD DB6

PD7 b LCD DB7

Page 46: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

PORT - BLOCKSCHALTBILD

13.10.2016 46DST - MRT - Einführung

Page 47: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

PORT - PROGRAMMIEREN

13.10.2016 47DST - MRT - Einführung

// PortA alle 8-Bits als Input

DDRA = 0b00000000;

// PortC alle 8-Bits als Output

DDRC = 0b11111111;

// PortB Bit 0-3 als Input

// und Bit 4-7 als Output

DDRB = 0b11110000; // n.u.

// Daten von PortA lesen

// und an PortC wieder ausgeben

PORTA = 0b11111111; // Pull-up-Wid.

while(1) {

PORTC = PINA;

}

Page 48: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

ANWENDUNG

13.10.2016 48DST - MRT - Einführung

Aktive Raddrehzahlfühler mit eigener Auswerteelektronik

auch: AMR-Sensor (Anisotroper Magnetoresistiver Effekt)

Der Rad-Drehzahlsensor

(Abk.: DF = Drehzahlfühler) wurde zuerst für den Einsatz im Antiblockiersystem (ABS)

entwickelt. Anfänglich handelte es sich um einen passiven induktiven Sensor

(Induktivgeber). Mittlerweile hat aber der aktive Sensor mit eigener Auswerteelektronik

immer mehr an Bedeutung gewonnen.

Positiver Nebeneffekt: Die Rad-Drehzahlinformationen können auch von via CAN-Bus

von Getriebe-, Motor-, Navigations- und Fahrwerksregelsystemen genutzt werden.

Funktionsweise und Messprinzip

Dieser Sensor arbeitet nach dem Hall-Prinzip und hat die Besonderheit, dass er Vorwärts

- und Rückwärtsbewegungen erkennt.

Aktive Raddrehzahlfühler

Page 49: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

ANWENDUNG

13.10.2016 49DST - MRT - Einführung

Aktive Raddrehzahlfühler

1 Geberring,

2 Sensor IC mit Hallsensor,

3 Sensorgehäuse

Page 50: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

ANWENDUNG

13.10.2016 50DST - MRT - Einführung

Die Drehrichtungserkennung ist durch den internen Signalversatz von drei

entsprechend angeordneten Hallelementen im Sensor möglich. Bei einem

solchen Raddrehzahlsensor übernehmen Magnete die Funktion der Zähne des

Inkrementenrades. Die Magnete sind in Nordpol und Südpol unterschieden und

sind wechselweise auf einen Polring (Geberring) angeordnet.

Anders als beim passiven Raddrehzahlsensor wird der aktive Raddrehzahlsensor

mit einer definierten Spannung versorgt und liefert schon ein im

Raddrehzahlsensor erzeugtes Rechtecksignal in Form eines Datenprotokolls zum

Steuergerät. Dieses Datenprotokoll wird als Stromsignal im

Pulsweitenmodulationsverfahren (PWM) übertragen.

Aktive Raddrehzahlfühler

Page 51: DST EINFÜHRUNG IN MRT V1 (90 min) - zielinski.fh-aachen.de fileDST –EINFÜHRUNG IN MRT Projektaufbau 13.10.2016 DST - MRT - Einführung 1 V1 (90 min) Projekt Versuch 1.1: Gegeben

ANWENDUNG

13.10.2016 51DST - MRT - Einführung

Aktive Raddrehzahlfühler