架构师_程序员_码农网

N Recupera la password
Registrazione

QQ登录

Un solo passo per iniziare

Ricerca
架构师_程序员_码农网 "架构师 ' 管理专区&Area Gestione ' Reclami e Suggerimenti ' 回收站 ' 【转】Zigbee之旅(四):几个重要的CC2430基础实验- . - ...
Vista:5109|Risposta: 0
打印 上一主题 下一主题

[Tradurre] Viaggio Zigbee (IV): Alcuni importanti esperimenti di base del CC2430 - interrupt del timer

[Copia link]
S 跳转到指定楼层
al proprietario dell'edificio
发表于 2014-10-30 23:17:29|只看该作者回帖奖励 | Scorri all'indietro|Modalità di lettura
I. Continuazione dell'articolo precedente

  Nella sezione precedente abbiamo appreso insieme l'implementazione di semplici interrupt esterni. Dopo aver fatto esperienza pratica con gli interrupt, in questa sezione parleremo degli interrupt del timer.Il CC2430 dispone di 4 timer, che possono essere suddivisi in 3 categorie: Timer1, Timer2, Timer3/4 (l'uso del 3 e del 4 è lo stesso).

  Dal momento che l'autore ha appena toccato il CC2430, il progetto che coinvolge l'esperienza del timer è fondamentalmente zero, quindi non ho intenzione di (e non posso aiutare) l'analisi approfondita del timer. Questo articolo si occupa solo dell'utilizzo dell'interrupt di overflow del conteggio del timer 1 per fare una semplice esplorazione sperimentale, mentre la funzione di cattura degli ingressi/confronto delle uscite/PWM viene omessa. Anche i timer 2 e 3/4 sono introdotti solo brevemente. In attesa che il potere dell'autore raggiunga un certo livello di fuoco, e poi stare all'altezza dell'esperienza di combattimento Zigbee per migliorare questo saggio.

Timer 1

  Il Timer1 è un timer a 16 bit con funzioni di timer/counter/modulazione di larghezza d'impulso. Dispone di tre canali di cattura/confronto degli ingressi programmabili individualmente, ciascuno dei quali può essere utilizzato come uscita PWM o per catturare il tempo del bordo del segnale di ingresso (per ulteriori informazioni su cosa sia la cattura/confronto degli ingressi e su come implementare le uscite PWM, i lettori possono fare riferimento al manuale cinese del CC2430).

  Il timer ha un concetto molto importante: la modalità di funzionamento.

  Le modalità di funzionamento comprendono: free-running, modulo e up-down.

  Di seguito viene riportata l'introduzione delle tre modalità dal manuale cinese del CC2430:



  Confrontando le tre modalità, si può notare che: il valore di overflow della modalità free-running è 0xFFFF e non è modificabile; mentre le altre due modalità possono essere controllate con precisione assegnando un valore a T1CC0 per controllare con precisione il valore di overflow del timer. Questo esperimento sfrutta questa caratteristica per far sì che il timer attivi un interrupt ogni 1s attraverso lo specifico T1CC0, in modo da controllare con precisione l'intervallo di lampeggio del LED di 1s.

(1) Introduzione all'esperimento

  Nella modalità modulo del timer, l'intervallo di lampeggiamento del LED è controllato con precisione a 1s, ovvero: luce 0,5s → buio 0,5s → luce 0,5s → buio 0,5s ...... → luce 0,5s → buio 0,5s (cioè il momento di transizione da buio a luce è 1s). L'inversione luce/buio viene realizzata tramite un interrupt di overflow.

(2) Diagramma di flusso del programma

(3) Calcoli correlati

  Come già detto, lo stato del LED è: luminoso 0,5s → scuro 0,5s → luminoso 0,5s → scuro 0,5s ...... → chiaro 0,5s → scuro 0,5s, e devono essere raggiunti con l'interrupt di overflow, quindi il periodo di overflow del temporizzatore deve essere di 0,5s. A tal fine, è necessario calcolare il valore di overflow corrispondente (temporaneamente impostato su N).

  La frequenza di clock del sistema è selezionata a 32 MHz e la frequenza di clock fornita al timer è di 16 MHz per impostazione predefinita (entrambe sono configurate dal registro speciale CLKCON, disponibile nel manuale cinese del CC2430).

  Per il timer 1, impostare la frequenza di clock a 128 divisioni.

  In sintesi, la formula può essere la seguente:

2011022120560133.jpg
c

  Scopri N = 62500, il suo esadecimale è 0xF424, cioè, è necessario impostare T1CC0H = 0xF4, T1CC0L = 0x24 che è .








(
4) codice sorgente sperimentale e analisi/* Descrizione dell' esperimento: esperimento Timer1, overflow del conteggio del timer, lampeggiamento del LED1 */ #include #define led1 P1_0 # define led2 P1_1 #define led3 P1_0 #define led3 P1_1

1 #define led3 P1_2 #define led4 P1_3 &





n bsp; /* inizializzazione del clock di sistema-------------------------------------------------------*/void xtal_init( void ) { SLEEP &=~0x04;&
nbsp; // entrambi si accendonomentre (!
(SLEEP & 0x40 )); // oscillatore a cristalli acceso e stabile CLKCON &=~0x47; &







nbsp; //seleziona l'oscillatore a cristallo a 32 MHz SLEEP |=0x04; }/*Inizializzazione dei LED-------------------------------------------------------*/void led_init( void ) { &
nbsp; P1SEL = 0x00; //P1 è una normale porta di I/O P1DIR |=0x0F; &

nbsp; //P1.0 P1.1 P1.2 P1.3 uscite led1 =1; &






nbsp; //Spegni tutti i LED led2 =1; led3 =1; led4 =1; }/*Inizializzazione del T1---------------------------



- ---------------------------*/void timer1_init( void ) {EA=1; // attiva l'interrupt totale &
nbsp; T1IE=1; // attiva l'interrupt T1OVFIM=1; // attiva l'overflow T1



i nterruptT1CC0L=0x24; /valore di overflow basso 8 bit T1CC0H=0xF4; /valore di overflow alto 8 bit &

nbsp; T1CTL =0x0e; //128 divisioni; modalità modulo (0x0000->T1CC0); avvio dell'esecuzione;T1IF=0; &




nbsp; // cancellare il flag di interrupt }/* funzione principale-------------------------------------------------------*/void main( void





) { xtal_init(); led_init(); timer1_init();while ( 1 ); &





nbsp; //attendere l'interrupt per overflow }/*Subroutine di servizio del terminale T1-------------------------------------------------------*/#pragma vector=T1_VECTOR __interrupt



v oid T1_ISR( void ) {EA=0; //off interrupt led1 = !


led1; //LED invertitiEA=1; //On interrupt &nbsp

; T1CTL &=~0x10; // cancella il flag di interruzione }

  OK, compilare il programma e il debug online, la scheda di sviluppo sul LED1 lampeggia come previsto, sentire l'intervallo lampeggiante di circa 1s. Ma questo non è sufficiente a dimostrare il successo dell'esperimento, se è possibile determinare rigorosamente l'intervallo di 1s sarebbe perfetto ~ così ho aperto l'orologio WIN 7 (fare clic sul lato destro del tempo barra delle applicazioni può essere). Mentre guardavo la lancetta dei secondi, ho dato un'occhiata al LED1 lampeggiante con la coda dell'occhio. Il risultato è: in due minuti, il ritmo dei due è sostanzialmente identico (questa precisione può essere tollerata ~). A questo punto, l'esperimento può dirsi sostanzialmente completato, hehehe~

Terzo, Timer 2

  Il timer 2, noto anche come timer MAC, è stato progettato appositamente per supportare il protocollo di tracciamento degli eventi nel MAC IEEE 802.15.4. Il timer è dotato di un overbooking a 8 bit e di un'uscita di sicurezza a 8 bit. Il timer ha un contatore di overflow a 8 bit che può essere utilizzato per registrare il numero di cicli che si sono verificati; ha un registro di cattura a 16 bit che viene utilizzato per registrare l'ora esatta in cui viene ricevuto/trasmesso un delimitatore di inizio frame o l'ora esatta in cui viene completata una trasmissione; contiene inoltre un registro di confronto di uscita a 16 bit che viene utilizzato per generare vari segnali di comunicazione selettivi di comando al modulo wireless in un momento specifico (inizio ricezione, inizio trasmissione, ecc.).

Timer 3/4

  Il timer 3/4 è un timer a 8 bit con funzioni di timer/counter/PWM. t3/t4 dispone di due canali di confronto in uscita, ciascuno dei quali può essere utilizzato come uscita PWM.

V. Conclusione

  In questa sezione abbiamo appreso il metodo di conteggio dell'interrupt di overflow del timer 1 e abbiamo ottenuto il controllo preciso dell'intervallo di lampeggiamento del LED di 1 s. Ci limiteremo a sfiorare gli altri timer, per poi tornare ad aggiungerli in seguito. Nella prossima sezione introdurremo la comunicazione con la porta seriale del CC2430.






Precedente: [Ri]Viaggio Zigbee (III): alcuni importanti esperimenti di base CC2430 - Interruzioni esterne
Successiva: [Ri-modificato] Viaggio Zigbee (V): Alcuni importanti esperimenti di base CC2430 - Comunicazione seriale
Rete di coltivatori di codici, pubblicata solo nel processo di pratica, ha incontrato difficoltà tecniche, non fuorviare gli altri.
Devi effettuare il login prima di poter postare Log in | Registrati

Q uesta versione delle regole integrali


DISCLAIMER: Tutti i software, i materiali di programmazione o gli articoli pubblicati da Code Farmer sono limitati all'uso per scopi di apprendimento e ricerca; i suddetti contenuti non devono essere utilizzati per scopi commerciali o illegali, altrimenti tutte le conseguenze saranno a carico degli utenti stessi. Le informazioni di questo sito provengono dalla rete, la disputa sul copyright non ha nulla a che fare con questo sito. È necessario rimuovere completamente il contenuto di cui sopra dal proprio computer entro 24 ore dal download. Se vi piace il programma, vi preghiamo di sostenere il software autentico, di acquistare la registrazione e di ottenere un servizio autentico migliore. In caso di violazione, si prega di contattarci via e-mail per risolvere il problema.

Posta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:50

Risposta rapidaTorna all'inizioTorna all'elenco