loading...

22 de mayo de 2012

LFRD002: inalámbrico de lectura automática del medidor de diseño de referencia

REFERENCIA DE DISEÑO 5391 INCLUYE:  Probado Circuito  esquemático  lista de materiales  Junta Disponible  Descripción  de datos de prueba  de software  de diseño

LFRD002: inalámbrico de lectura automática del medidor de diseño de referencia

Por: Martin Stöhr, miembro principal del personal técnico, Aplicaciones
04 de mayo 2012

 
Más Información 
- 
Wireless Home
- Notas de aplicación y tutoriales
- EV Kit de software
- Soporte Técnico
 
Resumen: Este diseño de referencia proporciona una plataforma de demostración completa para el uso de radiofrecuencia industrial / científico / médico (ISM-RF) de los productos en una lectura del medidor inalámbrica automática (AMR) de la aplicación. Este documento incluye el hardware, el firmware y los requisitos del sistema de estructura para la implementación de un diseño de AMR. 

Haga clic aquí para obtener una visión general de los componentes inalámbricos utilizados en un transceptor de radio típica.
Haga clic aquí para obtener una visión general de los componentes inalámbricos utilizados en un transceptor de radio típica.

Descripción General

El MAX7032 transceptor de diseño de referencia (DR) es una plataforma de auto-evaluación para el ejercicio del dispositivo como un inalámbrico de lectura automática de medidores (AMR), sistema de demostración. Con el uso de la Maxim USB-a-JTAG tabla (MAXQJTAG-USB), el MAXQ610 tanto en el metro esclavo (MTR) y el lector maestro (RDR) tablero puede ser programado por el usuario final.
La junta metros permite la interacción humana básica a través de un solo momentánea del interruptor de entrada y un LED de retroalimentación visual. El EMP está diseñado para ser compacto, ofreciendo un tablero de transmisor-receptor autónomo con una radio, un microcontrolador, y varios "ports" para conectar las entradas de varios metros en el sistema. Dos diseños separados se proporcionan: una con una incorporada en placa de circuito impreso ( PCBantena), y el otro con una huella pequeña antena-opción de montaje. La entrada al sistema MTR se puede configurar con hasta seis puertos, y las interfaces de entrada principal con un "pulso" o contacto seco (caña) metros de salida. Esta placa puede ser operado desde cualquier potencia 3V fuente (1.7V a 3.6V para el MAXQ610, 2.1V a 3.6V para el MAX7032).
La junta lector tiene siete teclas de menú para la entrada del usuario, un botón de reinicio, un píxel de 102 x 64 píxeles Pantalla LCD con retroiluminación LED multicolor para las interacciones de menú, además de un indicador de recepción de señal (RSI) de LED. La forma de la unidad de lectura (RDR) encaja dentro de una carcasa de la Serie casilla 55, y tiene tanto un borde conectado a la antena de montaje y una antena integrada en el PCB traza.
Ambos sistemas están programados con el firmware operativo para demostrar una simple inalámbrica AMR metros (esclavo) / sistema de lectura (maestro). Archivos Gerber están disponibles para simples de cortar y pegar los diseños de las secciones de radio o la plena aplicación.

Características

  • Probado placa de circuito impreso (PCB) de diseño
  • Componentes probada la lista
  • Transmisor-receptor preprogramado (TRX) par de las capacidades de demostración rápida
  • Gratis MaxQ ® herramientas de programación disponibles para microcontroladores de operación flexible

De inicio rápido

  1. Tire de los tres tableros (dos tableros de MTR y la junta RDR) fuera de la caja e instalar las baterías.
  2. Conecte la antena de RDR.
  3. Navegar por el menú del sistema RDR MENÚ PRINCIPAL AMR MENÚ INICIO COMM
El RDR se comunicará con cada una de las unidades de la revisión intermedia a su vez, y devolverá el valor de 00 después de cada comunicación.

Descripción del medidor y lector de la Junta

Despobladas Rev C tarjetas
Despobladas Rev C tarjetas

Factor de forma

El LFRD002 fue diseñado como una plataforma de demostración para el transceptor MAX7032 y el microcontrolador MAXQ610. Este diseño de referencia se dirige a un bajo costo, de lista de materiales de baja (BOM) cuenta, enlace de RF, que muestra cómo un diseño de bajo costo, puede trabajar en una variedad de entornos de medición. Tanto el MTR y el RDR sistemas incorporan un radio de CI MAX7032 acoplado con un microcontrolador MAXQ610 que viene preprogramado para funcionar como un sistema de demostración inalámbrica AMR.
Ambas placas de permitir al usuario final para programar el MAXQ610 a través de una interfaz JTAG. En su forma más pequeña, la junta de MTR es 3cm x 3cm, mientras que el tablero mide en el RDR en el 11.5cm x 6,1 cm.
Poblados Rev C tarjetas
Poblados Rev C tarjetas

E / S y Conmutadores

Alimentación a la placa de MTR es típicamente de 3,6 V suministrada por una de litio (Li) de la batería, pero puede ser alimentado a través de la interfaz JTAG también. La junta RDR es típicamente accionado por un par de pilas AA, y también tiene la disposición de alimentación de JTAG.
Interruptor de RDR Tabla de funciones
Cambiar Posición Función Conexión
SW-PWR Momentáneo "Reset" Pin 11, P1.2 del μC
(Arriba) Momentáneo "^" O "Up" Pines 12 y 23 de MAX7359
(Izquierda) Momentáneo "<" O "izquierda" Pines 13 y 24 de MAX7359
ENTER Momentáneo "Enter" Pines 12 y 24 de MAX7359
(Derecha) Momentáneo ">" O "Derecha" Pines 11 y 24 de MAX7359
(Abajo) Momentáneo "V" o "Abajo" Los pines 1 y 12 de MAX7359
(Esc) Momentáneo "Escape" Los pines 1 y 13 de la MAX7359
(TX) Momentáneo "Transmitir" Los pines 1 y 11 de MAX7359
MTR interruptor Tabla de Funciones
Cambiar Posición Función Conexión μC
SW-A Momentáneo Usuario TX Pin 11, P1.2
RDR y el MTR de E / S Conectores de borde
Señal Descripción Conexión μC
JTAG-1 TCK-reloj Pin 24, P2.4
JTAG-2 GND-tierra  
JTAG-3 TDO-datos fuera Pin 27, P2.7
JTAG-4 VBAT-fuente de alimentación externa  
JTAG-5 TMS-maestro de selección Pin 26, P2.6
JTAG-6 NRST-reset Pin 28, Reset
JTAG-7 N / A  
JTAG-8 N / A  
JTAG-9 TDI datos en Terminal 25, P2.5
JTAG-10 GND-tierra  
MTR LED Tabla de Indicadores
LED Función Conexión μC
MRSI Tx / recepción de señal de indicación / latidos del corazón Pin 7, P0.6
RDR Cuadro de indicadores LED
LED Función Conexión μC
RSSI Tx / Indicador de recepción de señal Pin 7, P0.6
LEDBL1 Retroiluminación de color rojo Pin 21, P1.7
LEDBL2 Luz de fondo verde Pin 20, P1.6

Estructura de datos Frame

La estructura básica de la trama de datos es modulada ASK, Manchester codificados, 4.8kbps (0.2083ms/bit), y tiene 144 bits por trama (18 bytes o 9, las palabras de 2 bytes), los 30ms por cuadro, una pausa de 70 ms entre marcos, y 3 transmisiones marco por ráfaga. Para obtener información sobre la codificación Manchester , consulte la nota de aplicación 3435, " La codificación Manchester de datos para las comunicaciones de radio . "
Esta estructura es directamente compatible con otros formatos de referencia de diseño de comunicación, y las utilidades se proporcionan en el sistema de RDR para trabajar directamente con los diseños de referencia de otros. Apéndice I describe, además, cada sección de la entrada remota sin llave (RKE) estructura de la trama.
Estructura de trama
Preámbulo Identificación Función Datos Sincronizar Bat Sig Chk Sum
FF FF FF FD 02 00 00 00 00 01 00 00 43 21 11 22 01 68
La estructura de este marco es arbitrario, pero es un ejemplo de la información que puede estar contenida en cualquier marco de relación con los muchos industriales, científicas y médicas (ICM) de RF.
Identificación Estructura
Identificación
02 00 00 00
Este diseño ha sido programado para utilizar un 0x02 00 00 00 código de identificación en la RDR, con el último byte que se ajustan entre los sistemas de MTR (por lo general 0x01 y 0x02). Esto permite que el RDR para comunicarse con cada una de las dos placas de MTR separado por tratarlas una a la vez.
Función de la estructura
Función
FF 00
Este diseño de referencia utiliza el campo de la función de comunicar "grupo" e "individuo" funciones a los exámenes de mitad de distintas dentro de la recepción del sistema de RDR. De nuevo, esta estructura puede ser modificado para adaptarse a los propósitos del usuario. En esta aplicación, el primer byte del campo de función se utiliza para comandos de alto nivel, tales como ATTN y CERRAR. El segundo byte del campo de la función se utiliza para diversas operaciones de estrechar la mano-o de mando. La Tabla 1 describe las diversas funciones y sus valores hexadecimales como se ve en la pantalla y en el firmware:
Tabla 1. Funciones y valores hexadecimales en el firmware LFRD002
Función Marco Valueh Fuente
Func [0] Func [1]
ATN FF XX RDR
REQ 00 8P RDR
DAT 00 1P MTR
SET 00 1P RDR
CLR 00 2P RDR
ACK 00 4P RDR
CERRAR AA XX RDR
ECHO 00 00 Nodo
Rojo (A) 00 01 RKE TX
Green (B) 00 02 RKE TX
Azul (C) 00 04 RKE TX
Amber (D) 00 08 RKE TX
P = Dirigido número de puerto, X = No me importa, NN = índice de la lista de nodos
Estos valores son una definición arbitraria de la estructura del campo Func, que siempre pueden ser modificados por el usuario.
Estructura de datos
Datos
00 00
La sección de datos de este marco se proporciona para la transmisión de información tales como una temperatura , presión, o la medición de volumen. En este diseño, el campo de datos concuerda salidas de pulsos de un contador de agua. Una vez más, el uso de este valor de datos es arbitraria y puede ser modificado por el usuario.

Protocolo de comunicación

La estructura básica define la interacción de la RDR (maestra) del sistema y cualquier número de MTR (esclavo) sistemas. (Véase el Apéndice V ).
Para ahorrar energía, los sistemas de MTR están configurados para funcionar con una predefinida OFF / ON o dormir / escuchar (S / L) del ciclo de trabajo. En este sistema de demostración, después de que se aplica a la placa del MTR, reconoce de inicio con cuatro destellos de los LED, entonces entra en un ciclo de sleep/0.5s 3.0S escuchar. Durante el ciclo de encendido, la radio se configura para el modo de Rx, y el sistema estará atento a cualquier otra en frecuencia, ASK emisiones. Si un marco ATN válida es recibida, el sistema MTR suspenderá su S / L por ciclo y entrar en un estado completo de raíz.
Toda la comunicación se inicia con una transmisión desde el sistema de RDR. Puesto que los exámenes de mitad son presumiblemente en un 3.0s/0.5s S / L por ciclo, el RDR inicia con una transmisión de 5 años de la atención (ATN) marcos para despertar todos los exámenes de mitad de su alcance. El marco de ATN se define como No Care valores para todos los campos, a excepción de la suma de comprobación y el primer byte de la estructura de funciones, que se establece en 0xff00.
Después de emitir la señal de ATN, el RDR se comunicará con todos los exámenes de mitad de lista en el sistema (consulte la lista de MTR en el menú RDR sección). En este caso, dos exámenes se deben estar predefinidas en el sistema, con un puerto configurado para leer el MTR ID 01, y dos puertos configurado para leer el MTR ID 02. El puerto 0 en el MTR está configurado para actuar como el puerto de conteo de pulsos y MTR puerto 1 tiene un valor prefijado de 0x2222. La comunicación puede ocurrir como un proceso por lotes (todos los exámenes de mitad de la lista se pondrá en contacto automáticamente) o como un proceso secuenciado por el usuario (el usuario presiona la tecla ENTER para iniciar un REQ / Intercambio de datos con cada entrada de MTR en la lista de MTR de forma individual ).
Figura 1.  Un MTR / RDR comunicación secuencia.
Figura 1. Un MTR / RDR comunicación secuencia.
Una secuencia de comunicación completo ( Figura 1 ) toma la forma de la RDR el envío de una petición (REQ) el marco estallido seguido de una breve pausa, y el cambio de RDR al modo de RX.El MTR con el ID correspondiente a decodificar el marco REQ, preparar los datos, y cambiar al modo TX. El MTR transmite datos (DAT) en el marco de RDR, luego vuelve al modo de RX. El RDR recibe la trama DAT, y luego cambia al modo de TX y envía un reconocimiento (ACK) el marco de la revisión intermedia. En este punto, el sistema puede transmitir RDR otro marco REQ (a partir de otra secuencia de comunicación, posiblemente frente a un puerto diferente en el MTR) o se puede cerrar la sesión de comunicación con que MTR. Después de que todos los puertos de medición de interés han sido leídos desde ese MTR, la sesión con ese identificador termina con el envío de un cierre (CLOSE) el marco de la revisión intermedia. Después de una revisión intermedia ha recibido el marco de cerca, se volverá al ciclo de S / L hasta que se recibe una trama nueva ATN.

Manejo de tramas perdidas y errores

Después de la RDR recibe la información solicitada de la orientada MTR, devuelve una trama ACK. Dado que este cambio se compone de tres comandos funcionales, ambos extremos de la comunicación puede ser confirmada. Si la trama REQ no se ha recibido correctamente, el RDR debe reconocer que cuando no recibe una respuesta de marco DAT, si el RDR no recibieron el marco DAT, la revisión intermedia no se ve una respuesta trama ACK. Este proceso permite la retransmisión de la trama REQ por el RDR (si no se recibe marco DAT) y del mismo modo, el marco DAT puede ser retransmitido por el MTR (si no hay trama ACK se recibe).
  • Cabe suponer que el RDR tiene el potencial para una fuerte señal TX que el MTR.
  • Si un MTR recibe una señal de ATN, pero no otro tipo de comunicación (a menos de 30 años), que vuelve a su sueño / escuchar ciclo.
  • Si un RDR no recibe el marco DAT (después de 1s), se repetirá un marco REQ (dos veces más). Si el marco de DAT todavía no se ha recibido, el MTR se debe omitir. En este caso, el MTR se marcará como NO-COMM.
  • Si un MTR envía una trama de DAT, pero no recibe una trama ACK (a menos de 1s), se repetirá el marco DAT (dos veces más). En este caso, supongamos que la sesión se cerró y volver a su sueño / escuchar ciclo.
Este proceso se asegurará un número mínimo de reintentos de comunicación. Si el marco de tres de rotura no es suficiente y los múltiples intentos no también, ambas unidades volverán a su estado predeterminado (dormir / escuchar el MTR, y NO COMM para el RDR). Este proceso marco de perdida no se está aplicando actualmente.

RDR Menú

La unidad de RDR opera con una estructura de interfaz de usuario básica con un sencillo sistema de menús y unos pocos botones de navegación. Para navegar a través del sistema de menús, hay siete claves: cuatro flechas direccionales para desplazarse hacia arriba (^) y hacia abajo (v), derecha (<) e izquierda (>), la tecla ENTER, la tecla ESC, y una clave de Texas. La interfaz de menú indica la línea seleccionable con un carácter ">" (cursor) se encuentra en la columna más a la izquierda de la pantalla.

Menú Principal

Menú PrincipalDesde el menú principal, el usuario puede navegar a las tres principales funciones de la unidad de RDR: las funciones de AMR, las funciones RKE (que puede funcionar en combinación con un LFRD001), y las funciones de utilidad.

AMR Menú

AMR MenúEl menú principal de interés para el sistema LFRD002 será el menú de la RAM. Desde esta pantalla, el usuario puede revisar y editar la lista de MTR, cambiar el modo de funcionamiento de las sesiones de AMR, iniciar una sesión de comunicación AMR, o revisar el último conjunto de datos recibidos de los exámenes de mitad.

MTR Menú

MTR MenúEn el menú de AMR, el usuario puede navegar a la lista de exámenes de mitad para ser reparado durante las sesiones de comunicación. Esta pantalla inicial presenta un campo que muestra el Índice de la Lista de MTR (la entrada de la lista que se está editando), los campos de dicha entrada, y una muestra de los próximos dos exámenes de mitad de la lista (que se muestra en el cuadro). Los campos disponibles para la edición consistirá en la identificación de dirección o revisión intermedia de la unidad para ser contactado, el puerto de MTR que se va a consultar, y tres banderas de las acciones a realizar. Estas acciones son una bandera de X para la inclusión (o de ejecución) que se MTR en la sesión de AMR, una bandera C para borrar los datos almacenados en la revisión intermedia, y una bandera S para ajustar los datos almacenados en el MTR. La "C" y "S" la configuración de la bandera están disponibles en el menú, pero las acciones de juego claras y no se aplican en la actualidad.
MTR MenúPara seleccionar el campo para la edición, primero desplazarse por la lista hacia arriba o hacia abajo hasta que el índice de la deseada entrada de MTR se muestra al lado del MTR EDIT: del sistema. Los valores para que la entrada se mostrará en el área de edición. Elija el campo a editar utilizando las teclas de flecha izquierda y derecha para seleccionar el elemento (ID, Puerto, X, C, o las acciones de). Una vez seleccionado, presione ENTRAR. Cada campo puede ser ajustado por el desplazamiento a través de los valores con las teclas de flecha del arriba y abajo. El ID de MTR se edita un carácter a la vez usando las teclas de flecha izquierda y derecha para seleccionar el dígito y el arriba o hacia abajo las teclas de flecha para cambiar el valor.Después de ajustar el valor de cualquiera de los campos, presione ENTRAR para aceptar los cambios. Continúa desplazándose a través de los otros campos o salir del menú MTR pulsando la tecla ESC. El campo de identificación de 4 bytes se edita un carácter a la vez con un rango de 0 a F en cada personaje. El puerto se puede ajustar de 0 a 5. Los campos de bandera se establece en 0 para OFF, X, C o S para ON.

RKE Menú

RKE MenúEste menú ofrece una serie de funciones orientadas al usuario y es directamente compatible con las funciones de protocolo RKE. El modo se puede utilizar para cambiar la unidad entre el RDR de transmisión (TX) y recepción (RX) los modos de transceptor MAX7032. El par TX / RX función permite el RDR para actuar como un transmisor o un RKE RKE utilizando la trama de datos AKO. Una vez que la unidad RDR está emparejado con otra unidad de RDR, parpadeará de diferentes colores antecedentes en la pantalla, sobre la base de la función de transmisión. Este menú también muestra el identificador y la función de cualquier emisora ​​que está transmitiendo el marco definido ASK. Este menú puede ser útil en la depuración de los transmisores que usan el RKE o protocolo AMR.

Utilidad de Menú

Utilidad de MenúEl menú de utilidades disponibles en el sistema RDR permite el ajuste de base y la interacción del usuario con los valores del microcontrolador internos. Este menú muestra el color de fondo por defecto (0 = ninguno, 1 = rojo, 2 = verde (por defecto), y 3 = ámbar), el "índice" del intento de la última comunicación con una revisión intermedia en la LISTA DE MTR, el ajuste del tiempo de sueño (ajustable en incrementos de 30 años de edad con 120s como por defecto), y el ID de la unidad de RDR sí mismo.

Estructura del firmware

MTR

La operación funcional del MTR y de los sistemas de RDR es muy similar. El MAXQ610 proporciona un número de entradas a la MAX7032, como SCLK , DIO, y CS para el SPI y la interfaz de datos, habilite, TR, y el RSSI de los diversos controles de RF otros. El propósito de la unidad de MTR es doble: primero es para el microcontrolador para actuar como un administrador y recoger datos desde el sistema de metro; segundo es el control de la radio y comunicar los datos a petición. Una entrada de usuario está disponible para forzar la unidad de MTR para transmitir una trama de datos de base. El MAXQ610 y MAX7032 la están configurados para estar en un "modo de parada", a menos uno de los tres interrupciones ocurren: un comando de activación del temporizador, una prensa interruptor del usuario, o un borde de entrada del puerto metros. Los dos últimos puntos se producirá una interrupción externa, que se activará, mientras que el temporizador de activación genera una interrupción interna.
La interrupción es atendida por el microcontrolador, el cual decodifica la fuente de la interrupción, luego toma la acción apropiada. Un evento de prensa función hará que el microcontrolador para ir directamente al modo de transmisión y envío de un marco de identificación. Un flanco positivo en el puerto metros se acumula en un contador y se almacena en la memoria hasta que la información sea solicitada. Un comando de activación es el más complejo de los tres procesos e involucra a contadores de tiempo, las decisiones de ramificación, y posiblemente los dos modos (RX y TX) para el MAX7032. Véase el Apéndice II para el código del firmware MTR.
Figura 2.  MTR funcional operación.
Figura 2. MTR funcional operación.
Figura 3.  MTR / RDR subrutinas
Figura 3.  MTR / RDR subrutinas
Figura 3. MTR / RDR subrutinas
Figura 4.  MTR / RDR Tx subrutina.
Figura 4. MTR / RDR Tx subrutina.

RDR

Como se ha señalado, la operación funcional de los sistemas de RDR y MTR son muy similares. El microcontrolador MAXQ610 tiene la misma interfaz para el transceptor MAX7032 para simplificar y compartir el código del firmware entre las dos unidades. En la unidad de RDR, hay una gran cantidad de funcionalidad de interfaz de usuario, además de los aspectos operativos de la radio. La unidad de RDR actúa como maestro en el proceso de comunicación, iniciando la sesión de AMR, solicitando los marcos de cada unidad de MTR, a su vez, y la liberación de las unidades de la revisión intermedia de regreso a su S / L por ciclo.
Interfaz humana se proporciona a través de la Asamblea electrónico DOGS102-6 píxeles de la pantalla , junto con la iluminación de fondo, un LED de RSI, y las teclas de menú. La pantalla funciona con una interfaz SPI y por lo tanto comparte la SCLK y líneas DIO con el MAX7032 y MAX7359 del. El controlador opera con una clave de I ² C interfaz y comparte el reloj y las líneas de datos de los dispositivos de SPI, así como proporcionar una señal de interrupción al microcontrolador.
Las interrupciones son atendidas por primera determinación de la fuente de la interrupción entonces operar con esa fuente apropiada. Un evento de pulsación de una tecla hará que el microcontrolador a "estallar" la pila MAX7359, uno se presiona el pulsador va a esperar por alrededor de 4 años y restablecer el sistema de RDR. Una transmisión entrante se decodifica como sea necesario, si el RDR está configurado en modo RX, ya sea para una sesión de AMR o el uso de depuración RKE. Transmisiones pueden ser enviadas desde el sistema de RDR si el modo de RKE se establece en TX y el usuario presiona la tecla TX. Véase el Apéndice III para el código del firmware RDR.

Microcontrolador Programación SW

El firmware de este diseño de referencia se desarrolló en el IAR Embedded Workbench ®. Una versión completa de este software (4k KickStart Edition) se puede obtener en www.iar.com/ . El IAR EW trabaja en conjunto con la interfaz JTAG MAXQUSB-y el adaptador de programación, para flashear el MAXQ610 tanto en el TX y RX juntas.

Instalación

Por favor, consulte la documentación de EW IAR para la instalación y la orientación. El firmware de este proyectado se ha desarrollado con MaxQ plug-in: IAR EWMAXQ2.20I.

Operación

Asegúrese de tener el puerto USB configurado correctamente en el IAR EW: Proyecto  Opciones ... Opciones generales-depurador JTAG- . El puerto COM se debe establecer para que coincida con el "USB Serial Port (COM XX)", como se indica en el Administrador de dispositivos de Windows ®.
Para un mejor rendimiento durante la programación y depuración de la MAXQ610, se sugiere ajustar la configuración avanzada para el puerto COM ( Administrador de dispositivos  USB Serial Port (COM XX) Propiedades de  Configuración de puerto  avanzada ... ). Los valores recomendados para recibir y transmitir tamaños de buffer de 512 bytes y un temporizador de latencia recomendada de 4 ms debe proporcionar un funcionamiento óptimo.
El traductor USBJTAG (MAXQJTAG-USB) utiliza una placa FTDI UART y un MAXQ2000 para convertir el puerto serie del PC a un puerto JTAG. El firmware de este Foro se debe comprobar la versión más reciente. Para determinar la revisión de firmware, conecte la tarjeta USBJTAG a un puerto USB, abra el Kit de herramientas de microcontrolador (MTK2) software, seleccione la terminal no inteligente en la ventana Seleccionar dispositivo durante el arranque ( haga clic en Aceptar ), seleccione Opciones de  Configuración de puerto serie y seleccione el COM adecuado puerto y elegir la velocidad de 115.200 (haga clic en Aceptar ), elegir destino  COMXX Abrir ... ; pulse la tecla Enter unas cuantas veces, q tipo y pulse Enter. El terminal debe leer de nuevo la revisión de firmware como "83".
Un adaptador de interfaz JTAG (AIJ) debe ser utilizado para programar estos sistemas debido a los diferentes niveles de suministro. El puerto USB proporciona una fuente de alimentación de 5V que debe ser regulada hasta el nivel necesario de 3,3 V en las tablas RD002. Una de estas placas AIJ está incluido en el kit LFRD002.
El conector de borde debe ser orientado con JTAG el pin 1 en la parte superior de las placas de la revisión intermedia o de RDR. El sistema puede ser programado con las pilas en su lugar o sin las baterías instaladas (3,3 regulada de alimentación USB se utiliza). Dentro del código en C, hay algunas líneas que pueden ser comentarios, para ayudarle con la depuración de los cambios de firmware.

El programa de instalación y uso operacional

AMR Funcionalidad

Revisión / Edición de la lista de MTR

El RDR se ha configurado para comunicarse con la cada una de las dos unidades de MTR incluidos en el kit. Estas entradas de comunicación puede ser crítica o ajustarse como se describe en el anterior menú MTR sección. Bajo el menú de AMR , seleccione la lista de MTR para revisar o editar las entradas. Las entradas predeterminadas se enumeran de la siguiente manera:
EDIT MTR:
1 02,000,001.0 X00
2 02000002.0 X00
3 02,000,002.1 X00
4 02000003.0 000
... ...

La primera entrada en esta lista ( MTR EDIT: 1 ) se refiere a la primera unidad de MTR (con ID 02000001 ), Puerto 0 ( 0,0 ), y la acción a tomar es incluir esta unidad en el proceso de comunicación (indicado por el X de campo). La segunda entrada se ocupa de la revisión intermedia de la segunda unidad (con ID "02000002"), puerto 0 ("0.0"), y otra vez, esta unidad se incluye en la lista de las comunicaciones de la. ("X" de entrada) El tercer punto se indica la segunda unidad de MTR, esta vez un puerto se dirige. Por último, la cuarta entrada se refiere a una unidad de MTR indefinida (ID ... 03), y se establece en no tomar ninguna acción en esa unidad (indicado por el "0" en el campo de ejecución).

La comunicación con los medidores


Para comunicarse efectivamente con los exámenes de mitad de la lista, el usuario debe iniciar el proceso de comunicación. Antes de iniciar la comunicación, el usuario puede elegir entre una sesión de comunicación totalmente automatizado (referido como un proceso por lotes) o un parcial controlada por el usuario sesión (llamado un proceso secuencial). Estos dos parámetros son controlados por el modo de AMR aparece en el menú AMR. Para cambiar entre las dos opciones, sólo tiene que seleccionar la línea MODO AMR y presione ENTRAR.

RKE Funcionalidad


Vinculación del MTR y Unidades de RDR


En este diseño de referencia, cada una de las unidades de MTR ha sido preprogramado con un ID de semi-exclusiva (0x02000001 y 0x02000002). Este valor 4-byte ha sido Brilló en el MAXQ610 como parte del proceso de codificación FW y se pueden cambiar fácilmente por el usuario mediante la reprogramación del microcontrolador. De manera similar, la unidad RDR tiene un ID preprogramado (0x02000000) que puede ser cambiado por el usuario con una edición FW. Este sistema no requiere ningún tipo de "emparejamiento" en el sentido tradicional, porque el uso de este protocolo de comunicación sólo se requiere la unidad de RDR saber el ID de la unidad de MTR de interés. Otros MTR se puede añadir a la Lista de MTR por el usuario y se incluyen en el período de la RAM.

Los elementos del menú RKE no proporcionan una función de emparejamiento RKE estilo. Por lo tanto, si el RDR se va a utilizar para fines de depuración o para decodificar la información de una unidad de MTR o RDR otro, la unidad puede ser emparejado con cualquier unidad de TX al seleccionar el "par TX / RX" en el menú RKE. La unidad de RDR va a esperar hasta una transmisión válida se recibe y luego se vinculará con el ID de la unidad, mostrando colores únicos de fondo para el llavero diferentes interruptores presionado.

Para vincular el sistema de RDR en el sistema transmisor, el usuario simplemente tiene que establecer la "pareja de TX / RX" en el menú RKE y enviar una señal válida con el transmisor para la asociación. Este proceso debe ser repetido cada vez que se cambian las pilas en el sistema de RDR.



  1. Seleccione la opción "par TX / RX" en el menú RKE.

  2. Pulse cualquier botón en el sistema de TX (MTR o RDR) para la asociación.

  3. El sistema de RDR debe pasar los colores de fondo cuando una trama válida se recibe.

  4. Los dos sistemas están sincronizados, prueba el vínculo con cualquier botón en el TX

Serie


El rango previsto en un piso de área al aire libre sin obstrucciones se basa en los siguientes supuestos.

f 0 = 433.92 
P PA = +10 dBm 
G T =-18dBi (antena de cuadro típico pequeño-18dBi) 
h TX = 1m 
h RX = 1 m 
G R = 4.14dBi (ideal 1/4λ antena = 5.14dBi) 
L ConR1 = - 0.57dB 
Pérdida en el trayecto varía como R -4 debido a la interferencia de rebote baja 
sensibilidad RX-fijado en 114dBm

La estimación calculada de "campo abierto" rango es de aproximadamente 370 millones (ver nota de aplicación 5142, " presupuesto de Radio Enlace-Los cálculos de ISM-Productos RF "para más información).

Pruebas de alcance en interiores dio lugar a una distancia constante utilizable de 30 metros con una altura reducida Linx antena conectada a la RDR, 35m se logró con una antena de 1/4λ sobre la revisión intermedia, con la unidad MTR colocado ~ 2 m por encima del suelo (cubo de la pared) , 30m También se alcanzó en un entorno de laboratorio con la revisión intermedia situada 1 m por encima del suelo (parte superior del banco).

Análisis de uso de la batería


Microcontroladores


[1.8V núcleo nominal de tensión , 1.0V de RAM (mínimo) de retención de datos / Power-on-reset tensión] 
El microcontrolador MAXQ610 quema una 12μA máximo (con el poder-no apagado) durante el modo "STOP". 
El microcontrolador MAXQ610 (con 12MHz SYSCLK ) se quema un máximo de 5.1mA durante el funcionamiento normal.

TRX


[2.1V a 3.6V operación] 
El transceptor MAX7032 se quema un máximo 8.8μA (3V, 85 ° C) durante el modo de sueño. 
El transceptor MAX7032 durante la operación TX quema una 12.4mA típico a 434MHz (max 20.4mA) con "always on" ;. cuando se ejecuta en el ciclo de trabajo del 50% a 434 MHz, se quema una 8.4mA típico (ASK) y un máximo de 13.6mA 
El transceptor MAX7032 normalmente se quema 6.4mA a 434MHz, ASK (3V, 85 ° C) con un máximo de 8,3 mA durante la operación de RX.

Controlador Principal


[1.62V a 3.6V operación] 
El controlador MAX7359 llave de quema una 5μA máxima durante el modo de reposo. 
El controlador MAX7359 llave de quema 25μA típicos, 60μA máximo, con una tecla pulsada al controlador quema una 45μA típica durante el funcionamiento normal.

MTR


LED: configurado con 75 Ohm resistencias limitadoras, de color amarillo (V F = 2.2), 10.7mA nominales de corriente.

El sistema de MTR promedio actual del sueño se midió a ser 233μA. Si se deja en modo de reposo siempre, con una batería de 750mAh, CR2, la unidad MTR duraría alrededor de 134 días. Para el sueño / escuchar ciclo de trabajo de 14,3% (3.0S sleep/0.5s escuchar), con el microcontrolador y el ciclismo MAX7032, la corriente medida promedio de un máximo de 11.6mA. Uso de la pila CR2, la típica vida de MTR (sin ningún tipo de comunicación TX) sería de aproximadamente 403hrs [11.6mA × 0,143 × 0,857 + 0.233mA = 1.859mA] o alrededor de 16.8 días.

El máximo de corriente media durante las comunicaciones (TX / RX con la unidad de RDR) fue de aproximadamente 15.62mA. Si una sesión de comunicación 10s se llevó a cabo una vez al día, la vida total de la batería CR2 se reduciría en un importe de 0.73mA/day-a insignificante de tiempo.

Este sistema no ha sido optimizado para baja corriente de "parada" de modo.

RDR


Además de la configuración de radio igual al anterior, la unidad de RDR también tiene el MAX7359 utilizarse para las entradas clave y los perros interfaz serial de pantalla con iluminación de fondo.A modo de espera se lleva a cabo, pero el consumo de corriente de la unidad de RDR no se ha medido bajo condiciones variables.

Este sistema aún no ha sido optimizado para mediados de baja corriente de "standby" o de baja intensidad "STOP".

Detalles de hardware


Especificaciones del transceptor










Toma de corriente (I DD ) en f RF = 433MHz, TX 50% del ciclo8.4mA (típico)
Potencia de salida (P OUT ) en 50Ω10.0 dBm (típico)

Especificaciones del receptor













Toma de corriente (I DD ) en f RF = 4336.4mA (típico)
De sueño profundo de suministro de corriente (I DD ) en f RF = 4330.8μA (máx)
Sensibilidad (nivel de potencia media)--113 DBm (típico)

Lista de componentes


La siguiente tabla proporciona una lista de componentes que se utilizan para rellenar tanto el MTR y las juntas RDR. Maxim recomienda de alta calidad, bobinados inductores de los componentes utilizados en los dos tableros.









































































































































MTR
DesignaciónCantidadDescripción
C49-502PAC, 0.01μF, 10%
C21-222PAC, 0.047μF, 10%
C5-6 C513PAC, 0.1μF, 10%
C41PAC, 1.0μF, 10%
C21PAC, 1.8pF, el 5%
C1 C7-105PAC, 100pF, el 5%
C291PAC, 10pF, el 5%
C201PAC, 1500PF, el 5%
C3 C26 C31 C33-34, C456PAC, 220pF, 10%
C271PAC, 470pF, 10%
C281PAC, 68PF, el 5%
C301PAC, 68PF, el 5%
C521PAC, 680PF, 10%
Y31CERAMIC-SMD, 12.000MHZ
F21FLT \ MURATA \ SFTLA10M7FA00-B0, 10.7MHz
L41IND-MOLDEADO, 10NH, el 5%
L21IND-MOLDEADO, 16nH, el 5%
L10-123IND-MOLDEADO, 22nH, el 5%
L11IND-MOLDEADO, 68nH, el 5%
D-MRSI1LED-1
U41MAX7032
U21MAXQ610A-0000 +
R1 R9 RBAT13RES, 0Ω
R22-26 R29-307RES, 100Ω
R13-142RES, 100kΩ
R151RES, 10k
R71RES, 1MΩ
R-MRSI1RES, 75Ω
R41RES, abierta
J-MX-ANT1RF-SWITCH-SWF
SW-A1SW-SPST-NO-B, SPST NO
Y11XTAL-SMD, 17.63416Mhz





























































































































































RDR
DesignaciónCantidadDescripción
 1CAJA, Serie 55 caja
 1Antena 433 MHz
C44 C462PAC, 0.01μF, 10%
C14 C322PAC, 0.047μF, 10%
C24-25 C47 C53-567PAC, 0.1μF, 10%
C231PAC, 1.0μF, 10%
C121PAC, 1.8pF, el 5%
C11 C35-385PAC, 100pF, el 5%
C421PAC, 10pF, el 5%
C131PAC, 1500PF, el 5%
C15 C17 C39 C43-196PAC, 220pF, 10%
C401PAC, 470pF, 10%
C161PAC, 68PF, el 5%
C411PAC, 68PF, el 5%
C481PAC, 680PF, 10%
Y41CERAMIC-SMD, 12.000MHZ
U61DISPLAY/DOGS102-6
F11FLT \ MURATA \ SFTLA10M7FA00-B0, 10.7MHz
L61IND-MOLDEADO, 10NH, el 5%
L51IND-MOLDEADO, 16nH, el 5%
L7-93IND-MOLDEADO, 22nH, el 5%
L31IND-MOLDEADO, 68nH, el 5%
D-RSSI1LED-1
U11MAX7032
U51MAX7359ETG +
U31MAXQ610A-0000 +
R3 R5 RBAT23RES, 0Ω
R11-12 R17-217RES, 100Ω
R8 R102RES, 100kΩ
R61RES, 1MΩ
R21RES, 4.7kΩ
RRSSI1RES, 75Ω
R161RES, abierta
J-RX-ANT1RF-SWITCH-SWF
J-RF-IN1SMA
SW-D SW-SW-ENT ESC SW-L-PWR SW R-SW SW SW-TOP-U8SW-SPST-NO-B, SPST NO
Y21XTAL-SMD, 17.63416Mhz

Esquemas


(Revisión C1: detallada de 11 "x 17" copia disponible aquí )

MTR Bloques






Bloques de RDR






Disposición


(Revisión C1: parcelas detalladas escala disponibles aquí .)

Disposición

Disposición

Disposición

Referencias



Notas relacionadas con la aplicación



Anexo I: Estructura RKE Marco


La estructura básica de la trama de datos es modulada ASK, Manchester codificados, 4.8kbps (0.2083ms/bit), dispone de 144 bits por trama (18 bytes o 9, las palabras de 2 bytes), los 30ms por cuadro, una pausa de 70 ms entre los marcos , y 3 transmisiones de marco por ráfaga. Para obtener información sobre la codificación Manchester, se refieren a la nota de solicitud de 3435, " La codificación Manchester de datos para las comunicaciones de radio . "

































Estructura de trama
PreámbuloIdentificaciónFunciónDatosSincronizarBatSigChk Sum
FFFFFFFD0200000100010000432111220168

La estructura de este marco es arbitraria, pero se ha establecido para proporcionar un ejemplo de la información que puede estar contenida en cualquier fotograma en relación con los muchos ISM-RF aplicaciones.












Preámbulo
Preámbulo
FFFFFFFD

La exposición de motivos por defecto de este diseño de referencia es de 4 bytes de datos de alta con un par de bits de parada al final. Dado que este se transmite con la codificación Manchester, la forma de onda aparece como una onda cuadrada con una duración de 4.8kHz 6.67ms. Tener un preámbulo más o menos de 1 ms debe proporcionar tiempo suficiente para que el sistema de Rx de despertar, habida cuenta de una fuerte fuerza de la señal recibida. El MAX1473 tiene un típico sonar a la hora de 250μs para comenzar a recibir datos válidos. El tiempo extra puede ser rellenado en esta primera hora de levantarse para permitir que el sistema de Rx para resolver adecuadamente la banda circuito de corte, que a su vez proporciona una sensibilidad óptima.Proporcionar un preámbulo de más de 6 ms ofrece una amplia oportunidad para una señal relativamente débil para despertar el receptor.

Suponiendo que el microcontrolador MAXQ610 utilizado en la Rx está sentado en un modo de parada, el sistema va a consumir un determinado número de bits recibidos para poner en marcha el microcontrolador antes de que pueda comenzar la decodificación de la secuencia de datos. El oscilador en anillo en el NanoPower MAXQ610 normalmente se ejecuta a 8 kHz (el intervalo del temporizador despertador puede ser de 1 / f NANO a 65535 / f NANO ). Si el sistema Rx está configurado para utilizar el RXSIG o la línea de RXDATA como un generador de interrupción, el μC tendría un tiempo de calentamiento de 8192 × t HFXIN . Con t HFXIN 83.3ns = (f XCLK reloj = 12 MHz), el tiempo de calentamiento funciona a aproximadamente 0.6827μs. Esto es así en el tiempo disponible en la transmisión de un preámbulo, y en una tasa de baudios de 4.8kbps, el μC debe estar en un estado caliente, hasta dentro de 3.28 bits. El patrón FD al final del preámbulo se utiliza para indicar el comienzo de la siguiente trama de datos y es la clave para sincronizar la corriente de bits recibida.












Identificación Estructura
Identificación
01234567

La sección de identificación está configurado con 4 bytes de identificación. Esto permite que 2 32 identificadores únicos o los códigos de más de 4290 millones. Si un byte se utiliza para la clase de identificación (256 diferentes modelos de automóviles, por ejemplo), 2 24 identificadores únicos o códigos más de 16 millones permanecen. La estructura puede ser modificado para adaptarse al propósito del usuario. Este RD ha sido programado para utilizar un código de identificación como se señaló anteriormente, con el último byte que se ajustan entre los sistemas de desarrollo rural. Esto permite la operación simultánea de múltiples sistemas, RKE independientes.










Función de la estructura
Función
0001

Este diseño simple referencia sólo tiene cuatro interruptores de entrada en el transmisor, por lo que 2 bytes de "funciones" es una exageración. De nuevo, esta estructura puede ser modificado para adaptarse a los propósitos del usuario. En esta aplicación, cuando se pulsa el botón A, el valor de la función sería 00 01. Cuando se pulsa el botón B, el valor de la función sería 00 02, y así sucesivamente. El valor de la función se utiliza para transmitir la información (con botones individuales que tienen su propio pedacito), así que es posible que pulsar varios botones simultáneamente. En ese caso, si los botones B y D fueron presionados juntos, el valor de la función se representa como 00 0A (esta operación multibotón no se ha aplicado en el diseño). Esta es una definición arbitraria de la estructura del valor de la función, y siempre puede ser modificado por el usuario.










Estructura de datos
Datos
0000

La sección de datos de este marco se proporcionan para transmitir información, tal como una temperatura o la medición de presión, un indicador de velocidad, etc En este diseño, la sección de datos podría funcionar en concierto con la sección de función de transmitir información cuando un botón en el transmisor ha sido presionado. Una vez más, el uso de este valor de datos es arbitraria y puede ser modificado por el usuario. Esta operación no se está aplicando actualmente en el diseño.










Sincronización de Estructura
Sincronizar
4321

El bloque de sincronización está configurado para permitir la codificación de cifrado. Los usuarios pueden trabajar con esta sección para proporcionar sincronización móvil de código, una clave pública, etc Esta operación no se está aplicando actualmente en el diseño.









Indicador Indicador de batería
Bat
11

Este byte único permite que el transmisor envía una indicación de la fuerza de la batería al receptor. En esta sección del cuadro podría tener un valor al indicar la necesidad de cambiar la batería Tx. Esta operación no se está aplicando actualmente en el diseño.









Indicador de cobertura
Sig
22

Un uso posible para una configuración de transceptor, la intensidad de la señal recibida del canal de retorno puede ser compartida entre los nodos. Esta operación no se está aplicando actualmente en el diseño.










Suma de comprobación
Chk Sum
0167

En este diseño de referencia, la suma de comprobación se utiliza como un go / no-go la puerta de datos válidos. Los valores de marco (excepto el preámbulo) se resumió durante la transmisión, un byte a la vez, y la suma total se insertan en el extremo del bastidor como la suma de comprobación. Este valor se compara con un flujo de datos recibidos, y la decisión de usar o descartar el cuadro se hace. El formato de esta operación de verificación es arbitraria, pero mientras el Tx / Rx y los métodos de codificación / decodificación son equivalentes, el proceso de control funcionará como se pretende.

Anexo II: MTR firmware


main.h (17 Sep 10, Ap 0,3):

 
/ ************************************************* ***************************
* Copyright (C) 1999-2010 Maxim Integrated Products, Todos los derechos reservados.
*
* Ver main.c para obtener información adicional.
*
************************************************** **************************** /

/ * Las subrutinas principales * /
MasterInt vacío ();
AMRData vacío (sin firmar MTRPort char);

/ * Subrutinas TX * /
SendBurst vacío ();
BuildPacket vacío ();

/ * RX Subrutinas * /
void DecodeRX ();
void OversampleRX ();
void PreambleSyncRX ();
void AlignRX ();
PullDownSet vacío ();
PullDownPair caracteres (MPIndex short int);
Validar caracteres ();
Dos a dos char ();

/ * 7032 * Subrutinas /
void Init7032 ();
void Prep7032TX ();
void Prep7032RX ();
void Prep7032Sleep ();

/ * Subrutinas SPI * /
Write7032Reg entero sin signo (unsigned char Adr, datos unsigned char);
unsigned int Read7032Reg (Adr sin firmar char);
ClockOutSPI vacío (sin firmar Inbit char, unsigned int retardo);
sin signo ClockInSPI char (Retardo unsigned int);

/ * Las subrutinas comunes * /
void Lights7 ();
void pausa (Conde int largo);
void WriteFlash (Dirección unsigned int, unsigned int data);
unsigned int ReadFlash (Dirección unsigned int);
void EraseFlash (Dirección unsigned int);
void GoToSleep ();
anular ExtISR ();
anular la suspensión ();
WakeUp vacío ();

/ * ------------------------------------------------ ------------------------- * /
/ * Constantes globales * /
IntFlag static int = 0;
/ / Static int hora de dormir = 0x0FA00; / / ~ 5.3sec tiempo de sueño (casi máxima), ~ 2F2B por segundo
static int hora de dormir = 0x08D81; / / ~ 3 segundos el tiempo del sueño
SetHold static int = 29; / / por defecto de configuración SPI y el tiempo de espera, 0,05 ms ~
WakeForSession static char = 0; / / Bandera para RX
static char FWRev = 0x04; revisión / / Firmware

/ * ------------------------------------------------ ------------------------- * /
/ * AMR constantes y variables * /
AMRSession static char = 0; / / bandera de sesión activa de AMR
Meter static char [8] [2] = {{0x00, 0x00,}, / / ​​valores iniciales de cada metro
{0x22, 0x22},
{0x00, 0x00},
{0x00, 0x00},
{0x00, 0x00},
{0x00, 0x00,}};
/ * ------------------------------------------------ ------------------------- * /
/ * TX constantes y variables * /
PacketChars static int = 18;
Preámbulo static char [4] = {0xFF, 0xFF, 0xFF, 0xFD}
ID [4] = {0x02, 0x00, 0x02, 0x01},
Func [2] = {0x00, 0x00,},
De datos [2] = {0x00, 0x00},
Sync [2] = {0x43, 0x21},
Bat = 0x11,
Sig = 0x22,
CheckSum [2] = {0x00, 0x00,};
Paquete static char [19]; ​​/ / almacenar los paquetes de datos como una cadena: 18 caracteres + nulo
BitMask static int [8] = {128, 64, 32, 16, 8, 4, 2, 1}; / / almacena una máscara de bits
static int TXWUCnt = 273; / / TX Warm-Up Conde (~ 500us)
static int ManCnt = 61; / / tiempo de pausa durante 1/2 Manchester bits
static long int TXOffCnt = 40000 / / Cuenta el tiempo de descuento TX

/ * ------------------------------------------------ ------------------------- * /
/ * RX constantes y variables * /

static char UnitID [4] = {0x02, 0x00, 0x02, 0x01}; / / ID de la unidad MTR
ManPacket static char [39]; / / almacenar los datos de Manchester con un 2x18 caracteres
/ / Paquete (incluida la exposición de motivos completa) + 2 'ruido' caracteres
static int ByteShift = 0;
static int BitShift = 0;

/ * ------------------------------------------------ ------------------------- * /

Vea la última RD002-MTR *. zip de archivos para todo el código del firmware. 
main.c (17 Sep 10, Rev 0.3) 
isr.c (17 de septiembre 10)

Anexo III: RDR firmware


main.h (21 Sep 10, Ap 0,3):

/ ************************************************* ***************************
* Copyright (C) 1999-2010 Maxim Integrated Products, Todos los derechos reservados.
*
* Ver main.c para obtener información adicional
*
************************************************** **************************** /

/ * Las subrutinas principales * /
MasterInt vacío ();

/ * AMR Subrutinas * /
anular AMRStart ();
void AMRRX ();
anular AMRAttn ();
void AMRReq ();
void AMRAck (Reset unsigned char);
anular AMRClose ();

/ * RKE Subrutinas * /
void RKERX ();

/ * MAXBee Subrutinas * /
Echo vacío ();
EchoCheck caracteres ();

/ * RX Subrutinas * /
void DecodeRX ();
void OversampleRX ();
void PreambleSyncRX ();
void AlignRX ();
PullDownSet vacío ();
PullDownPair caracteres (MPIndex short int);
Validar caracteres ();
Dos a dos char ();

/ * Subrutinas TX * /
SendBurst vacío ();
BuildPacket vacío ();

/ * 7032 * Subrutinas /
void Init7032 ();
void Prep7032TX ();
void Prep7032RX ();
void Prep7032Sleep ();

/ * Subrutinas del menú * /
MainMenu vacío (); / / Encabezado
TopMenu vacío (); / / Página 0
AMRMenu vacío (); / / Página 1
MTRMenu vacío (); / / Página 2
RKEMenu vacío (); / / Página 3
UtilMenu vacío (); / / Página 4
CommMenu vacío (); / / Página 5
DataMenu vacío (); / / Página 6
void MenuNav (clave unsigned char, unsigned TopSub char);
void ListNav (clave unsigned char);
void ColNav (clave unsigned char);
PrintEditMTR vacío ();
anular MenuEnt ();
void MenuEsc ();
void EditNav (clave unsigned char);

/ * Las subrutinas de pantalla * /
InitDisp vacío ();
ClrDisp vacío ();
PrintDisp vacío (unsigned char alfanumérico, sin signo x char, unsigned y char);
void PrintByteDisp (Byte unsigned char, unsigned x char, unsigned y char);
void PrintByteBDisp (Byte unsigned char, unsigned x char, unsigned y char);
PrintLineDisp vacío (sin signo alfanumérico char [17], sin firmar y char);
WriteEADogs void (unsigned ComDat char, sin firmar de datos char);
DispSPI vacío (sin firmar Inbit char);

/ * 7359 y subrutinas I2C * /
InitKeys void ();
WriteKeys void (unsigned char Cmd, datos unsigned char);
ReadKeys sin firmar char (sin firmar Comando char);
sin signo MOSII2C char (sin firmar SendByte char);
sin signo MISOI2C char ();
void StartI2C ();
void StopI2C ();

/ * Subrutinas SPI * /
Write7032Reg entero sin signo (unsigned char Adr, datos unsigned char);
unsigned int Read7032Reg (Adr sin firmar char);
ClockOutSPI vacío (sin firmar Inbit char, unsigned int retardo);
sin signo ClockInSPI char (Retardo unsigned int);

/ * Las subrutinas comunes * /
void Lights7 ();
nula luz de fondo (el modo de unsigned char);
void pausa (Conde int largo);
void WriteFlash (Dirección unsigned int, unsigned int data);
unsigned int ReadFlash (Dirección unsigned int);
void EraseFlash (Dirección unsigned int);
void GoToSleep ();
WakeUp vacío ();
anular ExtISR ();
anular la suspensión ();
void WURX ();

/ * ------------------------------------------------ ------------------------- * /
/ * Constantes y variables globales * /
IntFlag static char = 0; bandera / / interrupción
SetHold static char = 29; / / por defecto de configuración SPI y el tiempo de espera, 0,05 ms ~
TRXMode static char = 0; / / RX = 0, TX = 1
static char bgcolor = 2; de fondo / / por defecto de color
SleepFlag static char = 0, el poder / / Auto hasta la bandera
SleepTick static char = 0; / / número de segundos hasta que el sueño
static int hora de dormir = 120; auto / / regulable de apagado de tiempo (segundos)
static char FWRev = 0x05; revisión / / Firmware

/ * ------------------------------------------------ ------------------------- * /
/ * MAXBee constantes y variables * /
estática identificación_del_destino char [4] = {0x02, 0x00, 0x01, 0x04}; / / ID del "otro" de radio

/ * ------------------------------------------------ ------------------------- * /
/ * AMR constantes y variables * /
AMRSession static char = 0; / / bandera de sesión activa de AMR
/ / Inicial MTR ID
static char MTRID [16] [5] = {{0x02, 0x00, 0x02, 0x00, 0x00}, / / ​​Esta Unidad
{0x02, 0x00, 0x02, 0x01, 0x10}, / / ​​MTR primera identificación de la unidad
{0x02, 0x00, 0x02, 0x02, 0x10},
{0x02, 0x00, 0x02, 0x02, 0x11},
{0x02, 0x00, 0x00, 0x00 0x03},
{0x02, 0x00, 0x00, 0x00 0x03},
{0x02, 0x00, 0x00, 0x00 0x04},
{0x02, 0x00, 0x00, 0x00 0x04},
{0x00, 0x00, 0x00, 0x00 0x08},
{0x00, 0x00, 0x00, 0x00 0x09},
{0x00, 0x00, 0x00, 0x00 0x0A},
{0x00, 0x00, 0x00, 0x00 0x0B,},
{0x00, 0x00, 0x00, 0x00 0x0C,},
{0x00, 0x00, 0x00, 0x00 0x0D,},
{0x00, 0x00, 0x00, 0x00 0x0E,},
{0x00, 0x00, 0x00, 0x00 0x0F,}};
estática AMRMode char = 1 / / bandera para el procesamiento por lotes de las sesiones de AMR
static char MTRData [16] [2] = {{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00},
{0x00, 0x00}, {0x00, 0x00}};

/ * ------------------------------------------------ ------------------------- * /
/ * RX constantes y variables * /

static char UnitID [4] = {0x02, 0x00, 0x00, 0x00,}, / / ​​ID de la unidad de RDR
ManPacket static char [39]; / / almacenar los datos de Manchester con un 2x18 caracteres
/ / Paquete (incluida la exposición de motivos completa) + 2 'ruido' caracteres
static int ByteShift = 0;
static int BitShift = 0;

Identificación static char [4] = {0x02, 0x00, 0x00, 0x01}, / / ​​de almacenamiento de los datos de RX
Func [2] = {0x00, 0x00,},
De datos [2] = {0x00, 0x00},
Sync [2] = {0x00, 0x00,},
Bat = 0x00,
Sig = 0x00,
CheckSum [2] = {0x00, 0x00,};

static char Id de Par [4] = {0x02, 0x00, 0x01, 0x00,}; ID emparejado / / inicial
Pairon static char = 0; / / bandera para indicar la función de emparejamiento

/ * ------------------------------------------------ ------------------------- * /
/ * TX constantes y variables * /
PacketChars static int = 18;
Preámbulo static char [4] = {0xFF, 0xFF, 0xFF, 0xFD};
Paquete static char [19]; ​​/ / almacenar los paquetes de datos como una cadena: 18 caracteres + nulo
BitMask static int [8] = {128, 64, 32, 16, 8, 4, 2, 1}; / / almacena una máscara de bits
static int TXWUCnt = 273; / / TX Warm-Up Conde (~ 500us)
static int ManCnt = 61; / / tiempo de pausa durante 1/2 Manchester bits
static long int TXOffCnt = 40000 / / Cuenta el tiempo de descuento TX

/ * ------------------------------------------------ ------------------------- * /
/ Exhibidores * Constantes y variables * /
static int DispSetHold = 2; / / configuración de SPI y el tiempo de espera para la visualización

MenuPage static char = 0, la selección / / Página
static char MenuRMin = 2; Fila / / Mínimo de selección
MenuRow static char = 2; / / fila de selección
static char MenuRMax = 3; / / Máxima fila de selección
static char MenuCol = 0, la selección / / Columna
static char MenuSel = 0; bandera / / Selección
Inverso static char = 0; / / 0 = B en W, 1 = W en B
static char ListBox = 0; / / Lista de caja de la bandera
ListIndex static char = 0; caja / / lista de índices
estáticas Editar char = 0; / / Editar bandera
static char IDEdit = 0; / / Editar bandera para el campo MTR ID (ID refleja bits)
static char DataBox = 0; / / Datos cuadro de bandera

/ * ------------------------------------------------ ------------------------- * /
/ * Font / imprimir las líneas * /

__data16 estática unsigned char font6x8 [0x50] [6] = {/ / iniciar la fuente 6x8
{0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00}, / / ​​0 [0x00]
{0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,}, / / ​​1 [0x01]
{0x42, 0x61, 0x51, 0x49, 0x46, 0x00}, / / ​​2 [0x02]
{0x21, 0x41, 0x49, 0X4D, 0x33, 0x00}, / / ​​3 [0x03]
{0x18, 0x14, 0x12, 0x7F, 0x10, 0x00}, / / ​​4 [0x04]
{0x27, 0x45, 0x45, 0x45, 0x39, 0x00}, / / ​​5 [0x05]
{0x3C, 0x4A, 0x49, 0x49, 0x30, 0x00}, / / ​​6 [0x06]
{0x41, 0x21, 0x11, 0x09, 0x07, 0x00}, / / ​​7 [0x07]
{0x36, 0x49, 0x49, 0x49, 0x36, 0x00}, / / ​​8 [0x08]
{0x06, 0x49, 0x49, 0x29, 0x1E, 0x00}, / / ​​9 [0x09]
{0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00}, / / ​​A [0x0A]
{0x7F, 0x49, 0x49, 0x49, 0x36, 0x00}, / / ​​B [0x0B]
{0x3E, 0x41, 0x41, 0x41, 0x22, 0x00}, / / ​​C [0x0C]
{0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00}, / / ​​D [0x0D]
{0x7F, 0x49, 0x49, 0x49, 0x41, 0x00}, / / ​​E [0x0E]
{0x7F, 0x09, 0x09, 0x09, 0x00 0x01,}, / / ​​F [0x0F]

{0x3E, 0x41, 0x49, 0x49, 0x7A, 0x00}, / / ​​G [0x10]
{0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00}, / / ​​H [0x11]
{0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,}, / / ​​me [0x12]
{0x20, 0x40, 0x41, 0x3F, 0x01, 0x00}, / / ​​J [0x13]
{0x7F, 0x08, 0x14, 0x22, 0x41, 0x00}, / / ​​K [0x14]
{0x7F, 0x40, 0x40, 0x40, 0x40, 0x00}, / / ​​L [0x15]
{0x7F, 0x02, 0x1C, 0x02, 0x00 0x7F,}, / / ​​M [0x16]
{0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00}, / / ​​N [0x17]
{0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00}, / / ​​O [0x18]
{0x7F, 0x09, 0x09, 0x09, 0x06, 0x00}, / / ​​P [0x19]
{0x3E, 0x41, 0x51, 0x21, 0x5F, 0x00}, / / ​​Q [0x1A]
{0x7F, 0x09, 0x19, 0x29, 0x46, 0x00}, / / ​​R [0x1B]
{0x26, 0x49, 0x49, 0x49, 0x32, 0x00}, / / ​​S [0x1C]
{0x01, 0x01, 0x7F, 0x01, 0x01, 0x00}, / / ​​T [0x1D]
{0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00}, / / ​​U [0x1E]
{0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00}, / / ​​V [0x1F]

{0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00}, / / ​​W [0x20]
{0x63, 0x14, 0x08, 0x14, 0x63, 0x00}, / / ​​X [0x21]
{0x03, 0x04, 0x78, 0x04, 0x03, 0x00}, / / ​​Y [0x22]
{0x61, 0x51, 0x49, 0x45, 0x43, 0x00}, / / ​​Z [0x23]
{0x00, 0x40, 0x38, 0x18, 0x00, 0x00,}, / /, [0x24]
{0x00, 0x60, 0x60, 0x00, 0x00, 0x00,}, / /. [0x25]
{0x08, 0x08, 0x08, 0x08, 0x08, 0x00}, / / ​​- [0x26]
{0x08, 0x08, 0x3E, 0x08, 0x08, 0x00}, / / ​​+ [0x27]
{0x16, 0x16, 0x16, 0x16, 0x16, 0x00}, / / ​​= [0x28]
{0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00}, / / ​​* [0x29]
{0x20, 0x10, 0x08, 0x04, 0x02, 0x00}, / / ​​/ [0x2A]
{0x02, 0x01, 0x51, 0x09, 0x06, 0x00}, / /? [0x2B]
{0x04, 0x02, 0x01, 0x02, 0x00 0x04,}, / / ​​^ [0x2C]
{0x00, 0x08, 0x14, 0x22, 0x41, 0x00}, / / ​​<[0x2D]
{0x00, 0x41, 0x22, 0x14, 0x08, 0x00}, / /> [0x2E]
{0x00, 0x10, 0x20, 0x40, 0x20, 0x10}, / / ​​v [0x2F]

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, / / ​​el espacio [0x30]
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, / / ​​bloque completo [0x31]
{0x00, 0x00, 0x14, 0x00, 0x00, 0x00,}, / /: [0x32]
{0x00, 0x40, 0x34, 0x00, 0x00, 0x00,}, / /, [0x33]
{0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,}, / / ​​| [0x34]
{0x00, 0x00,, 0xF8, 0x08, 0x08, 0x08}, / /, - [0x35]
{0x08, 0x08, 0xF8, 0x00, 0x00, 0x00,}, / / ​​-, [0x36]
{0x00, 0x00,, 0x0F, 0x08, 0x08, 0x08}, / / ​​'- [0x37]
{0x08, 0x08, 0x0F, 0x00, 0x00, 0x00,}, / / ​​- '[0x38]
{0x40, 0x60, 0x30, 0x18, 0x0C, 0x00}, / / ​​* M [0x39]
{0x7F, 0x7F, 0x30, 0x18, 0x0C, 0x00}, / / ​​* M [0x3A]
{0x7F, 0x7F, 0x00, 0x40, 0x60, 0x30}, / / ​​* M * A [0x3B]
{0x18, 0x0C, 0x40, 0x7F, 0x7F, 0x00}, / / ​​* A [0x3C]
{0x41, 0x63, 0x36, 0x18, 0x1C, 0x36}, / / ​​* X [0x3d]
{0x63, 0x41, 0x00, 0x7F, 0x00 0x7F,}, / / ​​* X * I [0x3E]
{0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,}, / / ​​* M [0x3F]

{0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3}, / / ​​'B [0x40]
{0xE3, 0xF7, 0xBE, 0x1C, 0x00, 0x00,}, / / ​​B '[0x41]
{0x03, 0x03, 0x03, 0x03, 0x00, 0x00,}, / / ​​E '[0x42]
{0xF8, 0xFE, 0x0F, 0x03, 0x03, 0x03}, / / ​​'O [0x43]
{0x03, 0x0F, 0xFE, 0xF8, 0x00, 0x00,}, / / ​​'O [0x44]
{0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,}, / / ​​'L [0x45]
{0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03}, / / ​​'D [0x46]
{0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30}, / /, B [0x47]
{0x30, 0x39, 0x1F, 0x0E, 0x00, 0x00,}, / / ​​B. [0x48]
{0x30, 0x30, 0x30, 0x30, 0x00, 0x00,}, / / ​​E. [0x49]
{0x07, 0x1F, 0x3C, 0x30, 0x30, 0x30}, / /, oh [0x4A]
{0x30, 0x3C, 0x1F, 0x07, 0x00, 0x00,}, / / ​​O. [0x4B]
{0x08, 0x08, 0x08, 0x08, 0x08, 0x08}, / / ​​- [0x4C]
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, / / ​​el espacio [0x0D]
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, / / ​​el espacio [0x0E]
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00} / / espacio [0x0F]
};

/ * ------------------------------------- * /
/ / Más artículos del menú
estática unsigned char MainMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x16, 0x0A, 0x12, 0x17,
0x30, 0x16, 0x0E, 0x17, 0x1E};

estática unsigned char AMRLn [17] = {0x30, 0x30, 0x0A, 0x16, 0x1B, 0x30,
0x16, 0x0E, 0x17, 0x1E, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

estática unsigned char RKELn [17] = {0x30, 0x30, 0x1B, 0x14, 0x0E, 0x30,
0x16, 0x0E, 0x17, 0x1E, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

UtilLn static unsigned char [17] = {0x30, 0x30, 0x1E, 0x1D, 0x12, 0x15,
0x12, 0x1D, 0x22, 0x30, 0x16, 0x0E,
0x17, 0x1E, 0x30, 0x30, 0x30};
/ * ------------------------------------- * /
/ / AMR elementos del menú
estática unsigned char AMRMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x0A, 0x16, 0x1B, 0x30,
0x16, 0x0E, 0x17, 0x1E, 0x30};

estática unsigned char MTRListLn [17] = {0x30, 0x30, 0x16, 0x1D, 0x1B, 0x30,
0x15, 0x12, 0x1C, 0x1D, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

estática unsigned char AMRModeLn [17] = {0x30, 0x30, 0x0A, 0x16, 0x1B, 0x30,
0x16, 0x18, 0x0D, 0x0E, 0x32, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

estática StartCommLn unsigned char [17] = {0x30, 0x30, 0x1C, 0x1D, 0x0A, 0x1B,
0x1D, 0x30, 0x0C, 0x18, 0x16, 0x16,
0x30, 0x30, 0x30, 0x30, 0x30};

DataListLn static unsigned char [17] = {0x30, 0x30, 0x0D, 0x0A, 0x1D, 0x0A,
0x30, 0x15, 0x12, 0x1C, 0x1D, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

/ * ------------------------------------- * /
/ / MTR elementos del menú
estática unsigned char MTRMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x16, 0x1D, 0x1B, 0x30,
0x16, 0x0E, 0x17, 0x1E, 0x30};

MTREditLn static unsigned char [17] = {0x30, 0x30, 0x0E, 0x0D, 0x12, 0x1D,
0x30, 0x16, 0x1D, 0x1B, 0x32, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

/ * ------------------------------------- * /
/ / RKE elementos del menú
estática unsigned char RKEMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x1B, 0x14, 0x0E, 0x30,
0x16, 0x0E, 0x17, 0x1E, 0x30};

modeln static unsigned char [17] = {0x30, 0x30, 0x16, 0x18, 0x0D, 0x0E,
0x32, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

TXIDLn static unsigned char [17] = {0x34, 0x1D, 0x21, 0x30, 0x12, 0x0D,
0x32, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x34};

FuncLn static unsigned char [17] = {0x34, 0x0F, 0x1E, 0x17, 0x0C, 0x1D,
0x12, 0x18, 0x17, 0x32, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x34};

estática PairLn unsigned char [17] = {0x30, 0x30, 0x19, 0x0A, 0x12, 0x1B,
0x30, 0x1D, 0x21, 0x2A, 0x1B, 0x21,
0x30, 0x30, 0x30, 0x30, 0x30};

WaitLn static unsigned char [17] = {0x30, 0x30, 0x20, 0x0A, 0x12, 0x1D,
0x12, 0x17, 0x10, 0x30, 0x0F, 0x18,
0x1B, 0x30, 0x1D, 0x21, 0x30};

/ * ------------------------------------- * /
/ / Util elementos del menú

estática unsigned char UtilMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x1E, 0x1D, 0x12, 0x15,
0x30, 0x16, 0x0E, 0x17, 0x1E};

BGColorLn static unsigned char [17] = {0x30, 0x30, 0x0B, 0x0A, 0x0C, 0x14,
0x15, 0x1D, 0x32, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

estática unsigned char AMRSesLn [17] = {0x30, 0x30, 0x0A, 0x16, 0x1B, 0x30,
0x1C, 0x0E, 0x1C, 0x1C, 0x12, 0x18,
0x17, 0x32, 0x30, 0x30, 0x30};

SleepLn static unsigned char [17] = {0x30, 0x30, 0x1C, 0x15, 0x0E, 0x0E,
0x19, 0x30, 0x1D, 0x12, 0x16, 0x0E,
0x32, 0x30, 0x30, 0x30, 0x30};

UnitIDLn static unsigned char [17] = {0x34, 0x1E, 0x17, 0x12, 0x1D, 0x32,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x34};

/ * ------------------------------------- * /
/ / Los elementos del menú Comm
estática unsigned char CommMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x16, 0x1D, 0x1B, 0x30,
0x0C, 0x18, 0x16, 0x16, 0x30};

CommMTRLn static unsigned char [17] = {0x30, 0x30, 0x0C, 0x18, 0x16, 0x16,
0x30, 0x16, 0x1D, 0x1B, 0x32, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

estática DataLn unsigned char [17] = {0x34, 0x0D, 0x0A, 0x1D, 0x0A, 0x32,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x34};

estática unsigned char MTRIDLn [17] = {0x34, 0x16, 0x1D, 0x1B, 0x32, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x34};

/ * ------------------------------------- * /
/ / Datos de los elementos del menú
estática unsigned char DataMenuLn [17] = {0x1B, 0x0D, 0x00, 0x02, 0x00,, 0x30,
0x26, 0x30, 0x0D, 0x0A, 0x1D, 0x0A,
0x30, 0x16, 0x0E, 0x17, 0x1E};

DataDispLn static unsigned char [17] = {0x30, 0x30, 0x0D, 0x0A, 0x1D, 0x0A,
0x30, 0x16, 0x1D, 0x1B, 0x32, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

/ * ------------------------------------- * /
/ / Otros
BlankLn static unsigned char [17] = {0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

estática MaximLn unsigned char [17] = {0x39, 0x3A, 0x3B, 0x3C, 0x3d, 0x3E,
0x39, 0x3A, 0x3F, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30};

Bold1Ln static unsigned char [17] = {0x34, 0x30, 0x40, 0x41, 0x40, 0x42,
0x30, 0x40, 0x41, 0x43, 0x44, 0x45,
0x30, 0x46, 0x44, 0x30, 0x34};

Bold2Ln static unsigned char [17] = {0x34, 0x30, 0x47, 0x48, 0x47, 0x49,
0x30, 0x47, 0x48, 0x4A, 0x4B, 0x47,
0x49, 0x47, 0x4B, 0x30, 0x34};

Box1Ln static unsigned char [17] = {0x35, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C,
0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C,
0x4C, 0x4C, 0x4C, 0x4C, 0x36};

Box2Ln static unsigned char [17] = {0x37, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C,
0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C,
0x4C, 0x4C, 0x4C, 0x4C, 0x38};

Box3Ln static unsigned char [17] = {0x34, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x34};

Vea lo último RD002-RDR * zip. archivo para todo el código del firmware. 
main.c (21 Sep 10, Ap 0,3): 
isr.c (21 de septiembre 10):

Anexo IV: El tiempo RX


RX Tiempo

Apéndice V: Anteproyecto MAXBee definición de protocolos




  1. Radio nomenclatura


    • Todas las radios son transceptores.

    • El medidor consiste en un medidor de flujo de agua, un microcontrolador que cuenta contactos del interruptor (que indica una unidad de volumen de agua), y un transceptor que envía la información de flujo para un lector remoto. La parte del receptor de la radio a la escucha de los comandos del lector.

    • El lector consiste en una pantalla portátil, una tecla (como en el teclado) decodificador para los comandos de pulsadores, un microcontrolador que procesa la información caudal enviado por el medidor y las interfaces con la pantalla, y un transceptor que envía órdenes a los medidores de flujo múltiples y recibe tasa de información de estos medidores.

    • Tanto el medidor y el lector son de baterías, por lo que no puede estar en todo el tiempo. La radio metro es menor que el lector y tiene una más pequeña, de menor duración de la batería, por lo que su encendido-apagado del ciclo de trabajo debe ser menor que el lector.

  2. Descripción general del protocolo de comunicación


    • Un solo lector se comunicará con varios medidores. Los medidores están conectados a las tuberías de agua y son por lo tanto estacionaria. El lector puede ser fijo o móvil.

    • El propósito de enlace de comunicación del lector consiste en recibir información sobre el agua de uso a distancia de los medidores a través del enlace de radio. La forma más sencilla de hacerlo es "a demanda", lo que significa que el lector se inicia el proceso de recopilación de información. Una lectura repetitiva o programada, es más fiable y predecible, sino que requieren la sincronización horaria de todos los metros y el lector.

    • Toda la información entre el lector y los metros está contenida en un marco predefinido, específicamente elegido para el sistema de demostración lector-metro. Este cuadro contiene la información de identificación, datos, funciones, además de exposición de motivos, sincronización y detección de errores básicos (suma de comprobación). Toda la información que la transferencia se lleva a cabo a través de estos marcos.

  3. Protocolo de comunicación de Procedimiento


    • Todas las transmisiones de radio se realiza en una sola frecuencia. No hay canales o de salto de frecuencia .

    • Cada medidor periódicamente se convierte en su receptor para escuchar a un comando del lector. El período y ciclo de trabajo son los mismos para cada metro, pero debido a que sus relojes no están sincronizados, no habrá estructurado dentro y fuera de temporización para los medidores. Es posible ajustar el ciclo cada medidor deber diferente para lograr una condición que está más cerca al azar períodos de escucha. Si el medidor no reconoce un comando del lector durante su "sobre" el tiempo, se apaga hasta que su próxima "sobre" el ciclo.

    • El lector emite un comando de difusión cuando se desea recibir las lecturas de los medidores. El formato de este comando es tal que es reconocido por cada metro dentro del alcance.Cuando un contador recibe este comando, entra en otro modo, en la que mantiene su receptor en forma continua. Una vez que todos los medidores se han establecido en un modo de escucha constante, el lector está listo para sondear cada metro. El modo de escucha constante es más probable determinada por una configuración de intervalos de tiempo en el lector que representa el tiempo que tarda cada metro de despertar en su baja por ciclo de modo de escucha.

    • Los problemas de lectura ráfagas secuenciales de imágenes, cada ráfaga que contiene el código de identificación del medidor particular que va a informar de su volumen de agua o los datos de flujo para el lector. A la recepción de su código único, el medidor transmite sus datos al lector. Todos los medidores de otros recibirán esta transmisión, pero el marco no contendrá sus códigos, por lo que seguirá manteniendo sus receptores hasta que éstos reconozcan su identidad. Después de que el lector confirma la recepción de un metro y las pantallas o almacena la información, cambia el número de identificación en su marco de transmisión y se inicia el proceso de la lectura de otro medidor.

    • Cada medidor mantiene su receptor en después de que se ha transmitido la información. Se vuelve a su periódico, el modo de bajo escucha de ciclo de trabajo ya sea después de que se ha ido para un intervalo predeterminado, sin recibir otro marco, con su identificación, o al recibir otro comando de difusión del lector diciéndole que vuelva a su punto más bajo ciclo de trabajo de modo.


Enercell es una marca registrada de la calidad del TRS, Inc. IAR Embedded Workbench es una marca registrada de IAR Systems AB. MaxQ es una marca registrada de Cypress Semiconductor, Inc. Panasonic es una marca registrada y marca de servicio registrada de Panasonic Corporation. Radio Shack es una marca registrada de Propiedades Technology, Inc. Windows es una marca registrada y marca de servicio registrada de Microsoft Corporation. Windows XP es una marca registrada y marca de servicio registrada de Microsoft Corporation.































Partes Relacionadas
MAX7032De bajo costo, basada en Crystal, programable, ASK / FSK Transceptor con fraccionada-N PLLMuestras gratuitas  
MAX7359De 2 hilos con interfaz de bajo EMI Llave de contacto Controlador / GPOMuestras gratuitas  
MAXQ610Microcontrolador 16-Bit con el módulo de infrarrojosMuestras gratuitas  

No hay comentarios:

Publicar un comentario