Witam!
Główne założenie tej części programu miało być takie, że program sprawdza zmienną w przerwaniu wywoływanym przez timer0 (co 1s) i jeżeli jest warunek spełniony to zwiększa odpowiednią zmienną co 1s.
Efekt jest taki, że program zawsze zwiększa zmienną!
Jaki błąd popełniłem, siedzę już nad tym 2 doby i zero postępu?
Drugie pytanie.
Blok danych (data) zajmuje 120b (93.8%), czy pamięć wolna jest wykorzystywana do odkładania instrukcji na stos czy do tego celu jest inna niedostępna pamieć?
Główne założenie tej części programu miało być takie, że program sprawdza zmienną w przerwaniu wywoływanym przez timer0 (co 1s) i jeżeli jest warunek spełniony to zwiększa odpowiednią zmienną co 1s.
#include <avr/io.h> // dostęp do rejestrów
#include <avr/interrupt.h> // funkcje sei(), cli()
#include <avr/iotn2313.h>
unsigned char volatile flagi;
SIGNAL(SIG_OVERFLOW1)
{
TCNT1 = 22336; // wartosc pocztatkowa timera
if(bit_is_set(flagi, 4))
{
czas_a++;
}
}
int main()
{
flagi = 0x00;
// konfiguracja timera, przerwania i uarta
while(1)
{}
}Efekt jest taki, że program zawsze zwiększa zmienną!
Jaki błąd popełniłem, siedzę już nad tym 2 doby i zero postępu?
Drugie pytanie.
Blok danych (data) zajmuje 120b (93.8%), czy pamięć wolna jest wykorzystywana do odkładania instrukcji na stos czy do tego celu jest inna niedostępna pamieć?
