Previous Page Table Of Contents Next Page


Bitte beachte die Copyrighthinweise.

La06-ww3

Compare-Capture

1 Aufgabenstellung

· Initialisierung des Timers 2, Zählfrequenz ca. 4kHz,

· Initialisierung des AD-Converters,

· Initialisierung der Compare-Capture Unit (CCU), Compare-Mode 0,

· Sollwertvorgabe (z.B. Dreieck) und

· Aufbau einer geschlossenen, pulsweitenmodulierten Regelschleife mittels des 80C537.

2 Initialisierung

2.1 Allgemeines

Die Microcontrollerplatine wurde an UB = 5V (mit Multimeter P2 überprüft) angeschlossen.

Die Verbindung erfolgte über die serielle Schnittstelle 1 mittels des Programms MT (MonTerm). Bedienung: F1 Ende, F2 Öffnen, g0 für Programmstart GO ab Adresse 0.

2.2 Testprogramm

· Am Anfang des Programms werden die Interruptvektoren, u.a. für Timer 2, definiert.

· Danach erfolgt die Initialisierung des ADCs:
über ADCON1 wird Kanal 0 (Port 7.0) ausgewählt,
über ADCON0 wird Einzelwandlung und keine ext. Triggerung eingestellt.

· Initialisierung des Timers2:
Die Register und die Reloadregister werden auf FF00h gesetzt  somit erfolgt der Überlauf nach 256 Zählschritten.
T2CON: interner Oszillator, Compare-Mode 0, Autoreload, Zähltakt fOSZ/12.
Zählfrequenz: CPUClk/12 = 1MHz, 1MHz/256 = 3,9kHz.
Eine Realisierung mit dem Timer 1 ist nicht möglich, da dieser nicht mit der CCU zusammenarbeitet.

· Initialisierung der CCU:
Die Register CCx1 werden auf FF10h gesetzt  somit tritt ein compare match nach 10 Zählschritten von TMR2 auf.
Mit CCEN werden alle Compare-Capture mit Ausnahme von CC1 gesperrt. Der Modus von CC1 wurde bereits in T2CON auf Modus 0 eingestellt.

· Interrupt/Ende
Danach werden die Interrupts freigegeben und das Hauptprogramm wartet in einer Endlosschleife auf den TMR2 Interrupt.

· TMR2 Interruptserviceroutine:
Zusätzlich zum Compare-Capture wurde an Port 4 ein Rechteck ausgegeben.

La06a.asm

;*********************************************************************

; Editor: Florian Rosenauer @ HTBLA Karlstein, Austria-3830 Waidhofen

; Datum: 23/Okt/1997 Klasse/Gruppe/Kat.Nr : V-EA/-/--

;*********************************************************************

; Sprache : ASM für 80C537

; Programm Nr. : Labor 06 - Compare Capture

; Version : 0.5

; Kurzbeschreibung : TMR2 Intrpt. Test + konstantes Tastverhaeltnis

;*********************************************************************

#include 537.inc

a .equ $e0 ; Akku

.org $0000

ljmp $0100 ; Sprung über Interupts

.org $002B ; TMR2 Int

ljmp TMR2INT

.org $0100

init ; -- Initialisierung --

; - ADC -

mov $DC,#$00 ; ADCON1 (MX3 bis MX0) auf 0 ->Port P7.0

mov $D8,#$00 ; ADCON0 ->kein ext.Trig, Einzelwandlung

; - TMR2 -

mov TH2,#$FF

mov TL2,#$00

mov CRCH,#$FF

mov CRCL,#$00

mov T2CON,#%00010001 ; int.osc.,cmpmde0,mode0-autorel.;fosz/12

; - CCU -

mov CCH1,#$FF

mov CCL1,#$10

mov CCEN,#%00001000

setb ET2 ; enable TMR2 Int.

setb EAL ; enable all Int.

loop ljmp loop ; Ende Hauptprogramm

TMR2INT inc P4

reti

.end

Nachdem in MONTERM mittels g0 |:-) das Programm gestartet worden war, konnten folgenden Signale beobachtet werden:

An Port 4.0 wurde ein Rechtecksignal mit 36ms (27,7kHz) Periodendauer gemessen.

An Port 1.1 wurde ein PWM (pulsweitenmoduliertes) Rechtecksignal mit T = 250ms (4,0kHz) und einem toff = 20ms (n = (250-20)/250 = 92%) gemessen. Durch eine Variation des CCL1-Wertes konnte das Tastverhältnis geändert werden.

3 Regelkreis

3.1 Schaltung

Der Abgriff von UB = 5V und Masse erfolgte jeweils an den Netzteilklemmen.

Prinzip der CCU

Das PWM-Signal auf P1.1 wird über eine B-Endstufe auf einen Tiefpass mit

fg = =106Hz

ausgegeben und über einen AD-Wandler per Software mit dem Sollwert verglichen. Die Software soll nun das Tastverhältnis so steuern, dass ein vorgegebenes Signal nachgebildet wird.

Zuerst wurde softwaremäßig ein konstanter Sollwert vorgegeben.

3.2 Programm

Das erste Programm wurde innerhalb der Interruptroutine erweitert, sodass eine Regelung stattfinden sollte.

La06b.asm

;*********************************************************************

; Editor: Florian Rosenauer @ HTBLA Karlstein, Austria-3830 Waidhofen

; Datum: 23/Okt/1997 Klasse/Gruppe/Kat.Nr : V-EA/-/--

;*********************************************************************

; Sprache : ASM für 80C537

; Programm Nr. : Labor 06 - Compare Capture

; Version : 0.6

; Kurzbeschreibung : CCU mit Regelung

;*********************************************************************

#include 537.inc

a .equ $e0 ; Akku

.org $0000

ljmp $0100 ; Sprung über Interupts

.org $002B ; TMR2 Int

ljmp TMR2INT

.org $0100

init ; -- Initialisierung --

; - ADC -

mov $DC,#$00 ; ADCON1 (MX3 bis MX0) auf 0 ->Port P7.0

mov $D8,#$00 ; ADCON0 ->kein ext.Trig, Einzelwandlung

; - TMR2 -

mov TH2,#$FF

mov TL2,#$00

mov CRCH,#$FF

mov CRCL,#$00

mov T2CON,#%00010001 ; int.osc.,cmpmde0,mode0-autorel.;fosz/12

; - CCU -

mov CCH1,#$FF

mov CCL1,#$80

mov CCEN,#%00001000

setb ET2 ; enable TMR2 Int.

setb EAL ; enable all Int.

loop ljmp loop ; Ende Hauptprogramm

TMR2INT clr TF2 ; Uberlaufflag TF2 loeschen

inc P4 ; nur test

mov DAPR,#$00 ; DAPR ->Spannung 0-5V, Start der Wandlung

wait jb BSY,wait ; Ende Wandlung ADC abwarten

mov A,#$80 ; Vorgabewert

mov $00,ADDAT

cjne A,$00,s2 ; setzt carry, falls r0 groesser als A (r0)

reti ; falls equal!

s2 jc incCC

mov A,CCL1

jz ende

dec CCL1 ; falls CRCx -> f aendert sich

jz ende

incCC mov A,CCL1

subb A,#$FF

jz ende

inc CCL1

ende reti

.end

3.3 Flussdiagramm der Interruptroutine

Am Port 1.1 war jedoch nur ein Signal mit konstanter Frequenz, aber ständig im kompletten Bereich variierenden Tastverhältnis zu erkennen.

Aus Zeitgründen konnte das Programm nicht fertiggestellt werden.

4 Interpretation der Messergebnisse

Die Initialisierung war in Ordnung, es konnte ein pulsweitenmoduliertes Signal erzeugt werden. Die Frequenz war mit 4,0kHz etwas über dem berechneten Wert von 3,9kHz. Dies könnte an einem ungenauen Quarz aber auch an der Messung mit dem Oszilloskop liegen. Für die eingestellten 10 Schritte (ca. 10ms) war toff = 20ms etwas zu lange. Dies könnte daran liegen, dass P1.1 schneller zurückgesetzt als gesetzt wird.

Die Regelschleife zeigte nur ein ständig ein von null auf max. (oder umgekehrt?) ansteigendes (fallendes) Tastverhältnis an. Es wird offensichtlich CCL1 ständig erhöht oder erniedrigt. Zwei Programmfehler sind sicherlich ein jz statt eines ljmp vor dem Label incCC sowie eine fehlerhafte Implementierung der Zero Überprüfung. Eine genauere Überprüfung des aktuellen Programms ist deshalb sinnlos.

5 Anhang

5.1 Literaturverzeichnis

[1] 8051 m-Controller Praktikum  Keim, Schnell; Franzis-Verlag

[2] MC-Tools 5  Handbuch des 80C517 und 80C517A; Feger, Reith, Hardware u. Software Verlags OHG


Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.
[http://www.FLR.at/]
Letztes Update vom 25. Jul. 1999 von Florian Rosenauer

Previous PageTop Of Page Next Page

Powered by Transit