Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/05/2015 #1


Control de varios PIC con el mismo programa
buenas tardes:
quiesiera saber si habria una diferencia de tiempos usando microcontroladores cada uno con el mismo programa para dibujar una secuencia con leds, para ser mas especifico el mismo programa lo voy a usar con varios microcontroladores el cual tendra secuencias y estas secuencias en algun momento se veran afectadas por los tiempos que quiza puedan retardarse o adelantarse los pic estoy usando el oscilador interno del pic.

lo he simulado en proteus y parece que despues de un par de repeticiones de las secuencias se ven pequeñas diferencias en tiempo en uno de los pic y esto hace que la secuencia que esta corrien do en ese momento no sea la que deberia mostrarse, se que lo mejor seria montarla en fisico y observar pero espero que sus experiencias antes de montarlo me puedan ayudar, estoy trabajando con el ocilador interno del pic a 4 mhz, el pic que estoy usando es el 12f683. ...
17/05/2015 #2
Moderador

Avatar de D@rkbytes

Usa un oscilador principal.
Puedes usar un microcontrolador que genere el reloj y a los otros los configuras para usar oscilador externo.
(El reloj que generará el microcontrolador principal)
17/05/2015 #3


Gracias D@rkbytes, no se me había ocurrido. Lo voy a intentar como me dices.
Estoy trabajando en C y la verdad nunca he trabajado con un oscilador externo.
¿Me ayudarías con el encabezado del programa?
17/05/2015 #4
Moderador

Avatar de D@rkbytes

97872372 dijo: Ver Mensaje
¿Me ayudarías con el encabezado del programa?
Claro. La configuración es sencilla.

Para el Master Clock: (Traducido, me suena a título de película. "Maestro del Tiempo" )
Código PHP:
#fuses   INTRC
#use     delay(clock = 4MHz) 
El fuse principal es INTRC
Con este fuse se obtendrá una frecuencia de salida de: Fosc /4
Por lo tanto, si la frecuencia del oscilador interno es de 4 MHz, entonces se obtendrá una frecuencia de 1 MHz.
Esta frecuencia se obtiene por el pin 3 (GP4/CLKOUT)

Ahora, para los otros microcontroladores, esta sería la configuración:
Código PHP:
#fuses   EC_IO
#use     delay(clock = 1MHz) 
Aquí el fuse principal es: EC_IO
Y la señal de reloj se ingresa por el pin 2 (GP5/CLKIN)
Como verás, ahora los microcontroladores que usarán el reloj principal, se configuran a 1 MHz.

Este es el inconveniente de usar la salida de reloj del PIC, ya que se divide entre 4.
Sin embargo, el oscilador interno del PIC12F683 puede llegar hasta 8 MHz, con lo que a su salida se obtendrían 2 MHz.


97872372 dijo: Ver Mensaje
Estoy trabajando en C
Espero que el lenguaje C que estás usando, sea para el PIC C Compiler de CCS.
18/05/2015 #5

Avatar de aguevara

Muy buena opcion darkbytes, solo una observacion la traduccion literaria de master clock es " reloj maestro" ;-)
Saludos
18/05/2015 #6
Moderador

Avatar de D@rkbytes

Si, esa es la traducción correcta, por eso puse, (me suena) y entre comillas "Maestro del Tiempo"

Aprovechando el breviario cultural, quiero mencionar algo importante.

Como tengo un protoborad con varios microcontroladores PIC12F629, se me ocurrió que cada uno hiciera destellar un LED cada 500 ms.
Obviamente uno de los PIC es el que genera la señal de reloj y los demás usan esta señal.
Bien, pues aún así, si existe un desfase notable entre los demás microcontroladores.
Pasados algunos segundos, ya empiezan a destellar los LEDs cada uno por su cuenta.

Entonces estaría bien probar con un oscilador externo independiente a cristal, y ver si ya no existe este problema que posiblemente se deba a la inestabilidad del oscilador interno del PIC principal.
20/05/2015 #7


D@rkbytes dijo: Ver Mensaje
Si, esa es la traducción correcta, por eso puse, (me suena) y entre comillas "Maestro del Tiempo"

Aprovechando el breviario cultural, quiero mencionar algo importante.

Como tengo un protoborad con varios microcontroladores PIC12F629, se me ocurrió que cada uno hiciera destellar un LED cada 500 ms.
Obviamente uno de los PIC es el que genera la señal de reloj y los demás usan esta señal.
Bien, pues aún así, si existe un desfase notable entre los demás microcontroladores.
Pasados algunos segundos, ya empiezan a destellar los LEDs cada uno por su cuenta.

Entonces estaría bien probar con un oscilador externo independiente a cristal, y ver si ya no existe este problema que posiblemente se deba a la inestabilidad del oscilador interno del PIC principal.

tienes toda larazon aun usando otro pic que genere el oscilador no llegan a sincronizarse del todo existe un desfase despues de el final de todo el programa cuando empieza a repetir el programa asies que se me ocurrio mejor que cuando termine de correr todo el programa mandarle un clear al pic ahora nose si ponerselo en el programa a cada uno de ellos o usar nuevamente un master pic y resetear a todos con el mismo pulso.... si tienes otra mejor idea hasmela saber...
20/05/2015 #8
Moderador

Avatar de D@rkbytes

Pues si existe un desfase, será general en todos los microcontroladores.
Lo mejor sería que el microcontrolador principal diera la orden de reset.

Tengo una duda. ¿Para qué usar varios microcontroladores, si todos tienen el mismo programa?
28/05/2015 #9


D@rkbytes dijo: Ver Mensaje
Pues si existe un desfase, será general en todos los microcontroladores.
Lo mejor sería que el microcontrolador principal diera la orden de reset.

Tengo una duda. ¿Para qué usar varios microcontroladores, si todos tienen el mismo programa?
hola y disculpa por la demora en responderte, gracias tambien por el dato de generar el reset con un pic master.
Pues si los diferentes pic tienen elmismo programa en tre comillas por que existen pequeñas variaciones en algunas de sus salidas pero se ejecutan en el mismo tiempo es decir si tengo una salida 0001 en un pic en el otro tengo 1110 y asi sucesivamente con los demas esto lo hago con la intencion de generar una secuencia juntando todos los pic. he estado ocupado con el trabajo y estudios y por el tiempo no me es facil continuar con el proyecto... pero ya en unas semanas espero armarlo en fisico y mostrar imgenes del proyecto de todos modos gracias por tus aportes.
28/05/2015 #10
Moderador

Avatar de D@rkbytes

OK. Antes de que realices el PCB realiza las pruebas en un protoboard, porque si no se logra la sincronización, tendrás que optar por usar el oscilador a cristal, y si los pines no te alcanzan, tendrás que cambiar de PIC.
28/05/2015 #11

Avatar de Daniel Meza

Hola, comento para dar alguna otra solución más sencilla, bueno en realidad dos formas:

1)-Seguir la topología de varios PIC's e implementar un pequeño protocolo serie de tal forma que un PIC maestro se comunique con cada uno y le envíe eventualmente los datos relativos a cada PIC esclavo para encender o apagar cada LED, de esta forma el maestro tiene control sobre todas las secuencias que seguirá cada esclavo sin preocuparse por que estén sincronizados uno con otro (esto último hablando de los PIC's esclavos).

2)-Utilizar registros serie externos y un sólo PIC maestro que actualice el estado de los LED's (los leds irían conectados a los registros externos). La idea es similar a la 1 pero haciendo uso de menos micros.

Salu2
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.