Autor Tema: Aclaracion de config TMR1  (Leído 2260 veces)

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Aclaracion de config TMR1
« en: 03 de Enero de 2006, 16:40:00 »
Hola amigos:
 Desde hace bien poco estoy empezando a programar en C, despues de mi paso por ASM. He realizado algunas cosas básicas, simulo y creo que me funcionan, pero al querer utilizar los timer me surgen dudas sobre las instruciones de su configuracion:

1º Si quiero desconectar el TMR1 sería asi: Setup_timer_1(T1_Disabled)
2º Para reponer y/o borrar el el contador seria: set_timer1(0)
3º Para capturar el valor del contador seria: get_timer1()
4º He realizado un pequeño programa con los timer 1 y 2 y si para desconectarlos hay que emplear lo expuesto en 1, entonces si pongo las 2 instruciones seguidas:
Setup_timer_1(T1_Disabled);
Setup_timer_2(T2_Disabled);
al compilar me da el error "expect coma" en el final del parentesis de la 2 instruciones y hay ya me pierdo.
Agradeceria ha quien me pudiese guiar un poco.
Un saludo
fermin
Todos los días se aprende algo nuevo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: Aclaracion de config TMR1
« Respuesta #1 en: 04 de Enero de 2006, 00:42:00 »
Codigo:

   setup_counters(RTCC_INTERNAL,RTCC_DIV_16); // Configuración de TIMER0 : Clock Interno y Presescaler 16
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);




·  SETUP_COUNTERS(rtcc_state, ps_state)
Esta función inicializa el timer RTCC o el WDT. El rtcc_state determina qué es lo que
activa el RTCC. El ps_state establece un pre-scaler para el RTCC o el WDT. El prescaler
alarga el ciclo del contador indicado. Si se activa el pre-scaler del RTCC el WDT
se pondrá a WDT_18MS. Si se activa el pre-scaler del WDT el RTCC se pone a
RTCC_DIV_1.
Valores del rtcc_state:
RTCC_INTERNAL
RTCC_EXT_L_TO_H
RTCC_EXT_H_TO_L
Valores del ps_state:
RTCC_DIV_2
RTCC_DIV_4
RTCC_DIV_8
RTCC_DIV_16
RTCC_DIV_32
RTCC_DIV_64
RTCC_DIV_128
RTCC_DIV_256
WDT_18MS
WDT_36MS
WDT_72MS
WDT_144MS
WDT_288MS
WDT_576MS
WDT_1152MS
WDT_2304MS
Ejemplo:
setup_counters (RTCC_INTERNAL, WDT_2304MS);

·  SETUP_TIMER_1(mode)
Esta función inicializa el timer1. Los valores de mode deben ordenarse juntos, tal como
se muestra en el ejemplo. El valor del timer puede leerse y puede escribirse utilizando
GET_TIMER1() y SET_TIMER1().
Los valores de mode son:
o T1_DISABLED o T1_EXTERNAL_SYNC o T1_DIV_BY_2
o T1_INTERNAL o T1_CLK_OUT o T1_DIV_BY_4
o T1_EXTERNAL o T1_DIV_BY_1 o T1_DIV_BY_8
Ejemplos:
setup_timer_1 ( T1_DISABLED );
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
setup_timer_1 ( T1_INTERVAL | T1_DIV_BY_8 );


·  SETUP_TIMER_2(mode, period, postscale)
Esta función inicializa el timer2; mode especifica el divisor del reloj del oscilador. period
es un número comprendido entre 0-255, y determina el momento en el que el valor del
reloj se resetea a 0. postscale es un número de 0 a 15, que determina cuántos reset del
timer se han producido antes de una interrupción. 0 significa 1 reset, 1 significa 2 reset,
y así sucesivamente. El valor del timer puede leerse y puede escribirse utilizando
GET_TIMER2() y SET_TIMER2().
Los valores de mode son:
o T2_DISABLED
o T2_DIV_BY_1
o T2_DIV_BY_4
o T2_DIV_BY_16
Ejemplo:
setup_timer_2 ( T2_DIV_BY_4, 0xc0, 2);

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: Aclaracion de config TMR1
« Respuesta #2 en: 04 de Enero de 2006, 12:31:00 »
Hola amigos:
Gracias por la aclaración la verdad es que con la explicación del manual me hacia un lio. Al poner el ejemplo del código ya me he netrado un poco mas.
Ahora voy a seguir pasando mi programa de ASM a C.
Como el primero se que me funciona al crear las funciones en C (segun el diagrama de bloques) si no me funciona ya se que es por algo que he codificado mal.
Un saludo Fermin
Todos los días se aprende algo nuevo.


 

anything