Probleme beim TIMER1

OP #1977584
Lesenswert?

Hallo Zusammen!

Hätte eine Frage zum Timer1 ! Ich programmiere in Assembler MPLAB.
Muss den 16 Bit Timer 1 verwenden für ein Lauflicht. Beschreibe das 
TMR1H und TMR1L Register immer mit verschiedenen Werten ( Je nachdem wie 
die Potentiometerstellung gerade ist). Mein Problem: Das Lauflicht 
blinkt bei den Werten für: 0x2C TMR1L und 0x11 für TMR1H genauso schnell 
wie bei den Werten 0x00 TMR1H und 0x56 für TMR1L ! Wie kann das sein??

LG
(Firma: tbd) #1977832
Lesenswert?

hallo Lukas,

würde gern versuchen dir zu helfen.
Mit deinen Registern meinst du TCNT1H und TCNT1L oder?
Also meines Wissens nach kannst du nicht einfach diese Register füllen, 
weil er bei Erreichen des TOP-Wertes wieder bei 0x0000h 
anfängt...vorausgesetzt du verwendest den Normal-Mode = WGM-Mode 0.
Dann fängt er zwar EINMAL bei deinem Vorgabewert an, zählt aber dann 
wieder von BOTTOM bis TOP.
Welchen µC verwendest du?

mfg
Foikei
OP #1978118
Lesenswert?

Warum Schaltplan?
Ich kann euch kurz das Programm zeigen für den TMR1:

Initalisierung für TMR1:
           movlw  b'00010001'
    movwf  T1CON

timer1_loop
        bcf    PIR1,TMR1IF
        clrf  TMR1L
        movf  tmr1h_reg,w
        movwf  TMR1H
        movf  tmr1l_reg,w
        movwf  TMR1L
loop1      btfss  PIR1,TMR1IF
        goto  loop1
        return

tab_timerlow
          movlw   high tablestart
        movwf   PCLATH
            movlw   low tablestart
                  addwf   address, w
                  btfsc   STATUS, C
                  incf    PCLATH, f
                  movwf   PCL
tablestart
        retlw 0x00     ;WERT LED DISPLAY0
        retlw 0x11
        retlw 0x22
        retlw 0x33
                                .
                                .
                                retlw 0x2C  ;WERT 255

tab_timerhigh
        movlw   high tablestart2
        movwf   PCLATH
            movlw   low tablestart2
                  addwf   address2, w
                  btfsc   STATUS, C
                  incf    PCLATH, f
                  movwf   PCL

tablestart2
        retlw 0x00
        retlw 0x00
        retlw 0x00
                                .
                                .
                                retlw 0x11 ;Wert 255


main_1                          movlw   d'0'
                  movwf   address
                  call    tab_timerlow
        movwf  tmr1l_reg
        nop


        movlw  d'0'
        movwf  address2
        call  tab_timerhigh
        movwf  tmr1h_reg
        nop



        call  timer1_loop



PS: ist nur ein Programmteil.
LG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren