TinyOS interrumpe el manejo

2

Estoy trabajando en un proyecto de sensores que utiliza TelosB basado en CC2420 y MSP430F1611 ejecutando TinyOS.

El objetivo del proyecto es medir la distancia entre dos dispositivos. Estaba pensando en medir el tiempo que necesita una señal para ir de un dispositivo a otro y regresar. Para tener algunos valores precisos, necesito encontrar el momento exacto en que comienza la transmisión y comienza la recuperación. Creo que esto se puede hacer activando una interrupción en el pin SFD (que cambia su estado al inicio de la transmisión, al final de la transmisión, al inicio de la recepción y al final de la recepción).

Utilizo el componente componente (HplCC2420InterruptsC) con la interfaz CaptureSFD que devuelve el timp del cambio de SFD pero la precisión es solo en el temporizador de 32Khz:

async event void CaptureSFD.captured(uint16_t time)

este es el evento activado.

Necesito microsegundos, por eso busco una manera de activar una interrupción, así puedo guardar un valor de tiempo en microsegundos (el evento de la interfaz anterior se activa de forma asíncrona por lo que la diferencia de tiempo es demasiado grande).

Entonces, ¿cómo puedo activar en este sistema (TINYOS) una interrupción sincrónica cada vez que el pin SFD cambia el valor (1 o 0)?

    
pregunta user20698

1 respuesta

1

Parece que tiene un enlace de radio y transmite A a B, luego B a A y desea medir el tiempo de "envío y devolución". Si me equivoco, ignora mis divagaciones.

Si los dos dispositivos están a una distancia de 30 m, una onda de radio tardará unos 100 segundos en cubrir esa distancia. Su transmisión (incluido el preámbulo y algunos bytes, digamos 25 bits en total) tendrá una longitud de aproximadamente 100useg en 250 kbpersec.

El "circuito" que recibe inicialmente la primera transmisión no se "sincronizará" con la transmisión y, por lo tanto, no estará listo para ello y (eventualmente) se alineará con el preámbulo transmitido en varios usuarios +/- varios más usec.

Desde aquí, debería ser obvio para usted que no funcionará con una resolución decente. Tal vez, si quiere saber si la distancia entre las unidades es en millas, podría funcionar.

Letra pequeña: no he visto lo buenos que son los zigbees en la transmisión y recepción de datos, así que no critique si lo he tergiversado suponiendo que necesita algún tipo de preámbulo.

EDITAR: esta edición considera la posibilidad de que si promedia miles de transmisiones hacia y desde el dispositivo de destino, podría construir un "número" que podría tener una mejor resolución que unos pocos microsegundos.

    
respondido por el Andy aka

Lea otras preguntas en las etiquetas