Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Comunicacion serial multiple


       



#1  Comunicacion serial multiple
kukoc
Ubicación: mexicali, B.C. mexico
Registrado: 19 Jun 2006
Mensajes: 2
citar
Hola necesito saber si hay algun C.I. que pueda usar como demultiplexor que me permita comunicarme con 8 microcontroladores en forma serial, no necesito comunicarme al mismo tiempo con los microcontroladores. yo creo que seria algo mas como un switch para cambiar el envio de informacion de un microcontrolador a otro.

#2  Comunicacio Serial
Carontre
Ubicación: South Africa
Registrado: 09 Jun 2006
Mensajes: 6
citar
Hola, me podrias decir si los controladores estan en la misma placa o estan en placas separadas?.
Que tipo de controlador usas?
Gracias

#3  
kukoc
Ubicación: mexicali, B.C. mexico
Registrado: 19 Jun 2006
Mensajes: 2
citar
los microcontroladores estan en placas separadas y es el PIC16F877A

#4  
Carontre
Ubicación: South Africa
Registrado: 09 Jun 2006
Mensajes: 6
citar
Hola:
No conosco bien los PIC porque suelo tabajar con ATMEL, pero las bases deben ser las mismas.
El asunto es que lo que podes hacer es usar RS485 con esa norma podes conectar los controladores en formato de cadena.Todos los micros estan conectados a la misma linea y todos reciben el mismo mensage.Debes ver como haces, si pones un solo master y los demas esclavos(esta es la opcion mas recomendada y la mas simple) o haces multy master(mas complicado).
Si usas master-slave todos los controladores estan siempre en escucha y solo salen a transmitir cuando el master los interroga.
Para que cada micro sepa cuando el mensage es para el lo mas usal es hacer un encabezado en el protocolo de comunicacion, por ejemplo:
0,direccion,3,4,mensaje.
todos reciben el mensaje pero solo el que tenga esa direccion procesa el mensaje.
El integrado que usamos para el RS485 es SN75176B, es realmente facil de usar, pero si usas otro, te recomiendo usar el que ya conoces.
Si queres te puedo dar una rutina recepcion hecha en C , usada en un ATMEGA8 de atmel, para que tengas una referencia.
Espero que esto te sea de ayuda.
Gracias

#5  
Carontre
Ubicación: South Africa
Registrado: 09 Jun 2006
Mensajes: 6
citar
Hola:
Otra solucion si es que ya tenes todo armado o el sistema ya esta funcionando podes usar algo como este MUX.
Visita
http://pdfserv.maxim-ic.com/en/ds/MAX398-MAX399.pdf.
Creo que esto tambien te puede ayudar.
Gracias

#6  
RamonL
Registrado: 03 Mar 2008
Mensajes: 1
citar
Hola, con mucha atención leí tus comentarios acerca de este tema y me interesaría saber si todavía tienes la rutina a la cual haces referencia. Yo trabajo con ATMega8 Board myAVR. Me alegraría mucho si pudieras ayudarme.
Muchos saludos desde Alemania

Ramon

Carontre escribió: Hola:
No conosco bien los PIC porque suelo tabajar con ATMEL, pero las bases deben ser las mismas.
El asunto es que lo que podes hacer es usar RS485 con esa norma podes conectar los controladores en formato de cadena.Todos los micros estan conectados a la misma linea y todos reciben el mismo mensage.Debes ver como haces, si pones un solo master y los demas esclavos(esta es la opcion mas recomendada y la mas simple) o haces multy master(mas complicado).
Si usas master-slave todos los controladores estan siempre en escucha y solo salen a transmitir cuando el master los interroga.
Para que cada micro sepa cuando el mensage es para el lo mas usal es hacer un encabezado en el protocolo de comunicacion, por ejemplo:
0,direccion,3,4,mensaje.
todos reciben el mensaje pero solo el que tenga esa direccion procesa el mensaje.
El integrado que usamos para el RS485 es SN75176B, es realmente facil de usar, pero si usas otro, te recomiendo usar el que ya conoces.
Si queres te puedo dar una rutina recepcion hecha en C , usada en un ATMEGA8 de atmel, para que tengas una referencia.
Espero que esto te sea de ayuda.
Gracias

#7  
Carontre
Ubicación: South Africa
Registrado: 09 Jun 2006
Mensajes: 6
citar
Hola Ramon:
Esto es un ejemplo de rutina para comunicacion con multiples unidades
El tuco es cada una tiene una direccion especifica y acepta el mensaje solo si es dirigido a esta.
Al final se usa una forma de check sum, puede ser la forma que vos quieras. la idea es que
despues de recibir el mensaje si todo esta bien seteas una bandera, esta bandera activa una
parte en tu programa principal y asi inicias el tratamiento del mensaje recibido.

// esto es en la rutina de interrupcion de la UASRT

DataIn = UDR; // lee el regidtro de la USART

switch(SerStatus) // byte de status declarado static en la misma subrutina
{
case 0: // Sync
if(DataIn == 0x00)
{
CHK = 0x00;
contador = 0x00;
p_RxBuf = rxbuf;
SerStatus++;
}
else
SerStatus = 0x00;
break;
case 1: // direccion
if(DataIn == Address) // aca compara con la direccion guardada en el micro
{ // cada micro tiene diferente direccion a va a aceptar el mensage cuando sea
SerStatus++; // dirigido a este
CHK ^= DataIn;
}
else
SerStatus = 0x00; // si no esta dirigodo a esta unidad retorna el comienzo
break;
case 2:// final de encabezado
if(DataIn == 4)
{
SerInpStatus++;
CHK = CHK ^ DataIn;
}
else
SerStatus = 0x00;
break;
case 3:
*p_RxBuf++ = DataIn;
if(contador < 10) // recibe 10 caracteres - podes hacerlo tan largo como quieras
contador++;
else
SerInpStatus++;
CHK = CHK^DataIn;
break;
case 4:
if(DataIn == CHK) // si el mensaje fue correcto setea una variable global
SerFlag = 0xFF; // SerFlag es declarado en forma global;
else
SerFlag = 0xFF;
SerInpStatus = 0x00;
break;
};


// en tu loop principal
while(1)
{
if(SerFlag)
{
SerFlag = 0x00;
// aca procesas la informacion que recibiste en p_RxBuff;
// y de acuerdo a esto envias la respuesta a la unidad Master
}
};

#8  
Mayckher
Ubicación: Venezuela
Registrado: 03 Abr 2008
Mensajes: 1
citar
saludos carontre esta subrutina tambien sirve para el Atmega169? que tendria que cambiar

#9  
Carontre
Ubicación: South Africa
Registrado: 09 Jun 2006
Mensajes: 6
citar
Hola Mayckher:

Basicamente esta rutina puede ser implementada en cualquier micro, lo que tenes que ver es el registro de la USART, o sea el nombre del registro para leer el dato de entrada. Lo demas es solo como tratas la informacion que llega al uP.

Saludos Caronte

#10  
hackrock
Ubicación: Argentina
Registrado: 06 Jun 2008
Mensajes: 2
citar
Carontre, estoy empezando en esto y la verdad que me gustaría saber si puedes darme algunos ejemplos en ASM acerca del tema.
¿cuando dices que el maestro interroga a los esclavos, haces referencia a utilizar TokenRing?
Disculpa mi ignorancia desde ya gracias.

 Responder



 Otros temas de interés 
No hay mensajes nuevos Circuito Serial RS-232 a USB
No hay mensajes nuevos Control PID con microcontroladores PIC
No hay mensajes nuevos Diagrama de adaptador USB a serial
No hay mensajes nuevos Programar el PIC16C765 por el puerto serial y el USB
No hay mensajes nuevos Interface IrDA para el puerto serial

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||
Contacto | Acerca de | Ayuda | Normas de la Comunidad | Privacidad | Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos