Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 7780|Respuesta: 0

Viaje Zigbee (4): Varios experimentos básicos importantes de CC2430 - interrupción del temporizador

[Copiar enlace]
Publicado en 30/10/2014 23:17:29 | | | |
1. Conexión entre los niveles superior e inferior

En el artículo anterior, aprendimos juntos sobre la implementación de interrupciones externas simples. Ahora que tenemos experiencia práctica con interrupciones, hablemos de las interrupciones de temporizador en esta sección. CC2430 tiene un total de 4 temporizadores, que se pueden dividir en 3 categorías: temporizador 1, temporizador 2, temporizador 3/4 (el uso de 3 y 4 es el mismo).

Como el autor también es nuevo en el CC2430 y prácticamente no tiene experiencia práctica en proyectos que impliquen temporizadores, no pretendo (ni puedo hacer nada) analizar el temporizador en profundidad. Este artículo solo ofrece una breve exploración experimental del uso del temporizador 1 en interrupciones de desbordamiento de conteo, y no menciona sus funciones de captura de entrada/comparación de salida/PWM. El temporizador 2 y el temporizador 3/4 son solo introducciones simples de funciones. Cuando las habilidades del autor alcancen cierto nivel de intensidad, estaré en la cima de la experiencia práctica de Zigbee para mejorar este ensayo.

2. Temporizador 1

El temporizador 1 es un temporizador de 16 bits con modulación de ancho de pulso/contador/tiempo. Dispone de 3 canales de captura y comparación de salida de entrada programables individualmente, cada uno de los cuales puede usarse como salida PWM o como tiempo de borde para capturar la señal de entrada (para información sobre qué es la comparación de captura/salida de entrada y cómo implementar la salida PWM, los lectores pueden consultar el manual chino CC2430).

Los temporizadores tienen un concepto muy importante:Modo de funcionamiento

Los modos de funcionamiento incluyen: Modo de operación libre (Carrera libre), modo de molde (Módulo) y Modo de Cuenta Positiva/Cuenta Atrás (arriba-abajo)。

A continuación se muestra un extracto del manual chino CC2430 para la introducción de los 3 modos:



Comparando los tres modos, se puede ver que el valor de desbordamiento del modo de operación libre es 0xFFFF invariable; Los otros dos modos permiten un control preciso del valor de desbordamiento del temporizador asignando un valor a T1CC0. Este experimento utiliza esta función para activar una interrupción cada 1 segundo mediante el temporizador a través de un T1CC0 específico, para controlar con precisión el intervalo de parpadeo de la luz LED a 1 segundos.

(1) Introducción al experimento

En el modo módulo del temporizador, el intervalo de parpadeo de la luz LED se controla con precisión por 1 s, es decir: 0,5 s brillantes → 0,5s oscuros → 0,5s brillantes → tenues 0,5 s ...... → 0,5 s de luz → 0,5s de oscuridad (es decir, el intervalo de tiempo de oscuro a claro es de 1s). La inversión luz/oscuridad se logra mediante interrupciones desbordadas.

(2) Diagrama de flujo del programa

(3) Cálculos relevantes

Como se mencionó antes, el estado de la luz LED es: brillante 0,5s → oscuro 0,5s → brillante 0,5s → tenue 0,5s ...... → 0,5s de luz → 0,5s de luz, y debe implementarse con interrupciones de desbordamiento, por lo que el periodo de desbordamiento del temporizador debe ser de 0,5 s. Para ello, es necesario calcular el valor correspondiente de desbordamiento (temporalmente establecido en N).

La frecuencia de reloj del sistema se selecciona como 32MHz, y la frecuencia de reloj dada es 16MHz por defecto (ambas están determinadas por registros de funciones especiales).CLKCONPara más detalles, consulte el manual chino CC2430).

Para el Cronómetro 1, ajusta su cruce de relojes a 128 divisiones.

En resumen, la lista es la siguiente:

Para encontrar N=62500, su hexadecimal es 0xF424, es decir, necesitas establecer T1CC0H=0xF4, T1CC0L=0x24 .

(4) Código fuente experimental y análisis/*
    Descripción del experimento: Experimento Timer Timer1, desbordamiento de contadores de temporizador, parpadeo LED1
*/

#include

#define lideró P1_0         
#define P1_1 LED2         
#define led3 P1_2         
#define led4 P1_3         

/*系统时钟初始化
-------------------------------------------------------*/
Vacíoxtal_init(Vacío)
{
  SUEÑO &= ~0x04;            //都上电
  mientras(! (SUEÑO &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Elige un oscilador de cristal de 32MHz
  SUEÑO |=0x04;
}

/*LED初始化
-------------------------------------------------------*/
Vacíoled_init(Vacío)
{
  P1SEL =0x00;            P1 es el puerto normal de E/S
  P1DIR |=0x0F;            P1.0 P1.1 P1.2 P1.3 salida
  
  liderado1 =1;                  //关闭所有LED
  Liderado2 =1;
  liderado3 =1;
  Liderado4 =1;
}

/*T1初始化
-------------------------------------------------------*/
Vacíotimer1_init(Vacío)
{
  EA=1;            //开总中断
  T1IE=1;           //开T1中断
  OVFIM=1;         //开T1溢出中断
  
  T1CC0L=0x24;      //溢出值低8位
  T1CC0H=0xF4;      //溢出值高8位
  
  T1CTL =0x0e;     128 crossover; modo módulo (0x0000->T1CC0); Empieza a correr;
  T1IF=0;           Despejar el signo de interrupción  
}

/*主函数
-------------------------------------------------------*/
Vacíomain(Vacío)
{
  xtal_init();
  led_init();
  timer1_init();

  mientras(1);            //等待溢出中断
}

/*T1终端服务子程序
-------------------------------------------------------*/
#pragma vector=T1_VECTOR
__interruptVacíoT1_ISR(Vacío)
{
  EA=0;               //关中断
  
  liderado1 = !liderado1;      //LED灯反转

  EA=1;               //开中断
  
  T1CTL &= ~0x10;     //清中断标志
}

Vale, compila el programa y depura en línea, el LED1 de la placa de desarrollo parpadea según lo previsto, y parece que el intervalo de parpadeo es de unos 1 segundo. Pero esto no es suficiente para demostrar el éxito del experimento; si el intervalo puede determinarse estrictamente como 1s, será perfecto~ Así que encendí el reloj de WIN 7 (haz clic en la hora en el lado derecho de la barra de tareas). Mientras miraba la segunda mano, observó el parpadeo de LED1 por el rabillo del ojo. El resultado: en dos minutos, el ritmo de ambos es básicamente el mismo (esta precisión es tolerable~). A estas alturas, se puede decir que el experimento está prácticamente terminado, jeje~

3. Temporizador 2

Cronómetro 2 también se llamaTemporizador MAC, está diseñado específicamente para soportar el protocolo de seguimiento de eventos en IEEE 802.15.4 MAC. El temporizador tiene un contador de desbordamiento de 8 dígitos que puede utilizarse para registrar el número de ciclos ocurridos; Hay un registro de captura de 16 bits que registra el momento exacto en que empieza a recibir/enviar una trama o el momento exacto en que se completa la transmisión. También contiene un registro de comparación de salida de 16 bits que genera varias señales de comandos (inicio de aceptación, inicio de envío, etc.) al módulo inalámbrico en un momento específico.

4. Temporizador 3/4

El temporizador 3/4 es un temporizador de 8 bits con función de temporizador/contador/PWM. T3/T4 tiene 2 canales de comparación de salida, cada uno de los cuales puede usarse como salida PWM.

5. Conclusión

Esta sección aprende principalmente el método de la interrupción de desbordamiento de conteo del temporizador 1, y realiza el control preciso del intervalo de parpadeo de la luz LED de 1s. Solo unos cuantos temporizadores más son un trazo, y volveré a añadirlos más adelante. En la siguiente sección, presentaremos la comunicación por puerto serie CC2430.






Anterior:Zigbee Journey (3): Varios experimentos básicos importantes de CC2430 - interrupción externa
Próximo:Zigbee Journey (5): Varios experimentos básicos importantes de CC2430 - comunicación serial
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com