Autor Tema: el OPTION_REG  (Leído 8688 veces)

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

Desconectado Picoffon

  • PIC10
  • *
  • Mensajes: 19
el OPTION_REG
« en: 09 de Noviembre de 2004, 11:24:00 »
Hola, saludos a todos los del foro, este es mi primer mensaje y espero que me podais resolver la duda que tengo.
 Soy nuevo en esto y aunque parezca una tontería para la mayoría, tengo un problema con la instrucción OPTION_REG, el caso es que me he encontrado la siguiente instrucción en un programa en el que estoy trabajando :

OPTION_REG=%00000111

No tengo ni idea de para que sirve, y el caso es que me estoy volviendo loco porque hasta ahora no había utilizado esta instrucción.

A ver si hay alguien que me pueda explicar para que sirve. Gracias.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: el OPTION_REG
« Respuesta #1 en: 09 de Noviembre de 2004, 14:06:00 »
Cada PIC es un mundo diferente de registros, a pesar de que compartan rasgos en común.

Por ello, no hay respuesta que valga a tu pregunta... especifica que PIC es el que toma parte en el programa.

Y descargate el datasheet del modelo de PIC, porque es la llave para resolver cualquier duda al respecto de registros, y el funcionamiento general del micro.

Por ejemplo, en el 16F628A, los bits de OPTION son:

7  /RBPU   Activar-desactivar pullups portb
6 INTDG  Flanco subida-bajada de interrupcion por RB0
5 T0CS  Seleccion de fuente para clock TMR0 (RA4 o TMR0)
4 T0SE  Seleccion de flanco para TMR0 externo por RA4
3 PSA    Asignacion de prescaler a WDT o TMR0
2...0 PS2...0   Valor del prescaler

salu2

Desconectado Picoffon

  • PIC10
  • *
  • Mensajes: 19
RE: el OPTION_REG
« Respuesta #2 en: 10 de Noviembre de 2004, 04:56:00 »
Mi PIC en cuestión es el 16f84A y ya me he puesto a mirar el datasheet pa ver si encuentro su funcionamiento. GRACIASGiño

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: el OPTION_REG
« Respuesta #3 en: 10 de Noviembre de 2004, 10:07:00 »
HOLA

a ver si te la puedo clarificar un poco ,es muy facil ,las DS son muy utiles pero a veces parecen complicadas y no lo son analicemos...

tu tienes el valos%00000111

el ultimo de la derecha es el bit 0 y asi hacia la izquierda bit 1 bit 2 ....

vamos a la DS y vemos que ese registro ocupa del 0 al 2 por eso tu tienes 111 es el valor que le quieres dar al prescaler que no es mas ni menos que un divisior de entrada que tu puedes programar todo lo que entre sera dividido por el valor qu etu le asignes y en tu caso dividira por 256...por que? fijate que hay dos tablitas una para el timer 0 y otra para el watch dog (el watch dog es un timer interno que monitorea la actividad del pic,si no hay actividad por un tiempo determinado resetea el pic y lo pone en funcionamiento nuevamente) si quieres lo puedes usar o no.Porque te dije que estaba en 256 la division ,pues me fije en el bit que sigue el 0 (bit3) con ese elegimos si ese divisor lo conectamos internamente al watchdog o al timer o como esta en 0 corresponde al timer 0 y entonces busco la tablita del timer 0 que dice 256,si estuviese asignado al watch dog serian 128 el divisor.Em bit 4 nos da la opcion de que el conteo o sea el pulso que le ingrese a la pata de entrada del timer 0 haga avanzar la cuenta en la subida del pulso o en la bajada del pulso tu tienes 0 contara cuando comienze a subir...bit5 nos da la opcion de donde sacmos el pulso de conteo si lo sacamos de dentro del pic o si se lo introducimos nosotros en forma externa  en tu caso lo tomamos de clock del pic es decir de forma interna (en la mayoria de los pics es la frecuencia de XTAL dividido por 4 ) es decir si tienes un Xtal de 4 Mghz le ingresaran al TIMER 0 1 mhz bit 6 no te compliques por ahora este bit le dice al pic ,si tienes habilitadas las interrupciones externas que produzca una interrupcion cuando reciba la subida de un puso o la bajada del mismo ,algo parecido a lo anterior ,cuando producira la interrupcion si en el eje de subida es decir cuando el pulso trepa de 0 a5 volts o en el eje de bajada cuando cae de 5 a o volts...(no muy importante por ahora)
bit7 le dice si conecta unas resistencias llamadas de pull up en el puerto b o no ,sabes que significa ...todos los pics tienen en sus patas de salida un transistor (en realidad es un par de fets ) que comanda lo que tu quieras conectar a las mismas pero esta sin la resistencia de carga en su colector ,por eso tu debes conectar una R externa a 5Volts cuando deseas hacer algo,bueno en este caso el del portB ya te las conecta internamente haz de cuenta que le has conectado a cada pata una R a 5Volts eso es todo......asi que cuando veas cualquier registro llamese como se llame veras 8 unos u ceros sabiendo que el ulyimo de tu derecha es el bit 0 y poniendote delante la DS con el registro que tu necesites solo deberas definir para cada cosa o un uno o un cero en el lugar correspondiente .

Ahora tu registro  dice esto  que tiene los pullsups conectados ,que el pulso de interrupcion sera por caida,que el pulso de entrada al timer0 sera interno,que producira un conteo cuando cae,que el divisor o prescales esta asignado al timer0,y que lo que le ingresa estara dividido por 256   con xtal de 4 ingresan 1 mghz y tenemos prescaler de 256 o sea le ingresan para el conteo 3906 C/S.

saludos

khasistos

Desconectado Picoffon

  • PIC10
  • *
  • Mensajes: 19
RE: el OPTION_REG
« Respuesta #4 en: 11 de Noviembre de 2004, 11:42:00 »
Madre mia!!!! Muchísimas gracias khasistos.

Tu respuesta me ha dejado totalmente impresionado. Ayer estuve mirando el datasheet de mi PIC, y llegué a averiguar lo de que el prescaler estaba x256 y poco más, pero tus palabras me han aclarado todas las dudas que me podían quedar en la cabeza. Me ha servido de gran ayuda todo lo que me has dicho. Ahora veo que puedo contar con vosotros para futuras dudas (que las habrán seguro).Giño


 

anything