Control de varios PIC con el mismo programa

#1
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. ...
 
#2
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)
 
#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?
 
Última edición por un moderador:
#4
¿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" :LOL:)
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:
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.


Espero que el lenguaje C que estás usando, sea para el PIC C Compiler de CCS. :unsure:
 
Última edición:
#6
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. :eek:

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.
 
#7
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. :eek:

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...
 
#8
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?
 
#9
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.
 
#10
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.
 
#11
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
 

Temas similares

Arriba