Die Nutzung des Compare Ausgangs


zurück zu Input/Output , PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage

Allgemeines
Initialisierung
Compare-Funktion
Beispiel


Allgemeines

Der Compare-Ausgang eignet sich zum zeitgenauen Erzeugen von Impulsen. Dazu wird der Timer1 auf das Zählen des Prozessortaktes eingestellt. Und im 16-Bit-Compare-Register (CCPR1H/CCPR1L) ein Sollwert geladen.

Nun wird der Wert im Compare-Register ständig mit dem Wert im Timer1-Register verglichen. Sind beide Werte gleich (Timer1 hat den Wert des Compare-Registers erreicht), wird das Flag CCP1IF (CCP2IF für den 2. Kanal) gesetzt, und der Ausgang  RC2 wird je nach Voreinstellung auf Low oder auf High gesetzt.

Das zweite CCP-Modul wirkt auf den Ausgang RC1.
Zusätzlich kann ein Interrupt ausgelöst werden.
.
Comparemode: Prinzipschaltbild

nach oben

Initialisierung
Das Capture-Modul Nr.1 wird mit dem Register CCP1CON (Adresse 17h) gesteuert, das Capture-Modul Nr.2 mit dem Register CCP2CON (Adresse 1Dh).

CCP1CON: CAPTURE/COMPARE/PWM-1-CONTROL (ADDRESS 17h):


bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Name: - - CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1
CCPxM0
Wert:
-
-
-
-
1
0
0 oder 1
0 oder 1

Für den Capture-Mode ist CCPxM3=1  und CCPxM2=0 zu setzen. Mit den Bits CCPxM1 und CCPxM0 wird ausgewählt, was bei Gleichheit von Timer1 und Compare-Register geschehen soll.
 

Mode
CCPxM1
CCPxM0
Ausgang auf High setzen
0
0
Ausgang auf Low setzen
0
1
Ausgang wird nicht verändert
1
0
Spezial-Funktion:
Ausgang unverändert,
Timer1 auf 0 setzen
1
1

Die Spezialfunktion ist für die beiden CCP-Module unterschiedlich, in beiden Modulen wird aber der Ausgang (RC2/1) nicht verändert aber der Timer1 zurückgesetzt. Das CCP2-Modul  startet aber zusätzlich die AD-Wandlung, falls der ADC eingeschaltet ist.
 
 

Soll bei Übereinstimmung RC2 auf High gesetzt werden, muss  also CCP1CON mit 8 (binär B'00001000') geladen werden:

; CAPTURE MODE mit CCP1 initialisieren
    CLRF     CCP1CON           ; CCP1-Modus aus
    BSF      CCP1CON,CCPxM3    ; CCP1-Modus in Compare Mode (RC2 auf H)

Natürlich muss auch der Timer1 auf Zählen eingestellt werden. Außerdem sollte das zugehörige Pin als Ausgang konfiguriert sein:

; RC2 auf Ausgang stellen
    BSF      STATUS,RP0        ; Bank1
    BCF      TRISC, 2          ; RC2: output
    BCF      STATUS,RP0        ; Bank 0

Jedes Compare-Ereignis setzt das Interruptflag CCP1IF (CCP2IF) im Register PIR1. Soll dadurch ein Interrupt ausgelöst werden, so ist ist das zugehörige Enable-Bit zu CCP1IE (CCP1IE) im Register PIE1 setzen.  Das sollte erst erfolgen, nachdem die anderen Einstellungen abgeschlossen sind, und CCP1IF gelöscht wurde, da jedes Verändern von CCP1CON versehentlich CCP1IF setzen kann.
Zum Erlauben des Interrupts müssen noch das Haupt-Interrupt-Flag GIE und das Peripherie-Interrupt-Flag PEIE gesetzt sein.
 

nach oben


Compare-Funktion

folgt bei Gelegenheit
 

nach oben

Beispiel

wenn ich Zeit und Lust dazu habe

nach oben

zurück zu Input/Output , PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage

Autor: sprut
erstellt: 03.07.2001
letzte Änderung: 30.07.2010