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
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
Da wäre es schon von nöten, dass du uns Schalplan und den Coder zur Verfügung stellst.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.