Cześć!
Nazwa tematu może nie od razu tłumaczy "o co chodzi", ale nie wiedziałem, jak dobrze można to opisać. Jeśli trzeba będzie, to zrobię zdjęcie lub schemat, ale układ jest na tyle prosty, że chyba będzie wiadomo, o co chodzi. Problem jest następujący. Mikrokontroler to ATmega32A-PU. Wszystko poskładane na płytce stykowej. Mam wyświetlacz siedmiosegmentowy poczwórny, dokładnie
taki. Chciałem najpierw sprawdzić czy wyświetlacz w ogóle działa pisząc prosty program. Kod poniżej.
[ po pierwsze bardzo proszę prawidłowo umieszczać kod programu zgodnie z instrukcją: topic7402.html - ok? - mirekk36 ][ po drugie bardzo proszę na tym forum nigdy nie umieszczaj listingów z zapisem F_CPU w kodzie programu bo to jest błąd który tępię OGNIEM I KOCIM MIECZEM .... owszem sam możesz się katować tym błędem - ale żeby inni nie musieli tego widzieć ok? to taka druga prośba ? dobrze ? - mirekk36 ]Cytuj:
#define F_CPU 8000000UL // ----> NIGDY TEGO NIE ROBIMY W KODZIE _ BŁĄD !!!
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
No i... działa, ale niezupełnie. Zamierzeniem było zaświecenie wszystkich segmentów, czyli czterech "8.". Niestety świecą się tylko segmenty A B G oraz DP.
Pytanie co może być przyczyną?
1. Widząc, że nie wszystkie segmenty są podświetlone, sprawdziłem je bezpośrednio, łącząc je kolejno z masą - wszystkie działają. Wyświetlacz działa, a i przewody nie są przerwane.
2. Pomyślałem, że może na płytce są jakieś przerwy. Zrobiłem to, co w punkcie pierwszym, ale teraz piny "kabelka" łączyłem z pinami portu C... Okazało się, że segmenty świecą jedynie po połączeniu z pinami PC7, PC6, PC1 i PC0. Piny PC5, PC4, PC3 i PC2 zachowują się tak, jakby był tam stan wysoki.
Żeby się upewnić, co się dzieje na pinach PC5..PC2 wziąłem multimetr i pomierzyłem napięcia pomiędzy masą, a poszczególnymi pinami, wyniki poniżej.
PC2 -> 4.95V
PC3 -> 4.95V
PC4 -> 3.66V
PC5 -> 4.95V
Wychodzi na to, że na tych pinach rzeczywiście panuje stan wysoki.
Jeśli chodzi o filtrację zasilania, to Vcc i GND jest połączone kondensatorem ceramicznym 100nF, tak samo AVcc i GND kolejnym kondensatorem. Podobnie Vcc wyświetlacza jest połączone z masą przez kondensator 100nF. Reset jest połączony rezystorem 10k z zasilaniem. Układ jest zasilany przez programator USBasp.
//poprawiłem na syntax zaraz po dodaniu, ale coś się "namieszało", teraz powinno być dobrze