MCT Uebung5

10
Leitner/Niederwieser 1 MCT : Laborprotokoll MICROCONTROLLERTECHNIK Nr./ Titel der Übung: 4. ADC / Timer Protokollabgabe: 29.04.2012 Protokollverfasser: Leitner Andreas Niederwieser Lukas Unterschriften :

description

Microprocessors lab protocol

Transcript of MCT Uebung5

Page 1: MCT Uebung5

Leitner/Niederwieser 1

MCT : Laborprotokoll

MICROCONTROLLERTECHNIK

Nr./ Titel der Übung: 4. ADC / Timer

Protokollabgabe: 29.04.2012

Protokollverfasser: Leitner Andreas

Niederwieser Lukas

Unterschriften :

Page 2: MCT Uebung5

Leitner/Niederwieser 2

MCT : Laborprotokoll

1.) ADC

Welche Control Register des ADC10 Devices werden initialisiert?

ADC10CTL0 (Control Register 0 )

ADC10CTL1 (Control Register 1 )

Welche Werte bzw. welche Bits wurden gesetzt?

ADC10CTL0 = ADC10CTL0 & ~ENC;

ADC10CTL0 = ctl0;

ADC10CTL1 = ctl1;

ctl0 (Darstellung der gesetzten Bits)

ENC = Enable Conversion Bit auf 1

ADC10IE = Interrupt Enable auf 1

ADC10ON = ADC10 On Bit auf 1

REFON = ADC10 Reference generator on bit auf 1

REF2_5V = Reference generator voltage auf 1( 2.5V )

MSC = Multiple Sample and Conversion auf 1

ADC10SR = ADC10 Sampling Rate auf 1 ( 50ksps )

ADC10SHT_2 = Sample and Hold Time auf 10 gesetzt (16 x ADC10CLK)

SREF_1 = Select Reference auf 001 gesetzt (VR+ = VREF+ and VR− = VSS )

Bild 1.1 Control Register 0

Page 3: MCT Uebung5

Leitner/Niederwieser 3

MCT : Laborprotokoll

ctl1 (Darstellung der gesetzten Bits)

CONSEQ_1 = Conversion sequence mode select auf 01 (Sequence of channels)

ADC10SSEL_0 = ADC10 Clock source select auf 00 (ADC10OSC ~ 5Mhz)

SHS_2 = Sample hold source select auf 10 (Timer_A.OUT0)

INCH_4 = Input Channel select auf 0100 (Channel A4)

Welche Clock wurde für die ADC10CLK gewählt?

Es wurde der ADC10OSC gewählt welcher mit ca. 5Mhz taktet

Welche Frequenz hat die ADC10CLK?

Die Frequenz (ADC_FREQUENCY) beträgt 100Hz

Welche Clock wurde als Quelle für das „Samplen“ verwendet?

16 x ADC10CLK

Welche Sample Time wird benötigt?

Berechnen Sie diese. (siehe MSP430x2xx User Guide, Seite 20-8)

Rs = 120k || 1M = 107k ( Spannungsteiler der Sensoreingangstufen )

Ri= 2k

Ci= 27pF

tsample> (Rs + Ri ) * ln(2^11) * Ci = 22.4µs

13*ADC10OSC = 2.6us

t_sync = 0.2us

Entspricht dies der eingestellten Sample Time?

16*ADC10OSC = 16 * 1/5Mhz = 3.2us

Stimmt mit der eingestellten Sample Time nicht überein.

D.h der Kondensator wird nicht zur Gänze aufgeladen und eine genaue Umrechnung auf die

Sensorwerte ist so nicht genau möglich.

Bild 1.2 Control Register 1

Page 4: MCT Uebung5

Leitner/Niederwieser 4

MCT : Laborprotokoll

Wie berechnet sich aus Eingangspannung und den Referenzspannungen der Wert,

den eine AD-Konvertierung liefert?

NADC = 1023 x (Vin – Vr-) / (Vr+ - Vr-)

Welche Referenzspannungen werden für CrazyCar verwendet?

REF2_5V = High → 2.5V

Wie wird die gemessene Versorgungsspannung berechnet?

ADC_buffer[0]*93 >> 10

Rechtsshift um 10 : Division durch 1024

93... Ausgleichsfaktor ( wegen Spannungsteiler und falscher Sample Time)

Multiplikation mit 10: Damit nicht mit Floating Point Zahlen gerechnet wird, das Komma wird

extra eingefügt um am Display die Floating Point Zahl darzustellen.

Page 5: MCT Uebung5

Leitner/Niederwieser 5

MCT : Laborprotokoll

Teil 2:

(1) ADC10 Konfiguration:

Lesen Sie mittels ADC auch die Werte Kompass_X, Kompass_Y ein.

Stellen Sie auch die zusätzlich eingelesenen Werte am Bildschirm dar

Page 6: MCT Uebung5

Leitner/Niederwieser 6

MCT : Laborprotokoll

Page 7: MCT Uebung5

Leitner/Niederwieser 7

MCT : Laborprotokoll

2.) Timer:

Welche Control Register des Timer Devices werden initialisiert?

Timer A:

TACCTL0 = ctl0;

TACCTL1 = ctl1;

TACCTL2 = ctl2;

TACTL = ct1;

Timer B:

TBCCTL0 = ctl0;

TBCCTL1 = ctl1;

TBCCTL2 = ctl2;

TBCTL = ct1;

Timer A:

TACCTL1 = 0

TACCTL2 = 0

TACTL:

TASSEL_2 = Timer_A clock source select auf 10 (SMCLK)

MC_1 = Mode control auf 01 (Up Mode: Timer counts to TACCR0)

TAIE = Timer interrupt enable auf 1 (Interrupt enabled)

TACCTL0 = PWM Outputmodegesetzt auf 3 (PWM Set/Reset)

Bild 2.1 Control Register Timer A

Page 8: MCT Uebung5

Leitner/Niederwieser 8

MCT : Laborprotokoll

Timer B:

TBCCTL1 = PWM Output Mode 6 (PWM Toggle/Set)

TBCCTL2 = PWM Output Mode 6 (PWM Toggle/Set

TBCTL:

TASSEL_2 = Timer_B clock source select auf 10 (SMCLK)

MC_1 = Mode control auf 01 (Up Mode: Timer counts to TBCCR0

TBCCTL0 = 0

Welche Source Clock wird für die TimerClock verwendet ?

Es wurde der SMCLK ( System Master Clock ) verwendet.

In welchem Modus wird der Timerbetrieben ?

Der Timer wird im Up Mode ( Timer zählt bis TACCR0 bwz. TBCCR0 )

Welche Capture-Compare Module (Register) werden verwendet?

Mit welchen Werten werden sie beschrieben?

TBCCR0 bzw. TACCR0 = periode ( Timer Periode )

TBCCR1 bzw. TACCR1 = duty1 ( Pulslänge 1 )

TBCCR2 bzw. TBCCR2 = duty2 ( Pulslänge 2 )

Bild 2.2 Control Register Timer B

Page 9: MCT Uebung5

Leitner/Niederwieser 9

MCT : Laborprotokoll

Timer A:

TACCR0 = ADC_Periode( SMCLK/ADC_FREQUENCY )

TACCR1 = 0

TACCR2 = 0

Timer B:

TBCCR0 = PERIODE ( SMCLK/PWM_FREQUENCY )

TBCCR1 = NEUTRAL ( 3000 )

TBCCR2 = NEUTRAL ( 3000 )

Welche Timer Ausgänge werden verwendet und wozu?

Timer B:

TBCCR1 für PWM Signal des DC Motors (Antrieb)

TBCCR2 für PWM des Servos ( Lenkung )

Timer A:

Wird in der Demo Software nicht verwendet

Page 10: MCT Uebung5

Leitner/Niederwieser 10

MCT : Laborprotokoll

Erzeugen Sie 2 PWM Signale von denen ein Signal ein Tastverhältnis von 40:60 aufweist.

Das andere Signal stellen Sie invertiert dazu dar. Achten Sie dabei darauf, dass die PWM

Signale für „break before make“ konfiguriert sind. D.h dass bevor ein „on“ signalisiert wird

beide Signale gemeinsam einen „off“ Zustand zeigen:

Konfiguration :

Geräteverzeichnis:

Gerät Bezeichnung Seriennummer

Oszilloskop Agilent DSO-X 3012A 4535061654

Handmultimeter Metrix MX44 54000295

Bild 2.3 PWM - Signal

Tabelle 2.1 Verwendete Messgeräte