Jestem w trakcie pisania programu na Atmegę8.
Mam zdefiniowane trzy przerwania:
Obecnie pierwsze przerwanie INT0 jest nieaktywne.
Początkowo chciałem w przerwaniu timera sprawdzać stan jednego z portów C i w zależności od jego stanu ustawiać wartość flagi 0/1 w programie głównym.
I tu ciekawa sprawa. Jeżeli port był w stanie niskim, to przy każdym wywołaniu przerwania na tym porcie pojawiał się na krótko wysoki stan, co widziałem na oscyloskopie jako krótki pik. Nie mam pojęcia dlaczego tak się działo (chętnie bym się dowiedział dlaczego).
Było to działanie niepożądane i poradziłem sobie z tym tak, że w programie głównym w zależności od stanu tego portu definiowałem zmienną volatile uint8_t enable_flag, której wartość sprawdzałem w przerwaniu. Obecnie już na tym porcie jest OK.
Ale mam inny problem.
Chciałbym przekazywać wartość zmiennej pomiar do programu głównego w czasie kiedy program jest uwięziony w pętli while (w czasie naciśnięcia przycisku).
Kiedy zwalniam przycisk wartość zmiennej pomiar jest uwzględniana w programie głównym i jest OK, ale nie wiem czy można spowodować aktualizację tej zmiennej do programu który jest uwięziony w pętli. W tym czasie w pętli jest tylko deklarowana wartość innego portu jako 1 lub 0.
Zastanawiam się nad tym jak to zrobić bo w czasie kiedy program jest uwięziony, przerwania muszą się wykonywać co widzę na oscyloskopie w postaci przebiegu na porcie PC4. Sądzę że także jest odczytywana wartość napięcia przez przetwornik, tylko jak ją przekazać do programu głównego?
Mam zdefiniowane trzy przerwania:
Kod: C / C++
Obecnie pierwsze przerwanie INT0 jest nieaktywne.
Początkowo chciałem w przerwaniu timera sprawdzać stan jednego z portów C i w zależności od jego stanu ustawiać wartość flagi 0/1 w programie głównym.
I tu ciekawa sprawa. Jeżeli port był w stanie niskim, to przy każdym wywołaniu przerwania na tym porcie pojawiał się na krótko wysoki stan, co widziałem na oscyloskopie jako krótki pik. Nie mam pojęcia dlaczego tak się działo (chętnie bym się dowiedział dlaczego).
Było to działanie niepożądane i poradziłem sobie z tym tak, że w programie głównym w zależności od stanu tego portu definiowałem zmienną volatile uint8_t enable_flag, której wartość sprawdzałem w przerwaniu. Obecnie już na tym porcie jest OK.
Ale mam inny problem.
Chciałbym przekazywać wartość zmiennej pomiar do programu głównego w czasie kiedy program jest uwięziony w pętli while (w czasie naciśnięcia przycisku).
Kiedy zwalniam przycisk wartość zmiennej pomiar jest uwzględniana w programie głównym i jest OK, ale nie wiem czy można spowodować aktualizację tej zmiennej do programu który jest uwięziony w pętli. W tym czasie w pętli jest tylko deklarowana wartość innego portu jako 1 lub 0.
Zastanawiam się nad tym jak to zrobić bo w czasie kiedy program jest uwięziony, przerwania muszą się wykonywać co widzę na oscyloskopie w postaci przebiegu na porcie PC4. Sądzę że także jest odczytywana wartość napięcia przez przetwornik, tylko jak ją przekazać do programu głównego?