Autor Tema: por favor.... algun ejemplo para usar el timer0...  (Leído 2317 veces)

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

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
por favor.... algun ejemplo para usar el timer0...
« en: 11 de Diciembre de 2008, 23:08:12 »
hola a tod@s... no hace ni apenas 1 mes que estoy con los pics y el pbp asi que entendedme  :lol:
he tenido ultimamente un par de ideas pero que creo que no he podido llevar a cabo por que no se como funciona lo de los timer... por mucho que me esfuerce
no lo llego a entender por eso pediria ayuda a vosotros..... los experimentados para que me pongais un par de ejemplos faciles de comprender en pbp usando los tipos de timers...

este es un proyecto el cual no me acaba de funcionar bien....


define osc 4
CMCON = 7
TRISIO = %00000110 ' ENTRADAS
tiempo var word

tiempo = 1000
inicio:
if gpio.2 = 0 then
tiempo= tiempo - 100
pause 90
endif
if gpio.1 = 0 then
tiempo = tiempo + 100
pause 90
endif
if tiempo < 20 then tiempo = 1000
if tiempo > 1980 then tiempo = 1000

gpio.0 = 1
pause tiempo
gpio.0 = 0
pause tiempo
goto inicio


estoy haciendo un oscilador con un 12f629 el cual mediante 2 pulsadores aumenta/disminuye  la pausa en 100mseg con cada pulsacion
pero el problema es cuando la frequencia es muy baja, 1 Hz o menos...
las interupciones no las ejecuta ya que el pic esta ocupandose del tiempo de PAUSE
por eso pido que alguien me explique como va lo de los timer...por que creo que con el timer lo podria solucionar
 he buscado en el buscador y en google y he encontrado info...
pero no lo acabo de entender ya que en ensambler no pillo ni papa y muchas explicaciones estan basadas en ese sistema

por favor... lo dicho dadme ejemplos faciles y alguna explicacion, asi intentare comprenderlo ejercitandolo
« Última modificación: 23 de Diciembre de 2008, 07:15:08 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: por favor.... algun ejemplo para usar el timer0...
« Respuesta #1 en: 23 de Diciembre de 2008, 22:11:47 »
De PBP no tengo ni idea, pero a ver si te puede servir esto mientras te contestan.

Código: QBasic/QuickBASIC
  1. Define CONF_WORD = 0x3184
  2. Define CLOCK_FREQUENCY = 4
  3.  
  4. CMCON = 7
  5. TRISIO = %00000110  'E/S
  6.  
  7. DIM tmr_1 AS Word 'Contardor, se incrementa en pasos de +-1mSeg.
  8. DIM tmr_2 AS Word '"
  9. DIM tmr_3 AS Word '"
  10. DIM tmr_4 AS Word '"
  11. DIM tmr_5 AS Word '"
  12. DIM tmr_1_tmp AS Word 'Limite superior contador en mSeg.
  13. DIM tmr_2_tmp AS Word '"
  14. DIM tmr_3_tmp AS Word '"
  15. DIM tmr_4_tmp AS Word '"
  16. DIM tmr_5_tmp AS Word '"
  17. DIM flag AS Bit 'Controla el estado de la salida GPIO.0
  18.  
  19. tmr_1_tmp = 90 'Tiempo a contar por la base de tiempos tmr_1
  20. tmr_2_tmp = 90 'Tiempo a contar por la base de tiempos tmr_2
  21. tmr_3_tmp = 1000 'Tiempo a contar por la base de tiempos tmr_3
  22. tmr_3 = 0 'Activa el tmr_3 desde el inicio
  23. flag = 0 'Habilita primero GPIO.0=1
  24.  
  25. inicio:
  26.  
  27.         IF tmr_1 >= tmr_1_tmp THEN 'Permite el paso cuando el tmr_1 termino de contar
  28.                 IF GPIO.2 = 0 THEN
  29.                         IF tmr_3_tmp >= 100 THEN tmr_3_tmp = tmr_3_tmp - 100 '>=100 impide desborde y decr.
  30.                         tmr_1 = 0 'Activa el tmr_1 desde el inicio
  31.                 Endif
  32.         Endif
  33.  
  34.         IF tmr_2 >= tmr_2_tmp THEN
  35.                 IF GPIO.1 = 0 THEN
  36.                         IF tmr_3_tmp <= 65435 THEN tmr_3_tmp = tmr_3_tmp + 100 '<=65435 impide desb. e incr.
  37.                         tmr_2 = 0
  38.                 Endif
  39.         Endif
  40.  
  41.         IF tmr_3_tmp < 20 THEN tmr_3_tmp = 1000
  42.         IF tmr_3_tmp > 1980 THEN tmr_3_tmp = 1000
  43.  
  44.         IF tmr_3 >= tmr_3_tmp AND flag = 0 THEN
  45.                 tmr_3 = 0
  46.                 flag = 1 'Habilita GPIO.0=0
  47.                 GPIO.0 = 1
  48.         Endif
  49.         IF tmr_3 >= tmr_3_tmp AND flag = 1 THEN
  50.                 tmr_3 = 0
  51.                 flag = 0 'Habilita GPIO.0=1
  52.                 GPIO.0 = 0
  53.         Endif
  54.  
  55.         IF tmr_1 < tmr_1_tmp THEN tmr_1 = tmr_1 + 1 'Bases de tiempos
  56.         IF tmr_2 < tmr_2_tmp THEN tmr_2 = tmr_2 + 1 '"
  57.         IF tmr_3 < tmr_3_tmp THEN tmr_3 = tmr_3 + 1 '"
  58.         IF tmr_4 < tmr_4_tmp THEN tmr_4 = tmr_4 + 1 '"
  59.         IF tmr_5 < tmr_5_tmp THEN tmr_5 = tmr_5 + 1 '"
  60.         WaitMs 1 'Unidad de las bases de tiempos
  61. GOTO inicio
« Última modificación: 24 de Diciembre de 2008, 10:26:58 por dogflu66 »
Saludos desde Granada, España.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: por favor.... algun ejemplo para usar el timer0...
« Respuesta #2 en: 23 de Diciembre de 2008, 22:47:58 »
gracias de nuevo amig@...
claro que me sirve...
es mirar el codigo y intentar saber como funciona
1000 gracias
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...


 

anything