Witam.
Tak jak w temacie podłączyłem Atmege8.Pod PB0 podpiąłem LED,a do PC0, PC1 i PC2 przyciski zwierające wejście do masy. Układ ma generować miganie diody w następujący sposób:
-wciskam PC2 uruchamia się generowanie częstotliwości co widać na diodzie LED
-za pomocą przycisków PC0 i PC1 zwiększam lub zmniejszam częstotliwość migania diody. Kod napisany z użyciem samego timera i generowania sygnału co określony czas działa poprawnie. Po użyciu do tego celu przerwań nic się nie dzieje. Poniżej zamieszczam kod programu.Co tu jest nie tak??Program kompiluje się poprawnie i programuje Atmege,ale coś nie działa.
Proszę pamiętać o używaniu znaczników code. - arnoldziq
Tak jak w temacie podłączyłem Atmege8.Pod PB0 podpiąłem LED,a do PC0, PC1 i PC2 przyciski zwierające wejście do masy. Układ ma generować miganie diody w następujący sposób:
-wciskam PC2 uruchamia się generowanie częstotliwości co widać na diodzie LED
-za pomocą przycisków PC0 i PC1 zwiększam lub zmniejszam częstotliwość migania diody. Kod napisany z użyciem samego timera i generowania sygnału co określony czas działa poprawnie. Po użyciu do tego celu przerwań nic się nie dzieje. Poniżej zamieszczam kod programu.Co tu jest nie tak??Program kompiluje się poprawnie i programuje Atmege,ale coś nie działa.
#include <avr/io.h>
#include <avr/iom8.h>
#include <util/delay.h>
int a=65000, b=0 ;
ISR(TIMER1_OVF_vect)
{
PORTB ^= (1 << 0); // Zmień stan diody LED
TCNT1 = 65536-a; // inicjuje wartość timera
}
int main (void)
{
DDRC = 0x00; // Ustawienie bitu jako wejścia
PORTC = 0xFF;//podciagniecie do plusa zasilania
DDRB = 0xFF; //port B jako wyjście
TCCR1A=0;
TCCR1B |= (1 << CS10); // Ustawienie timera
TIMSK = (1 << TOIE1);
SREG=0x80;
while (1)
{
if(!(PINC &0x04))//jesli wcisniety pc2 to zwieksza b o jeden
{
b+=1;
_delay_ms(30);
}
if(b>0)//jesli b jest wieksze od 0 to zaczyna generowac czestotliwosc
{
if(!(PINC &0x02)) //jesli wcisniety pc1 to..
{
a+=1000;
_delay_ms(30);
}
if(!(PINC &0x01)) //jesli wcisniety pc0 to..
{
a-=1000;//zmniejsz a o 1000
_delay_ms(30);
}
}
}
}Proszę pamiętać o używaniu znaczników code. - arnoldziq