Taula de continguts:
- Pas 1: Insight
- Pas 2: inicialització del port
- Pas 3: consum extremadament baix
- Pas 4: TEMPORITZADOR
- Pas 5: mode de consum baix
- Pas 6: temporitzador ISR
- Pas 7: interrupció del maquinari
- Pas 8: ISR: botó de reinici / pulsació
- Pas 9: CODI
- Pas 10: Codi de referència
Vídeo: Comptador de segons de MSP430: 10 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Benvingut! Comptador de segons: utilitzant CCStudio 8 i MSP430F5529 per al projecte.
Llenguatge C per codificar el microcontrolador. Aplicació de modes de baix consum, temporitzadors i interrupcions. La sortida es visualitza mitjançant 7 segments.
Pas 1: Insight
Anem a començar!
Inicialitzeu el temporitzador de vigilància a l’estat DESACTIVAT mitjançant la contrasenya necessària per al temporitzador de vigilància (ajuda a controlar els bucles infinits, mantenint el processador segur).
#incloure
/ ** * main.c * /
int main (buit)
{
WDTCTL = WDTPW | WDTHOLD; // atura el temporitzador del gos de vigilància
retorn 0;
}
Pas 2: inicialització del port
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 ens indica que tot el PORT-3 s’inicialitza per prendre entrades.
P3DIR | = 0xFF ens indica que tot el PORT-3 s’inicialitza per donar sortides.
P3DIR | = 0x01 només s’inicialitza el pin P3.0 per sortir a PORT-3. Això segueix un mapatge de ports hexadecimals.
P4REN | = 0xFF, això indica que els pins de PORT-4 tenen habilitats les seves resistències de pujada / baixada.
Per seleccionar-los entre Pull UP o Pull DOWN, s'utilitza la instrucció P $ OUT | = 0xFF.
Si s’utilitza 0xFF es configuren com a resistències Pull UP i si 0x00 es configuren com Pull DOWN.
Pas 3: consum extremadament baix
MSP430F5529 ens permet reduir la pèrdua d'energia del processador. Això és útil en aplicacions independents.
Això requereix la declaració de tots els pins o ports a la sortida.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Pas 4: TEMPORITZADOR
Ús del temporitzador per a la generació de retard d'un segon. Utilitza l’SMCLK d’1 MHz, també el temporitzador s’executa en mode de baixa consum (al següent pas, després del seu recompte, s’interromp des de LPM). Aquest procés estalvia energia i càrrega al processador
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Els valors són 999, ja que es necessita un recompte més per tornar a zero al registre del temporitzador.
Pas 5: mode de consum baix
_BIS_SR (LPM0_bits + GIE);
Això habilita l’activació d’interrupcions generals (GIE) i posa la CPU a LPM0, on el MCLK que admet la CPU està desactivat i s’executen SMCLK i ACLK que mantenen el temporitzador en funcionament. de manera que podem veure que la CPU està apagada, allà estalviant energia.
Pas 6: temporitzador ISR
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (buit)
{
z ++;
if (z> delay)
{
P3OUT = codi [x];
P6OUT = codi1 [y];
x ++;
si (x == 10)
{
x = 0;
y ++;
}
if (y == 6)
y = 0;
z = 0;
}
}
el vector pragma és per a la representació ISR en C embd.
code [x] i code1 [y] són les matrius que contenen valors de sortida per als dos set segments, per mostrar un comptador de 60 segons.
Pas 7: interrupció del maquinari
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Aquí es declara P2.1 com a interrupció de maquinari, si es prem el botó, el comptador es restablirà al valor.
el programa restant s'escriu dins de la ISR d'aquesta interrupció.
Pas 8: ISR: botó de reinici / pulsació
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (buit)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = codi [x];
P6OUT = codi1 [y];
v ++;
per a (i = 0; i
{
P1OUT | = BIT0; //P1.0 = commuta
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = commuta
_delay_cycles (1048576);
}
Aquest ISR restableix el comptador i fa un recompte de quantes vegades es va prémer la resta.
(Aquí es fa la visualització mitjançant led commutació, també es pot utilitzar una altra matriu i temporitzador, per mostrar aquests valors com a sortida en 7 segments).
Pas 9: CODI
#incloure
#define delay 1000
codi char = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volàtil sense signar int x = 0, y = 0, z = 0;
volàtil sense signar int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // atura el temporitzador del gos de vigilància
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_bits + GIE);
}
// Rutina de servei d’interrupció del temporitzador A0
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (buit)
{
z ++;
if (z> delay)
{
P3OUT = codi [x];
P6OUT = codi1 [y];
x ++;
si (x == 10)
{
x = 0;
y ++;
}
if (y == 6)
y = 0;
z = 0;
}
}
// Rutina de servei d’interrupció de maquinari
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (buit)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = codi [x];
P6OUT = codi1 [y];
v ++;
per a (i = 0; i
{P1OUT | = BIT0; // P1.0 = commuta
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = commuta
_delay_cycles (1048576);
}
}
Pas 10: Codi de referència
Dipòsit de GitHub
Recomanat:
Com fer un comptador de passos ?: 3 passos (amb imatges)
Com fer un comptador de passos ?: Jo solia tenir un bon rendiment en molts esports: caminar, córrer, anar en bicicleta, jugar a bàdminton, etc. M’encanta viatjar poc després. Bé, mireu el meu ventre corpulent … Bé, de totes maneres, decideixo tornar a començar a fer exercici. Quin equip he de preparar?
Com fer un bricolatge Arduino temporitzador de rentat de 30 segons, ATURAR LA DIFUSIÓ DEL CÀVID: 8 passos
Com fer un bricolatge Arduino temporitzador de rentat de 30 segons, PAREU de la propagació del còvid: hola
Feu un sensor de porta similar a 2GIG per uns $ 4 segons el volum de compra: 6 passos
Feu un sensor de porta similar a 2GIG per aproximadament $ 4 segons el volum de compra: aquesta guia us mostrarà el procés que podeu seguir per crear el vostre propi sensor de porta de seguretat compatible, que encara sembla elegant i té un cost molt baix
Interruptor de claus (40 claus en 5 segons): 4 passos (amb imatges)
Clap Switch (40 Claps en 5 segons): Clap Switch té la capacitat d’encendre / apagar qualsevol component elèctric connectant la sortida del circuit a un commutador de relé. Aquí farem un interruptor de claus amb pocs components amb molt bones explicacions. En comparació amb tots els altres clap switch
Mata totes les dades d'un CD / DVD en 5 segons o menys: 3 passos
Mata totes les dades d’un CD / DVD en 5 segons o menys: mata totes les dades d’un CD / DVD en 5 segons o menys. Per què voldries fer això: ++ Destrueix les còpies de seguretat antigues d’uns anys ha cremat el temps especial del dormitori a DVD ++ El vostre ex vol que el CD / DVD torni. ++ DIVERTIR-SE AMB AOL DISK !!!! lol