Sommario:
- Passaggio 1: approfondimento
- Passaggio 2: inizializzazione della porta
- Passaggio 3: potenza ultra bassa
- Passaggio 4: TIMER
- Passaggio 5: modalità a basso consumo
- Passaggio 6: timer ISR
- Passaggio 7: interruzione hardware
- Passaggio 8: ISR-Reset/Pulsante a pressione
- Passaggio 9: CODICE
- Passaggio 10: codice di riferimento
Video: Contatore dei secondi MSP430: 10 passi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Accoglienza! Making of Seconds Counter: utilizzo di CCStudio 8 e MSP430F5529 per il progetto.
Linguaggio C per codificare il microcontrollore. Applicazione di modalità a basso consumo, timer e interruzioni. L'uscita viene visualizzata tramite 7 segmenti.
Passaggio 1: approfondimento
Cominciamo!
Inizializzare il timer del watchdog allo stato OFF utilizzando la password richiesta per il timer del watchdog (aiuta a tenere sotto controllo i loop infiniti, mantenendo il processore al sicuro).
#includere
/** * main.c */
int main (vuoto)
{
WDTCTL = WDTPW | WDTHOLD; // ferma il timer di sorveglianza
restituisce 0;
}
Passaggio 2: inizializzazione della porta
{
P3DIR=0xFF; // P3DIR=0x00;
P6DIR=0xFF;
P4DIR |=0x00;
P4REN |=0xFF;
P4OUT |=0xFF;
}
P3DIR |=0x00 ci dice che l'intera PORT-3 è inizializzata per ricevere input.
P3DIR |=0xFF ci dice che l'intera PORT-3 è inizializzata per fornire output.
P3DIR |=0x01 solo il pin P3.0 è inizializzato per l'uscita in PORT-3. Questo segue una mappatura della porta esadecimale.
P4REN |=0xFF, questo indica che i pin di PORT-4 hanno i loro resistori di pull up/down abilitati.
Per selezionarli tra Pull UP o Pull DOWN si usa l'istruzione P$OUT |=0xFF.
Se si usa 0xFF si configurano come resistori Pull UP e se 0x00 si configurano come Pull DOWN.
Passaggio 3: potenza ultra bassa
MSP430F5529 ci consente di ridurre la perdita di potenza dal processore. Questo è utile nelle applicazioni autonome.
Ciò richiede la dichiarazione di tutti i pin o le porte in uscita.
{
P7DIR |= 0xFF;
P6DIR |= 0xFF;
P5DIR |= 0xFF;
P4DIR |= 0xFF;
P3DIR |= 0xFF;
P2DIR |= 0xFF;
P1DIR |= 0xFF;
}
Passaggio 4: TIMER
Utilizzo del timer per la generazione del ritardo di un secondo. Questo utilizza SMCLK di 1 MHz, inoltre il timer funziona in modalità a basso consumo (nel passaggio successivo, dopo che il conteggio viene interrotto da LPM). Questo processo consente di risparmiare energia e carico sul processore
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
I valori sono 999, poiché richiede un altro conteggio per tornare a zero nel registro del timer.
Passaggio 5: modalità a basso consumo
_BIS_SR(LPM0_bit+GIE);
Ciò abilita l'abilitazione dell'interruzione generale (GIE) e mette la CPU su LPM0, dove MCLK che supporta la cpu è disattivato e SMCLK e ACLK vengono eseguiti che mantiene il timer in esecuzione. quindi possiamo vedere che la CPU è spenta, risparmiando energia.
Passaggio 6: timer ISR
#pragma vector=TIMER0_A0_VECTOR
_Interrupt void Timer_A (vuoto)
{
z++;
if(z>ritardo)
{
P3OUT=codice[x];
P6OUT=codice1[y];
x++;
se(x==10)
{
x=0;
y++;
}
se(y==6)
y=0;
z=0;
}
}
pragma vector è per la rappresentazione ISR in C embd.
code[x] e code1[y] sono gli array che contengono i valori di output per i due sette segmenti, per la visualizzazione del contatore di 60 secondi.
Passaggio 7: interruzione hardware
P2DIR=0x00;
P2REN=0x02;
P2OUT=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
Qui P2.1 è dichiarato come un interrupt hardware, se viene premuto il pulsante, il contatore si ripristina al valore.
il resto del programma è scritto all'interno dell'ISR di questo interrupt.
Passaggio 8: ISR-Reset/Pulsante a pressione
#pragma vector=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0; y=0;
P3OUT=codice[x];
P6OUT=codice1[y];
v++;
for(i=0;i
{
P1OUT |= BIT0; //P1.0 = attiva/disattiva
_delay_cycles(1048576);
P1OUT &=~BIT0; // P1.0 = attiva/disattiva
_delay_cycles(1048576);
}
Questo ISR azzera il contatore e tiene un conteggio di quante volte è stato premuto il resto.
(Qui la visualizzazione avviene tramite led toggle, può anche utilizzare un altro array e timer, per mostrare quei valori come output in 7 segmenti).
Passaggio 9: CODICE
#includere
#define delay 1000
char code={0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1={0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volatile senza segno int x=0, y=0, z=0;
volatile senza segno int v=0, i=0;
vuoto principale()
{
WDTCTL = WDTPW | WDTHOLD; // ferma il timer del watchdog
P7DIR |= 0xFF;
P7OUT |= 0x00;
P8DIR |= 0xFF;
P8OUT |= 0x00;
P4DIR |= 0xFF;
P4OUT |= 0x00;
P5DIR |= 0xFF;
P5OUT |= 0x00;
P1DIR=0xFF;
P3DIR=0xFF;
P6DIR=0xFF;
P2DIR=0x00;
P2REN=0x02;
P2OUT=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
_BIS_SR(LPM0_bit+GIE);
}
// Routine di servizio di interruzione del timer A0
#pragma vector=TIMER0_A0_VECTOR
_Interrupt void Timer_A (vuoto)
{
z++;
if(z>ritardo)
{
P3OUT=codice[x];
P6OUT=codice1[y];
x++;
se(x==10)
{
x=0;
y++;
}
se(y==6)
y=0;
z=0;
}
}
// Routine del servizio di interrupt hardware
#pragma vector=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0;
y=0;
P3OUT=codice[x];
P6OUT=codice1[y];
v++;
for(i=0;i
{ P1OUT |= BIT0; // P1.0 = attiva/disattiva
_delay_cycles(1048576);
P1OUT &=~BIT0; // P1.0 = attiva/disattiva
_delay_cycles(1048576);
}
}
Passaggio 10: codice di riferimento
Repository GitHub
Consigliato:
Smart Watchz con rilevamento dei sintomi della corona e registrazione dei dati: 10 passaggi
Smart Watchz con rilevamento dei sintomi della corona e registrazione dei dati: questo è uno smartwatch con rilevamento dei sintomi della corona che utilizza LM35 e accelerometro con registrazione dei dati sul server. Rtc viene utilizzato per mostrare l'ora e sincronizzarsi con il telefono e utilizzarlo per la registrazione dei dati. Esp32 è usato come un cervello con controller corteccia con Blue
Come realizzare Arduino fai da te con un timer di lavaggio di 30 secondi, STOP ALLA DIFFUSIONE DEL COVID: 8 passaggi
Come realizzare Arduino fai da te con timer di lavaggio da 30 secondi, STOP ALLA DIFFUSIONE DEL COVID: ciao
Contatore dei social media con ESP8266 e TFT: 10 passaggi
Contatore di social media con ESP8266 e TFT: questo istruibile ti mostrerà come creare un contatore di social media basato su ESP8266 e un TFT a colori per il montaggio a parete superiore. Questo contatore di social media visualizzerà le informazioni sul tuo account Facebook, Instagram e Youtube continuamente con successo
Clap Switch (40 battiti in 5 secondi): 4 passaggi (con immagini)
Clap Switch (40 Claps in 5 Second): Clap Switch ha la capacità di accendere/spegnere qualsiasi componente elettrico collegando l'uscita del circuito a un interruttore a relè. Qui faremo un applauso con pochi componenti con spiegazioni molto ben spiegate. Rispetto a tutti gli altri interruttori applausi
Elimina tutti i dati su un CD/DVD in 5 secondi o meno.: 3 passaggi
Elimina tutti i dati su un CD/DVD in 5 secondi o meno.: Elimina tutti i dati su un CD/DVD in 5 secondi o meno. Perché dovresti farlo:++ Distruggi i vecchi backup di alcuni anni++ Ricordati masterizzato il tempo speciale in camera da letto su DVD++Il tuo ex vuole indietro il CD/DVD.++DIVERTIMENTO CON AOL DISK!!!! LOL