Comunicacion serial multiple
| #1 Comunicacion serial multiple |
| #2 Comunicacio Serial |
|
Carontre
|
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
|
los microcontroladores estan en placas separadas y es el PIC16F877A
|
|||||||||||
|
|
||||||||||||
| #4 |
|
Carontre
|
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
|
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
|
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: |
|||||||||||
|
|
||||||||||||
| #7 |
|
Carontre
|
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
|
saludos carontre esta subrutina tambien sirve para el Atmega169? que tendria que cambiar
|
|||||||||||
|
|
||||||||||||
| #9 |
|
Carontre
|
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
|
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. |
|||||||||||
|
|
||||||||||||
|
| Otros temas de interés | |
|---|---|
| Circuito Serial RS-232 a USB | |
| Control PID con microcontroladores PIC | |
| Diagrama de adaptador USB a serial | |
| Programar el PIC16C765 por el puerto serial y el USB | |
| 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
© Foros de Electrónica - Comunidad Internacional de Electrónicos

