Autor Tema: Dudas con el Timer  (Leído 2146 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Mako22

  • PIC12
  • **
  • Mensajes: 77
Dudas con el Timer
« en: 15 de Noviembre de 2009, 13:59:45 »
Hola a todos.
Estoy intentando hacer algo muy sencillo con un 12f683, pero no lo consigo. Mi intención es hacer lo siguiente. Una entrada para leer un pulso de un receptor de rc, para dejar encendido de modo fijo un led o apagarlo, lo que pasa es que aun no tengo el receptor que voy a usar y aún no he entrado en esa rutina.
Un led con un simple parpadeo, otro con parpadeo parecido a un estroboscopio, y otro con un efecto fader.
He echo por separado cada una de las rutinas más o menos como las quiero y funcionan bien, el problema viene cuando intento ejecutarlas todas a la vez. He visto que la manera de conseguir una especie de "multitarea" se hace con los timer, pero tengo una duda sino cuatro. Cuando ejecuto la rutina del timer0 y la del timer1, funcionan bien aunque se ejecutan una detrás de la otra, es decir cuando termina de parpadear un led lo hace el otro, no ambos a la vez. ¿Es correcto así?¿no lo puedo hacer de otra forma?
Segunda duda, cuando ejecuto el código del timer2, los otro dos leds (rutinas) dejan de funcionar y solo funciona el efecto fader.¿? Tercera duda, he leído que se pueden llegar a utilizar hasta 16 timers, aunque yo solo necesitaré un máximo de cuatro, ¿eso es correcto? Y la ultima, he intentado usar la patilla GP4 como salida y no funciona ¿tiene alguna particularidad en especial?
Disculpar por la parrafada.
Un saludo
Código: [Seleccionar]
;Chip Settings                       
#chip 12F683,4                       
                                     
;Variables                           
Dim i As byte                       
                                   
On Interrupt Timer0Overflow Call Time
On Interrupt Timer1Overflow Call Time
On Interrupt Timer2Overflow Call Time
'On Interrupt Timer3Overflow Call Time

                                     
'Parpadeo
dir gpio.0 Out                     
'Stroboscopica                       
dir gpio.1 Out                       
'Fade                               
dir gpio.2 Out                       
'Foco frontal a través de la emisora
'dir gpio.4 Out     

osccal = b'11111111'                 
                                     
InitTimer0 Osc, PS1_1/1             
InitTimer1 Osc, PS1_1/1             
InitTimer2 Osc, PS1_1/1             
'nitTimer3 Osc, PS1_1/1             

wait 100 ms                         
                                     
ClearTimer 0                       
StartTimer 0                       
ClearTimer 1                         
StartTimer 1                         
ClearTimer 2                         
StartTimer 2       
'ClearTimer 3                         
'StartTimer 3                     

main:                               
set gpio.0 Off                       
set gpio.1 Off                       
set gpio.2 ON                       
wait 10 us                           
goto main                           
                                     
Sub TimerMark0                       
'Parpadeo
Set GPIO.0 on   
Wait 1000 ms   
Set GPIO.0 off 
Wait 1000 ms               
Return                             
End Sub                             
                                     
Sub TimerMark1                       
'Estrobocopica                     
Wait 1000 ms                       
Set GPIO.1 Off                     
Wait 40 ms                         
Set GPIO.1 On                       
Wait 40 ms                         
Set GPIO.1 Off                     
Wait 40 ms                         
Set GPIO.1 On                       
Return                             
End Sub                             
                                     
Sub TimerMark2                       
'Fader
' PWMOn                             
' Set gpio.2 Off                   
' For i = 255 To 0 step -1         
'  HPWM 1,1,i                       
'  Wait 6 ms                       
' next i                           
' PWMOff                           
' wait 800 ms                       
' Return                           
End Sub                             
                                     
'Sub TimerMark3                       
' Este timer leera la emisora para el foco delantero

'Return
'End Sub


 

anything