TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fitson en 01 de Diciembre de 2016, 18:57:47

Título: problemas prescaler proteus?
Publicado 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.
Título: Re:problemas prescaler proteus?
Publicado por: KILLERJC en 01 de Diciembre de 2016, 19:33:30
Citar
Resulta que el proteus no cambia la frecuencia del temporizador Timer0
Citar
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
Título: Re:problemas prescaler proteus?
Publicado por: fitson en 01 de Diciembre de 2016, 19:39:06
Es verdad funciona igual vaya timo  :D

Pero el prescaler sigue igual....
Título: Re:problemas prescaler proteus?
Publicado por: KILLERJC en 01 de Diciembre de 2016, 20:44:31
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 ?
Título: Re:problemas prescaler proteus?
Publicado por: fitson en 02 de Diciembre de 2016, 13:45:04
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  ((:-)).