plazgut napisał: Jeśli chodzi o makra, no cóż... Nikt nigdy się nie pokusił, żeby o tym wspomnieć na studiach, a samemu jeszcze do tego nie doszedłem, stąd te błędy. Co do priorytetów to się nie zgodzę, bo przecież ważniejsze jest przerwanie o niższym adresie (najpierw RESET, potem INT0, INT1 itd. ) No chyba, że to co jest w książkach jest błędem.
Jeśli chodzi o prąd to ma niestety dużo. Bo w tym wypadku prąd będzie pobierany przez wszystkie 8 ledów, a jeśli by zrobić przełączanie segmentów to świeciłby zawsze tylko jeden led. O ile Atmega mi to wytrzyma o tyle stabilizator już będzie miał problemy. Jeśli zwiększe rezystory i zwiększe częstotliwość to może się okazać, że nie będą prawie świecic... No ale jeśli nie znajde rozwiązania programowego to będę zmuszony jednak to zrobić.
Nie wiem jakie książki czytałeś, ale albo są tam bzdury, alby (co bardziej prawdopodobne) coś źle zrozumiałeś. Priorytet o którym piszesz ma znaczenie w sytuacji w której jednocześnie jest zgłoszonych kilka przerwań. W pozostałych sytuacjach, po zgłoszeniu jednego wszystkie inne są blokowane i procesor ich nie obsłuży dopóki pierwsze się nie zakończy. To można zmienić odblokowując jawnie przerwania w ISR, ale powiedzmy, że to naprawdę trzeba wiedzieć co się robi.
Co do sterowania multipleksowego - jeśli segment sterujesz z dutycycle 1/n to średnia jego jasność (w dużym uproszczeniu) wynosi 1/n. Więc na tym nic nie zyskujesz, a wręcz tracisz. Aby to skompensować, przez diodę puszcza się spory prąd (kilkakrotnie większy od nominalnego). Więc jedyną możliwością zmieszczenia się w 100mA jest zwiększenie rezystorów i średniego prądu diody ze wszystkimi konsekwencjami.
Dodano po 1 [minuty]: Co do include - oczywiście możesz includować pliki źródłowe ale to naprawdę kiepski pomysł. Różnica pomiędzy <> a "" polega na tym, gdzie kompilator szuka pliku (a raczej jaki jest priorytet wyszukiwania).
Dodano po 3 [minuty]: Co do programu, napisz co jest nie tak, łatwiej będzie doradzić. Z tego co widzę to nie ma sensu deklarować jako volatile zmiennych lokalnych funkcji obsługi przerwania (zresztą kompilator pewnie generuje ci warninga?), kolejna sprawa - schemat. Nie możesz dać rezystora na wspólną anodę LED - każdy segment musi mieć własny rezystor ograniczający. Błędnie też sterujesz przekaźnikiem - nie po tej stronie jest tranzystor. Nie powinieneś też ograniczać prądu przekaźnika rezystorem - nie ma to sensu.