mirekk36 napisał(a):
Wojtek001 napisał(a):
Te zmienne globalne (static)
zmienne te (w przerwaniu) opatrzone specyfikatorem static nie są zmiennymi globalnymi tylko lokalnymi (chociaż tworzone są w obszarze zmiennych globalnych i dzięki temu inicjalizowane są zerem) a to jest różnica spora. Bo widoczne są TYLKO w ramach procedury obsługi przerwania.
A to powoduje, że tak jak wspominał wyżej Anty - w ogóle nie ma tu zastosowania specyfikator volatile
Rzeczywiście, "sprzężenie zwrotne" podziałało
Po prostu nie pomyślałem ze autor zastosował jakąś dziwną metodę z przepisywaniem do innej zmiennej (i odruchowo napisałem o tamtych zmiennych), i właśnie chodziło o te inne zmienne jak napisano w poście wyżej.
------------------------ [ Dodano po: 14 minutach ]Oprócz tego co napisał Krauser pętla while w której robisz multipleks jest trochę dziwnie napisana (to nie jest twój aktualny problem ale kolejny jeśli się nie mylę):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
IMHO to nie będzie działać przy innych cyfrach .
Co to jest za zapis?
PORTC = (~ PORTC) | jednostki_sekund;
powinno być:
PORTC = 0 | jednostki_sekund;
Zwróć uwagę że za pierwszym razem działa ci to dobrze bo masz przecież w PORTC na poczatku 0xff więc ~(oxff) to to samo co 0 ale przecież w PORTC może być cokolwiek.