Witam.
Założenia były proste, dioda podłączona do portu PC7 miała migać. wszystko miało być obsługiwane przez timer0 ale coś nie działa.
nie miejcie mi nic za złe ale dopiero się uczę w C a w bascomie takie coś to działało

Pozdrawiam.
Witam.
Założenia były proste, dioda podłączona do portu PC7 miała migać. wszystko miało być obsługiwane przez timer0 ale coś nie działa.
Ale tutaj volatile nie jest potrzebne ponieważ zmienna licznik jest wykorzystywana tylko w przerwaniu a nie w przerwaniu i programie głównym, dlatego to nic ci nie zmieniło.
Za to mogę ci powiedzieć ze 100% pewnością że program napisałeś poprawnie i na 100% działa - a ty co najwyżej źle podłączyłeś diodę LED ... sprawdź i będzie po kłopocie
Tzn jedyny błąd jaki robisz to ta definicja w kodzie:
#define F_CPU 16000000L
ale pewnie męczysz się w tym najnowszym kocim AVR Studio 5 albo 6 więc się nie dziwię, że ten typowy błąd popełniasz albo powielasz. Z tym że on nie wpływa akurat tutaj na to że ci coś nie działa tzn dioda nie miga. Z kłopotami definiowania tego w kodzie spotkasz się boleśnie później, chyba że zaczniesz korzystać z porządnego Eclipse Link
rozwiązałem problem.
polegał na tym że w ustawieniach properties>target hardware miałem ustawione na atmega16 i zegar na 16000000Hz, po zmianie na atmega32 i 1000000Hz program działa poprawnie. Nasuwa mi się pytanie po co w pierwszej linijce kodu #define F_CPU 16000000L skoro niema to wpływu na jakąkolwiek pracę??
No ale teraz powiedz skąd ty wziąłeś ten pomysł na tą linijkę kodu ??? skoro:
a. piszesz w Eclipse
b. masz na myśli książkę, którą ja dobrze znam
a dodatkowo ja wszędzie gdzie mogę - to podpowiadam, żeby w kodzie nie stosować tego #define F_CPU
Bo zastosować w kodzie możesz - czemu nie ? i będzie to miało wpływ - tylko że zgubny dla ciebie.