TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: joruji en 22 de Mayo de 2007, 11:42:05
-
Hola, mi problema es que quiero utilizar un único cristal para un pic y otro dispositivo que tambien necesita una fuente de reloj.
El montaje lo tengo claro, he conectado el cristal a las patillas osc1 y osc2 del dispositivo secundario, y he utilizado la patilla clkout como fuente de reloj para el PIC a traves de la patilla clkin. El problema es que haciendo solo esto no consigo hacer funcionar el pic, supongo que necesitaré hacer algún tipo de declaración dentro del programa para que el pic se entere de que tiene una señal de reloj que le está entrando por la patilla clkin, pero la verdad es que no se que tipo de expresión he de utilizar. He leido algo en el foro de que hay que activar el fuse ec oscillator del pic, pero no se como se hace y tampoco tengo muy claro de que es el fuse ec ese.
Espero que los que están acostumbrados a este programa me sepan decir cual es la instrucción que he de utilizar para hacer funcionar el pic de esta manera. Por cierto, se me olvidaba, el programa que utilizo es Pic Basic Pro
Un saludo.
-
No sé cómo se utiliza el Pic Basic Pro pero si utilizas Winpic800 puedes modificar los fuses en su propia interface. Poniendo al segundo pic el fuse EC lo tendrás resuelto.
-
vale, leyendo un poco he averiguado que utilizando ASM podria activar el fuse de la siguiente manera desde mi programa
asm
@ DEVICE pic16f84a, "fuse"_ON
endasm
Lo que ocurre es que he puesto "EC" donde pone "fuse" y me da error. Como deberia escribir el fuse EC para activarlo?
-
Con que PIC quiers hacerlo??? si miras en la carpeta donde estan los archivos del compilador de PBP existe una carpeta que dice INC ahi buscas el modelo del PIC a usar y lo abres con el MCS o Bloc de notas. Ahi viene todos los registros y Fuses de tu pic. busca como es la sintaxis del fuse en especifico y basta con poner en tu programa al inicio
@DEVICE y el fuse sin usar ASM ENDASM
-
ok, vale he encontrado los fuses de mi pic, que es el 16F84a, pero no existe el fuse EC que es el que me había encontrado leyendo por el foro y que servía para lo que yo quería. He mirado para el 16f877 que tambien es un pic que tengo que utilizar, pero tampoco he encontrado el fuse ese.Ahora que empezaba a aclararme, resulta que ya no se como decirle al pic que utilice el reloj externo. :(
-
Para ambos pics mediante la directiva @DEVICE tienes estas opciones del oscilador:
RC_OSC....Oscilador mediante capacitor y resistor
HS_OSC....Oscilador mediante crystal o resonador de alta velocidad externo
XT_OSC....Oscilador MEDIANTE CRYSTAL O RESONADOR EXTERNO
LP_OSC....Oscilador mediante un crystal de bajo poder.
Al parecer por la imagen del data sheet del 16f84a de la pagina 24 puedes usar XT HS o LP para usar una señal externa.
En PBP el oscilador default es XT osea externo de 4mhz default siempre y cuando no se le diga lo contrario.
Una solucion rapida es usar un 16f88 que posee oscilador interno.
Saludos
-
Me temo que el 16F84 no contempla la posibilidad de una señal de clock externa directamente :(
-
Pero debe haber alguna manera, porque en el datasheet te indican que se le puede asociar una señal de reloj externa a traves del pin16 que es tanto osc1 como clkin. Después, tal y como indica navaismo, tienes diferentes modos de operación, tanto para un cristal directo (a osc1 y osc2) como para uno externo de otro dispositivo (a clkin). Y yo que me pensaba que esto iba a ser una tontería... :?
-
Insistiendo un poco no podrias cualquier otro pic con oscilador interno???
-
Retiro lo dicho, según la página 25 de la datasheet, los modos XT,HS y LP deberían servirte para oscilador externo.
Si el primer PIC oscila perfectamente deberías buscar la avería por otra parte.
-
ya, pero quieres decir que si escribo en mi programa "@ DEVICE pic16f84a, XT_OSC" el pic me reconocerá el reloj externo?. Se supone que los modos XT,HS yLP simplemente afectan al modo de operación o tipo de reloj, pero no dice nada de que active o desactive el operar con un reloj externo. Esta tarde lo probare a ver, ya os contaré.
-
Nota: solo es @DEVICE XT_OSC o HS_OSC o LP_OSC
-
bueno, he probado el @DEVICE XT_OSC (tengo un cristal de cuarzo de 8mhz), y no he conseguido hacer reaccionar al pic. El programa debe funcionar ya que simplemente le digo que active o desactive un pin. Además, lo he probado con el cristal conectado al pic directamente y así funciona. Habra que buscar otra alternativa a lo del XT_OSC :(
-
xt es la default de microcode y es para 4Mhz intenta con HS. y mandanos un diagrama de como conectas todo.
-
Nada, no hay manera ni con XT ni con HS. Donde debo poner el @DEVICE HS_OSC? supongo que al principio que es donde lo estoy poniendo. Debería poner además algún "define osc"?.
La manera en la que están conectados los dispositivos al reloj es la siguiente, por si ésto deja más claro como lo quiero probar:
(http://img130.imageshack.us/img130/7504/imagensr6.jpg)
-
¿estás seguro que ese CLKOUT transmite señal de clock?, ¿lo has visto en osciloscopio/frecuencímetro?
-
No he medido la salida de mi circuito, pero esa configuración sí estoy seguro de que funciona ya que viene en el datasheet del tda5051( es un modem para transmitir datos por la red eléctrca). De hecho tengo dos posibilidades, una útilizando el pic como maestro y el modem como esclavo y ésta que yo utilizo. He optado por ésta porque puedo comprobar si funciona o no el pic, mientras que con la otra configuración me resultaría muy dificil comprobar si el módem funciona o no, ya que todavía no he conseguido transmitir. Hasta ahora tenía un cristal para cada dispositivo, pero como no lograba transmitir información con el módem opté por utilizar el circuito que proponían en el datasheet ya que puede que de esa manera funcionen el pic y el modem correctamente sincronizados. No se, la verdad es que el circuito me está trayendo bastantes quebraderos de cabeza para hacerlo funcionar...
-
No he medido la salida de mi circuito, pero esa configuración sí estoy seguro de que funciona ya que viene en el datasheet del tda5051( es un modem para transmitir datos por la red eléctrca).
Dejame corregirte , no es que la configuracion funcione , si no que deberia funcionar, y para verificar que esta funcionando y eliminar este posible fallo deberias medirla , segun la hoja de datos del TDA5051 la señal en este pin tiene una frecuencia que es la mitad a la del cristal , es decir 4 MHz, y ademas de verificar la frecuencia deberias ver tambien la amplitud de esta señal , ya que se puede dar el caso que no tenga suficiente amplitud para alimentar al PIC.
Saludos
-
Es un proyecto muy interesante.
Un saludo.
-
... no es que la configuracion funcione , si no que deberia funcionar, ...
Exacto, si no dispones de instrumental, podrias cargar un programa que cuente pulsos en el PIC y probarlo con cristal externo hasta estar seguro que el TDA te genera clock válido.
-
He medido la señal de entrada osc1 del módem y la señal de salida en el pin clkout con un osciloscopio y obtengo exactamente la misma señal sinusoidal. Por tanto ya sabemos que a la entrada del pin clkin del PIC tenemos la señal de reloj. Dios, no hay manera...! A buscar otra posibilidad. No ha probado nadie a hacer algo parecido?
-
Donde has conseguido los integrados, ya que estoy interesado en adquirirlos. Seguro que entre los dos podriamos hacer funcionar el circuito.
Un saludo
-
Mmmm..., ¿sinusoidal?, prueba a cuadrarla con una puerta lógica Schmitt-Trigger (o un operacional) antes de inyectarla al PIC. Puede que el PIC necesite una señal cuadrada para eso...
-
con esa misma señal pero insertada directamente al PIC por las patillas osc1 y osc2 funciona, nose porque no debería funcionar insertando esa misma señal pero solo por el pin osc1. Respecto al TDA5051 lo pedí en RS en su página de amidata, no recuerdo por cuanto salía pero estaba por los 10euros. Yo no lo pagué, lo pagó la universidad, ya que es para el proyecto de fin de carrera :)
-
Bueno, pero ahora no puedes meterla por los dos pines; sólo por uno. No pierdes nada probando :-)
-
Lo puedo intentar, pero el problema es que la placa la tengo ya hecha en pcboard y no en protoboard por tanto modificar cosas es un poco más dificil, sobretodo si tengo que añadir cosas. Es más simple cortar pistas como ya habia hecho con el cristal del pic. Eso sí, llevando cuidado de no cargarme otra parte del circuito :)
-
Entiendo. Pues como quieras, sólo es una idea porque realmente no sé por donde tirar con ese fallo.
-
Agradezco toda la ayuda que me estais dando, la verdad es que yo tampoco se ya por donde tirar. Pensaba que sería una chorrada, pero parece que es más de lo que parecía. :(
Yo creo que debe haber alguna instrucción que habilite el modo de operación como esclavo. Aquello de activar el fuse EC no creo que lo dijeran por nada,de hecho salía en un post donde querían hacer lo mismo que yo pero con dos PICs y un reloj, lo que pasa es que no tengo ni idea de para que es ese fuse ni en que pics está disponible.
Como último recurso me queda cambiar el reloj y poner el PIC como maestro y el módem como esclavo, pero en ese caso habrá que ver de que modo puedo comprobar que el modem está operativo...
-
He buscado el post en el que hablaban sobre eso de poner 2PICs con un reloj y es el siguiente:
http://www.todopic.com.ar/foros/index.php?topic=8531.0 (http://www.todopic.com.ar/foros/index.php?topic=8531.0)
Jeje, resulta que los PICs de los que hablan son 16F84's como el mío, y la persona que saca el tema del fuse EC eres tú Nocturno :o. Siempre apareces en todo lo sitios..!! :D
-
He medido la señal de entrada osc1 del módem y la señal de salida en el pin clkout con un osciloscopio y obtengo exactamente la misma señal sinusoidal. Por tanto ya sabemos que a la entrada del pin clkin del PIC tenemos la señal de reloj. Dios, no hay manera...! A buscar otra posibilidad. No ha probado nadie a hacer algo parecido?
Esto me suena un poco raro , porque se supone que la la señal en CLKOUT del pic deberia tener una frecuencia de 1/4 el valor de la señal e CLKIN,
Por otro lado creo que la señal que debes ponerle a CLKIN debe ser cuadrada , encontre unos esquemas en el mid-range reference manual que muestra como alimentar el pic con una señal de reloj externa por CLKIN y se utilizan señales cuadradas.
Adjunto los dibujos.
Saludos
-
Jeje, resulta que los PICs de los que hablan son 16F84's como el mío, y la persona que saca el tema del fuse EC eres tú Nocturno :o. Siempre apareces en todo lo sitios..!! :D
Sí :D, siempre respondo lo mismo porque lo he probado con éxito, pero en un 18F. No sabía que el 16F no lo tiene.