Comunicacion entre Micropics

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Mensaje
Autor
Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Comunicacion entre Micropics

#11 Mensaje por fusion »

Pues me parece que lo que yo quiero no existe, pues el modbus al final tendría que funcionar con interrupciones periódicas, que es justo lo que quiero evitar.
Propongo un protocolo, consiste en una variación del can bus.
En cada micro hay 16 filtros y 16 words donde tanto el interfaz como el micro pueden acceder
Entonces en cada micro pone escribe cada filtro, por ejemplo en un coche, el filtro 0xAC00 es la dirección del acelerador, y cada vez que lea la dirección AC00 escribe ahí el dato.
El micro cuando necesite el dato del acelerador vá al registro y lo lee, sin importar cuando llegó el dato.
De este modo todos hablan y escuchan, aunque solo el micro conectado al acelerador escribirá el valor del mismo y todos los micros pueden recibir el dato: el circuito del control de tracción, el del inverter del motor eléctrico, el del kerst, etc.

En un momento dado puedo decirlo a un consorcio para proponer una cosa así.

saludos

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Comunicacion entre Micropics

#12 Mensaje por fusion »

heli escribió:
El escribir en un registro permite leer en él cuando quieras sin tener que mirar si han habido interrupciones
Tampoco entender.
No se mira si ha habido interrupciones sino todo lo contrario, las interrupciones interrumpen y se ejecuta el código correspondiente para la gestión del evento.
Lo contrario es el polling, donde sí es necesario estar mirando periódicamente los registros a ver si hay novedades..
En una unidad de tiempo real si es interrumpida deja de serlo, mi idea es que la unidad lea del registro el último valor conocido sin tener que saber cuando llegó el dato

Al final me he decantado por el I2C pues solo necesita 2 líneas y tierra mientras que spi necesita además una línea por dispositivo,

¿cual es la velocidad más comúnmente empleada en I2C? ¿se suele emplear 7 o 10 bits de dirección?

Avatar de Usuario
heli
Mensajes: 1946
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: Comunicacion entre Micropics

#13 Mensaje por heli »

En una unidad de tiempo real si es interrumpida deja de serlo
No, una unidad en tiempo real siempre será interrumpida. Sin interrupciones no funciona nada.
El procesamiento en tiempo real estricto no existe, siempre hay una demora. Lo importante es que esa demora sea mínima y predecible. Si las interrupciones no perturban el bucle principal más de lo establecido son aceptables.
mi idea es que la unidad lea del registro el último valor conocido sin tener que saber cuando llegó el dato
En determinados escenarios eso es una muy mala idea. Por ejemplo, si estas integrando datos o haciendo medias, en general si vas a procesarlos con una función que dependa del tiempo o del número de muestras, es imprescindible usar datos frescos. Si usas datos repetidos las salidas de esas funciones serán incorrectas. Lo más común es usar interrupciones o en su defecto usar un flag para marcar los datos nuevos que se borre tras usarlos, para no tratarlos dos veces.
En ausencia de datos nuevos a tiempo puede ser interesante parar el proceso... algo no esta funcionando como debiera.

El I2c funciona a 100Khz por defecto y a 400Khz en modo fast. Existen otros modos hasta 5Mhz, pero yo no los he usado nunca. 400Khz es razonable para la mayor parte de chips y backplanes. Es un bus lento pero más que suficiente para la mayoría de aplicaciones.
Si no vas a montar más de 112 esclavos I2c usa el estándar de 7 bits de dirección.
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Comunicacion entre Micropics

#14 Mensaje por fusion »

Una unidad de tiempo real es un sistema más rápido que el sistema a controlar o medir, si se le interrumpe deja de serlo, por eso windows no es un RTO, en mi caso aunque se caiga el mundo hay una interrupción cada milisegundo que toma todos los datos, programa las salidas del micro, que iena casi todas las 100 patas ocupadas y luego espera al siguiente milisegundo. Es el segundo sistema así que desarrollo y vá bien.
Anteriormente la unidad procesaba por separado 4 vídeos distintos de alta resolución en tiempo real, aunque se acabara el mundo cada 20 milisegundos procesaba la imagen y trasmitía el resultado, pero "hacía trampas" pues usaba la gráfica y sus 1900 procesadores paralelos :)

Los datos son analógicos tomados de forma independiente, ahora es una posición de un motor, dá igual si se ha usado 7 veces en el mismo ciclo del motor, solo calcula en función de la posición del rotor si hay que meterle a una fase 300 amperios o sacarlos o dejarla flotante.

Avatar de Usuario
heli
Mensajes: 1946
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: Comunicacion entre Micropics

#15 Mensaje por heli »

Vale
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Comunicacion entre Micropics

#16 Mensaje por fusion »

¿Para que es la máscara?. He de programar un slave I2C y no sé si en la máscara se debe poner la dirección del Master a quien debe responder, pues ya tiene si dirección propia.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados