Índice:
- Etapa 1: Insight
- Etapa 2: inicialização da porta
- Etapa 3: Ultra Low Power
- Etapa 4: TEMPORIZADOR
- Etapa 5: Modo de baixo consumo
- Etapa 6: ISR-Timer
- Etapa 7: interrupção de hardware
- Etapa 8: ISR- Botão Reset / Push
- Etapa 9: CODE
- Etapa 10: Código de Referência
Vídeo: Contador MSP430 segundos: 10 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Receber! Making of Seconds Counter: Usando CCStudio 8 e MSP430F5529 para o projeto.
Linguagem C para codificar o microcontrolador. Aplicando modos de baixa potência, temporizadores e interrupções. A saída é exibida por meio de 7 segmentos.
Etapa 1: Insight
Vamos começar!
Inicialize o watchdog timer para o estado OFF usando a senha necessária para o watchdog timer (ajuda a manter a verificação de loops infinitos, mantendo o processador seguro).
#incluir
/ ** * main.c * /
int main (vazio)
{
WDTCTL = WDTPW | WDTHOLD; // parar o cronômetro de watchdog
return 0;
}
Etapa 2: inicialização da porta
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 nos diz que toda a PORT-3 é inicializada para receber entradas.
P3DIR | = 0xFF nos diz que toda a PORT-3 é inicializada para fornecer saídas.
P3DIR | = 0x01 apenas o pino P3.0 é inicializado para saída em PORT-3. Isso segue um mapeamento de porta hexadecimal.
P4REN | = 0xFF, indica que os pinos da PORT-4 têm seus resistores pull up / down habilitados.
Para selecioná-los entre Pull UP ou Pull DOWN, a instrução P $ OUT | = 0xFF é usada.
Se 0xFF for usado, eles configuram como resistores Pull UP e se 0x00 eles configuram como Pull DOWN.
Etapa 3: Ultra Low Power
MSP430F5529 nos permite reduzir a perda de energia do processador. Isso é útil em aplicativos independentes.
Isso exige a declaração de todos os pinos ou portas para a saída.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Etapa 4: TEMPORIZADOR
Uso de temporizador para geração de atraso de um segundo. Este utiliza o SMCLK de 1MHz, também o temporizador roda no modo Low power (na próxima etapa, após sua contagem é interrompido a partir do LPM). Este processo economiza energia e carga no processador
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
O valor é 999, pois leva mais uma contagem para voltar a zero no registro do cronômetro.
Etapa 5: Modo de baixo consumo
_BIS_SR (LPM0_bits + GIE);
Isso habilita a Habilitação de interrupção geral (GIE) e coloca a CPU em LPM0, onde o MCLK que oferece suporte à CPU está desligado e o SMCLK e o ACLK são executados, o que mantém o cronômetro em execução. então podemos ver que a CPU está desligada, economizando energia.
Etapa 6: ISR-Timer
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
if (z> atraso)
{
P3OUT = código [x];
P6OUT = código1 [y];
x ++;
if (x == 10)
{
x = 0;
y ++;
}
if (y == 6)
y = 0;
z = 0;
}
}
O vetor pragma é para representação ISR em C embd.
code [x] e code1 [y] são as matrizes que contêm valores de saída para os dois sete segmentos, para exibir o contador de 60 segundos.
Etapa 7: interrupção de hardware
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Aqui P2.1 é declarado como uma interrupção de hardware, se o botão for pressionado, o contador zera para o valor.
o programa restante é escrito dentro do ISR desta interrupção.
Etapa 8: ISR- Botão Reset / Push
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = código [x];
P6OUT = código1 [y];
v ++;
para (i = 0; i
{
P1OUT | = BIT0; //P1.0 = alternar
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = alternar
_delay_cycles (1048576);
}
Este ISR zera o contador e mantém uma contagem de quantas vezes o resto foi pressionado.
(Aqui a exibição é feita via alternador de led, também pode usar outro array e temporizador, para mostrar esses valores como saída em 7 segmentos).
Etapa 9: CODE
#incluir
#define delay 1000
código char = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volátil sem sinal int x = 0, y = 0, z = 0;
volátil sem sinal int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // parar o cronômetro de 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_bits + GIE);
}
// Rotina de serviço de interrupção do temporizador A0
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
if (z> atraso)
{
P3OUT = código [x];
P6OUT = code1 [y];
x ++;
if (x == 10)
{
x = 0;
y ++;
}
if (y == 6)
y = 0;
z = 0;
}
}
// Rotina de serviço de interrupção de hardware
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = código [x];
P6OUT = code1 [y];
v ++;
para (i = 0; i
{P1OUT | = BIT0; // P1.0 = alternar
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = alternar
_delay_cycles (1048576);
}
}
Etapa 10: Código de Referência
Repositório GitHub
Recomendado:
Contador de visitantes usando 8051 e sensor infravermelho com LCD: 3 etapas
Contador de visitantes usando o 8051 e o sensor de infravermelho com LCD: Caros amigos, eu expliquei como fazer um contador de visitantes usando o 8051 e o sensor de infravermelho e o exibi no LCD. 8051 é um dos microcontroladores mais populares usados para fazer aplicações comerciais por hobby em todo o mundo. Eu fiz um vis
Como fazer o cronômetro de lavagem DIY Arduino de 30 segundos, PARE A PROPAGAÇÃO DE COVID: 8 etapas
Como fazer um Cronômetro de Lavagem de 30 Segundos Arduino DIY, PARE A PROPAGAÇÃO DE COVID: Olá
Temporizador de lavagem de 20 segundos para COVID-19: 6 etapas (com fotos)
20 Cronômetro de segunda mão para COVID-19: À medida que o COVID-19 se espalha, devemos nos proteger não apenas recolhendo menos e usando máscara facial, mas também lavando as mãos com mais frequência. Não é eficaz contra vírus se você não usar t lave bem as mãos. Como lavar as mãos corretamente? C
Clap Switch (40 aplausos em 5 segundos): 4 etapas (com imagens)
Clap Switch (40 aplausos em 5 segundos): Clap Switch tem a capacidade de LIGAR / DESLIGAR qualquer componente elétrico conectando a saída do circuito a um interruptor de relé. Aqui vamos fazer uma troca de palmas com poucos componentes e com explicações muito boas. Comparado com todos os outros interruptores de aplauso
Elimine todos os dados em um CD / DVD em 5 segundos ou menos: 3 etapas
Eliminar todos os dados de um CD / DVD em 5 segundos ou menos .: Eliminar todos os dados de um CD / DVD em 5 segundos ou menos. Por que você faria isso: ++ Destrua backups antigos de alguns anos ++ Lembre-se de você queimou o tempo especial do quarto em DVD ++ Seu Ex quer o CD / DVD de volta. ++ DIVERSÃO COM DISCO AOL !!!! lol