www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer 2 Capture Mode


Autor: Matthias Junker (xc866)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe noch schnell eine Frage zum Timer 2 Capture Mode.
Den Prescaler habe ich auf 16 eingestellt.
fpclk ist 26,7 MHz. Das Register im Timer ist 16 BIT. Dann sollte doch
alle 0,0392s ein Interupt ausgelöst werden.
Dann hat es 8 BIT im CNTRL Register und 8 Bit im CNTRH Register.
Das heist alle 0,0392s wird das CNTRL Register um 1 Incrementiert. Das
heisst 1 Stelle im CHTRH Register sollte 10,0352s sein. Das stimmt
aber
irgendwie nicht ganz?
An was könnte das liegen?

Gruss

Code:
;-------------------------Reaktionszeitmessung-------------------------- 
----------------------------

#include <xc866.inc>

;-------------------------User
Register-------------------------------------------------------------
CNTRL equ r2     ;Counter Low Register zuweisen
CNTRH equ r3     ;Counter High Register zuweisen

;----------------------------Flag
Adressen----------------------------------------------------------
SEND_TXT_FLAG equ 020h
;----------------------------Interups----------------------------------- 
----------------------------
 JMP Start
 ORG 002Bh
 JMP THL2
 ORG 100h

;----------------------------Ports
initialisieren---------------------------------------------------
START:  MOV PORT_PAGE,#00h
MOV P3_DIR,#00000100b  ; P3.1 reset Taster Input    P3.2 LED Output
MOV P1_DIR,#00000010b  ; P1.0 Taster Input T2EX enable
MOV  PORT_PAGE,#001H
MOV  P1_PUDEN,#00000000b  ;ENABLING PULLUP
MOV  P1_PUDSEL,#00000000B
MOV PORT_PAGE,#02h
MOV P1_ALTSEL0,#00000000b  ; ALT2 einstellen für T2EX
MOV P1_ALTSEL1,#00000011b  ; ALT2 einstellen für T2EX
MOV PORT_PAGE,#000H    ; wichtig ohne das läuft nichts




;----------------------------Serielle Schnittstelle
einrichten---------------------------------------
MOV BG,#10101110b     ;174d Baudrate 9600 BAUD
MOV SCON,#01010000b    ;Modus1 und recieive einschalten
MOV BCON,#00000001b    ;bd generator einschalten
MOV FDCON,#00000000b  ;Fractional Divider Control Register

;----------------------------Timer 2 Capture
Unit----------------------------------------------------
MOV T2CON,#00001101b  ;CP/RL2=1      EXEN2=1
MOV T2MOD,#10111000b  ;T2PRE = 100 Prescaler =16 PREN=1
;EDGESEL=1    T2RHEN=1 T2REGS=1

;-----------------------------Initialisiere
Interupps------------------------------------------------
Setb ET2
Setb EA
CLR TI
;-----------------------------Programm---------------------------------- 
-----------------------------
Hauptprogramm:
           NOP
           NOP
           NOP
        NOP
           NOP
        JMP Hauptprogramm

;-----------------------------Timer2
Interuppt--------------------------------------------------------
THL2:  CLR A     ; Akku löschen
  MOV A,T2CON     ; T2CON in Akku verschieben
  XRL A,#01000000b   ; 6.Bit wechseln "das ist EXF2 Bit"
  CJNE A,#00001101b,INC_CNT  ; Ist der Interuppt durch TF2 ausgelöst,
gehe zu INC-CNT
  call SEND_TIME     ; jump send Time

INC_CNT:    INC CNTRL  ; R0 um 1 inkerementieren
      MOV A,CNTRL  ; R0 in Akku laden
      JNZ IRQ_T2_end; Wenn Akku = 0 eine Zeile weiter springen
      INC CNTRH  ; INC R1
      CLR TF2  ; Akku löschen
      RETI

;---------------------------------------
SEND_TIME:    MOV A,CNTRH
      CALL SEND
      MOV A,CNTRL
      CALL SEND
      MOV A,RC2H
      CALL SEND
      MOV A,RC2L
      CALL SEND
      CLR EXF2
      RETI


SEND:  CLR TI
        MOV SBUF,A

SEND_WAIT:    jbc ti, back
        jmp SEND_WAIT

back:    RET

IRQ_T2_end:   Clr TF2
    RETI

END

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.