Hola amigos, he leído muchos de sus foros pero al parecer nadie ha tenido el problema que tengo.... quiero controlar varias cosas distintas, por lo que decidí hacer una comunicación serial entre varios pics. Al principio todo funcionaba de maravilla, pero al seguir aumentando la cantidad de módulos comenzó el problema. Uno de los pics es el que envia datos por el B2(TX), y todos los otros pics estan conectados por un mismo cable .... algo asi como un BUS, al B1 (RX)...... todo esta alimentado con una fuente de computador por lo que creo que el voltaje de alimentación y el ruido están controlados....... intente hacer pruebas eliminando el pic principal y conectando el cable del BUS directamente al max232 y enviar los datos desde el computador, pero de un momento a otro comienza a volverse loco..... si pruebo cada uno de los programas independientes todo funciona de maravilla pero me he dado cuenta que todo falla cuando son mas de 5 pics aproximadamente conectados al cable (BUS), a continuación pongo el código del programa que mas se vuelve loco, este es para controlar 2 reles.
#include <16F628A.h>
#fuses HS,NOWDT,PROTECT,NOLVP,NOPUT,NOBROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N, xmit=PIN_B2, rcv=PIN_B1,bits=8)
int dato = 0;
void motor(dato){
if(dato == 51){
output_high(PIN_B4);
delay_ms(1250);
output_low(PIN_B4);
}
if(dato == 52){
output_high(PIN_A3);
output_high(PIN_B4);
delay_ms(900);
output_low(PIN_B4);
output_low(PIN_A3);
}
}
void main(){
set_tris_a(0x00);
set_tris_b(0x02);
port_b_pullups(true);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_oscillator(false);
output_low(PIN_B4);
output_low(PIN_A3);
printf("start");
while (true){
if(kbhit()){
dato = getc();
putc(dato);
motor(dato);
}
}
}
Cuando se vuelve loco, comienza a prende y apagar los reles, y si le mando el valor 51 o 52 funciona bien, pero apenas dejo de enviarle datos, comienza a cambiar de estado de forma aleatoria.
Estaba leyendo que el numero de dispositivos que pueden conectarse a un bus I2C esta limitado, de forma que este no supere los 400 pF de capacitancia.
Alguien me puede explicar que es eso??.... cuanta capacitancia tiene un pic???.... sera que eso es lo que hace que se vuelvan locos todos los pics?????.