'A' jest wyświetlane poza ifem, jedynka gdy program znajduje się w ifie. Nie wiem jak to zinterpretować ale wydaje mi się, że program nie powinien tak często wchodzić w tego ifa. Układ taktowany jest kwarcem 16MHz czyli cykl zegarowy trwa mniej niż 1/10 us.
No chyba, że problem jest w ustawianiu flagi i nie ustawiłem jej jak założyłem na 50ms.
Ustawienia timera:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
F_CPU = 16Mhz, preskaler = 32, czyli zliczamy impulsy co 2us. Jest to licznik 8bit czyli przerwanie nastąpi co 510us.
Natomiast w przerwaniu mamy:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Każde przerwanie inkrementuje licznik, po 98 przerwaniach (0,51ms*98 w przybliżeniu daje 50ms) ustawiamy flagę.
Dokonałem paru zmian w tym co zaproponował atmel (ze względu na kompatybilność z kompilatorem)
w oryginaly jest:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
U mnie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oraz
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
zamnienilem na
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czy ktoś może wyjaśnić mi dlaczego program ustawia mi wartość flagi na TRUE tak często?