Hola de nuevo
Sigo describiendo mi desarrollo de shDRO. En esta sección, describiré el algoritmo de sondeo del dispositivo y el formato de los comandos de la consola.
La primera parteFirmwareComo el número de canales / puertos a los que se pueden conectar los lectores es de 12, y cada canal se puede configurar teóricamente para interrumpir, se utilizan dos manejadores de interrupción PCINT (para los puertos D y C). Esto implica una limitación en la conexión: todas las salidas del dispositivo que están configuradas para entrada deben estar conectadas a los canales de un grupo. Si el canal está configurado para salida, entonces para el dispositivo actual, no importa a qué grupo pertenece. Grupos: grupo1 (canales 0-5), grupo2 (canales 6-11).
Se usan dos memorias intermedias de anillo, de 256 bytes cada una, para los manejadores de interrupciones.
El código del controlador de interrupciones es:
buf[pos] = DATA_N; pos++;
Donde DATA_N es uno de los puertos: PIND, PINC.
El procesamiento de datos es el siguiente:
- se produce una interrupción, se escribe un nuevo valor de puerto en el búfer;
- el búfer se sondea periódicamente y de él se leen los datos que aparecieron después de la última encuesta (la posición del búfer de la última encuesta se almacena en la estructura del dispositivo);
- En el proceso de lectura de nuevos datos, los niveles de interrupción establecidos para los canales se comparan con los datos del puerto actual. Si el nivel de interrupción no coincide, los datos se ignoran.
- comprueba que se hayan aceptado todos los datos para el procesamiento (por ejemplo, se deben recibir 24 bits para el protocolo BIN6);
- los datos se procesan de forma "legible" y los datos procesados se muestran en la pantalla;
- entonces el proceso se repite;
Para implementar la lógica anterior, se implementan los siguientes módulos lógicos en el firmware:
- Dispositivo: el módulo contiene toda la información sobre un dispositivo conectado. Para cada dispositivo conectado, se crea dicho módulo;
- Protocolo: el módulo contiene información sobre el protocolo y cómo procesar las señales que llegan a los puertos de acuerdo con este protocolo de intercambio;
- Función: el módulo contiene información sobre cómo convertir los datos recibidos del módulo Protocolo. Por ejemplo, hay un módulo de protocolo que admite una señal de cuadratura, pero los dispositivos que emiten una señal de cuadratura pueden ser diferentes: puede ser una regla óptica o un sensor de velocidad. Es decir en un caso, los datos deben convertirse a mm o pulgadas, y en el otro rpm. Este módulo solo hace esto;
- Led: un módulo que muestra información sobre indicadores. shDRO contiene 4 indicadores, y para cada dispositivo se configura el indicador de visualización deseado;
Como resultado, para conectar el dispositivo, en la consola necesita:
- configurar los canales deseados;
- agregar dispositivo;
- para protocolo de conjunto de dispositivos, función y led;
- agregar / vincular los canales necesarios al dispositivo;
ConsolaPor el momento, verifiqué el funcionamiento de la consola en el monitor de puerto ArduinoIDE y en la Terminal v.1.9b. Para terminales del tipo Putty, debe implementar el modo de eco (no implementado).
Formato de comando:
<> </1> <_1> </N> <_N>
El número máximo de argumentos por línea es 5.
El caso no importa; el análisis del comando se produce después de que la cadena se convierte en minúscula (excepción: el valor del argumento entre comillas).
Todos los comandos se ejecutan solo después de emitir el comando de configuración (una excepción es el comando de Ayuda, que muestra una lista de todos los comandos disponibles).
Todos los comandos se describen en el archivo adjunto, así como en la primera versión del firmware en formato hexadecimal.
shDRO.zip (.hex + descripción de comandos)Fuentes de ShDROContinuará
Gracias
PS
Los comandos relacionados con la configuración de dispositivos y canales se pueden enviar al arduino sin correas.
PS1
Solicitud a quienes viven en Kazan.
Si tienes:
- pinzas digitales que funcionan según los protocolos: 24BIT, BCD7;
- iGaging reglas digitales (protocolo 21BIT);
entonces, ¿podrías darme un par de días para escribir y depurar protocolos para ellos?
¡Prometo mantenerlos sanos y salvos!
Pero esto es en la tarde. Gracias de antemano.
PS2
Olvidé agregar dos comandos al archivo de descripción del comando:
- guardar: guarda la configuración de canales y dispositivos en la EEPROM;
- cargar: descarga la configuración de canales y dispositivos desde la EEPROM (la carga se realiza automáticamente durante la inicialización);
No volveré a cargar el archivo, solo tenlo en cuenta. Pero "ayuda" muestra estos comandos.