Ir ao conteúdo
  • Cadastre-se

Calcular numero de pulsos AN com Interrupção


cezar.opaleiro

Posts recomendados

Olá amigos!

Gostaria da ajuda de vocês!

Meu objetivo é contar o número de pulsos AN(analógicos) negativos na PORTA2.

Essa contagem seria:

Dentro de um espaço de 500ms conte o número de pulsos, após 500ms mostre quantos pulsos ocorreram.

Fiz usando interrupção, mas a amostragem no LCD tá lenta...alguém poderia me ajudar?? Ou sabe o motivo da amostragem ficar lenta?

No Proteus fica rápido, no projeto físico lento...

O código ta assim:


void interrupt()
{
counter++; // Incrementa valor de counter a cada Interrupção.

if(PORTA.f2 == 0)
{
set = 0;
}
if(set == 0)
{
pulso++;
set = 1;
}
INTCON = 0b00100000; // Seta T0IE (bit 5) e Limpa T0IF (bit 2).

}// interrupt



void Contagem(){

if(counter > 255)
{
IntToStr(pulso,AUX1); //converte de INT para STR
Lcd_out(1,4,"Pulsos");
Lcd_out(2,5,AUX1);
pulso = 0; //zera o pulso e counter para um novo ciclo
counter = 0;
}

}

void main()
{
CMCON = 0; //desabilita comparador
TRISA = 0b00000000; // RA7,6,5,4,3,2,1,0 nessa ordem
PORTA = 0b00000000; // RA7,6,5,4,3,2,1,0 nessa ordem
OPTION_REG = 0b10000010; // Atribui Prescaler de 1:8 ao TMR0.
TMR0 = 0; // Valor Inicial de TMR0
INTCON = 0b10100000; // Habilita Interrupção do TMR0, e seta os

Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

while(1)
{
Contagem();
}

Obrigado!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!