Witam.
Staram się zrobić program który będzie reagował na wyzwalanie poprzez przycisk (w przyszłości klaskanie). Wejście, do którego podłączony jest przycisk to Port C na wejściu 0x01.
Cały problem jest następujący:
- gdy na wejściu podany jest sygnał, zmienna Licznik zwiększa się o jeden.
- gdy zmienna jest równa 1, to następuje włączenie timera z prescalerem, który odmierza czas 1 sekundy, w trakcie której gdy podamy drugi raz na wejście sygnał zostanie dodana kolejna jedynka.
- gdy licznik jest rowny 2 zmien stan bitu na wyjściu.
Program wygląda nastepująco: co robię źle?
P.S.
Dopiero zaczynam przygodę z mikrokontrolerami. Staram się jakoś ugryźć te timery. Myślałem nad zrobieniem tego na przerwaniach, ale zbytnio nie wiem narazie jak sie do tego zabrać.
Za wszelkie sugestie dziękuję
Pozdrawiam.
Staram się zrobić program który będzie reagował na wyzwalanie poprzez przycisk (w przyszłości klaskanie). Wejście, do którego podłączony jest przycisk to Port C na wejściu 0x01.
Cały problem jest następujący:
- gdy na wejściu podany jest sygnał, zmienna Licznik zwiększa się o jeden.
- gdy zmienna jest równa 1, to następuje włączenie timera z prescalerem, który odmierza czas 1 sekundy, w trakcie której gdy podamy drugi raz na wejście sygnał zostanie dodana kolejna jedynka.
- gdy licznik jest rowny 2 zmien stan bitu na wyjściu.
Program wygląda nastepująco: co robię źle?
#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
DDRB=0x01; //ustawienie pinu 0 portu B na wyjście
DDRC=0x00; //wejscie klaskacza z portu C
PORTC=0x01;
TCCR0 |= ((1 << CS00) | (1 << CS01));
unsigned char licznik = 0;
while(1)
{
if((PINC & 0x01)&(licznik==0))
{
licznik++;
}
_delay_ms(80);
if (licznik == 1)
{
TCNT0=0x00;
if(TCNT0 <= 15625)
{
if ((PINC & 0x01)&(licznik==1))
{
licznik++;
}
}
}
if (licznik == 2)
{
PORTB ^=0x01;
}
}
}
P.S.
Dopiero zaczynam przygodę z mikrokontrolerami. Staram się jakoś ugryźć te timery. Myślałem nad zrobieniem tego na przerwaniach, ale zbytnio nie wiem narazie jak sie do tego zabrać.
Za wszelkie sugestie dziękuję
Pozdrawiam.