TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fitson en 01 de Diciembre de 2016, 18:57:47
-
Hola buenas a todos,
Estoy aprendiendo a programar pic (PIC16F877A)y voy por el tema de los Timers .
Resulta que el proteus no cambia la frecuencia del temporizador Timer0, y eso que modifico el registro vía puntero de C ,apunto a la dirección de 0x081 (OPTION_REG) y modifico los últimos 3 bits como me dice el datashet que corresponden al prescaler de la señal del oscilador de 20MHz que tengo colocado en OSC1 Y OSC2. Analizando el pueto D que tengo configurado de salida obtengo una señal cuadrada pero con el problema que el periodo de la señal no cambia al modificar los últimos 3 bits del registro.
PD: Recomendáis el habito de utilizar punteros en vez de utilizar las funciones del compilador ccs , para atacar directamente a los registros?
Un saludo.
-
Resulta que el proteus no cambia la frecuencia del temporizador Timer0
oscilador de 20MHz que tengo colocado en OSC1 Y OSC2
El Proteus le importa poco y nada que pongas en esos pines :P, no hace caso a eso, tenes que hacer doble click en el PIC y ahi tenes para seleccionar la velocidad que tiene el clock.
En la simulacion si pones o no el cristal, el PIC funciona igual, proba quitarlo :P
-
Es verdad funciona igual vaya timo :D
Pero el prescaler sigue igual....
-
Usualmente el preescaler se suele compartir con el WDT, si es asi, tenes un bit para asignarle el preescaler a TMR0 en ves del WDT, lo cambiaste ?
-
Buenos gracias KILLERJC he conseguido detectar mi error.
Mi error fue pensar que el registro se inicializaba en todo 0 y al ver esto en el datasheet R/W-1 dije WTF ((:-)).