Estoy trabajando en un proyecto de sensores que utiliza TelosB basado en CC2420 y MSP430F1611 ejecutando TinyOS . Y quiero marcar la hora de cada paquete entrante, cuyo tiempo de recepción se indica mediante el aumento del pin SFD de CC2420. El pin SFD de CC2420 está conectado a P4.1 / TB1 de MSP430F1611 como se ve en esquemático . Una forma sencilla es almacenar las marcas de tiempo en búfer: siempre que se capture un flanco ascendente SFD (por ejemplo, por el canal 1 de TimerB), almacene la marca de tiempo capturada en una cola. Cuando cada paquete se lee desde RXFIFO, se desalinea y se asocia con una marca de tiempo. Esto es realmente lo que hace el controlador de radio predeterminado en TinyOS. Hay varios problemas con este enfoque.
(1) Antes de que una marca de tiempo capturada se coloque en la cola, otro paquete llega y activa un borde ascendente de SFD, sobrescribiendo la marca de tiempo anterior. No hay una marca de tiempo para el paquete correspondiente. Lo que es peor, se desconoce qué marca de tiempo restante corresponde al paquete recibido. La asignación del paquete y la marca de tiempo está desordenada.
(2) Algunos paquetes son descartados por CC2420 (por ejemplo, no pasan el reconocimiento de dirección) y no se colocan en RXFIFO. Sin embargo, todavía genera SFD alza. No hay ningún paquete para la marca de tiempo correspondiente. De nuevo, el mapeo es desordenado.
¿Alguien puede, por favor, darme una pista sobre cómo superar estos dos problemas y los paquetes de marca de tiempo correctamente, especialmente bajo una carga pesada? Mi requerimiento puede ser relajado para no marcar la hora de todos los paquetes correctamente, sino una fracción de ellos. Su ayuda será sinceramente apreciada.