Acade napisał(a):
Wyświetlacz mam również ze wspólną anodą ale układ na płytce jest inny, anody są podpięte bezpośrednio do procesora natomiast segmenty przez tranzystory npn. I tu jest problem nie potrafię dostosować kodu do innego układu elektronicznego...
Przecież to powinno być odwrotnie, anody, jako że wspólne, powinny być przez tranzystory, a katody mogą być bezpośrednio do pinów, oczywiście z dodatkiem rezystora ograniczającego prąd.
Pomyśl, sam pin procka ma ograniczoną wydajność prądową, typowo 20mA, a każdy segment w wyświetlaczu może pobierać ~15-20mA, w momencie wysterowania wszystkich segmentów masz 7*15=105mA i tyle będzie chciał szarpnąć wyświetlacz wspólną anodą z pinu procka w momencie próby wyświetlenia cyfry 8. Właśnie dla tego na wspólnej anodzie powinien być tranzystor, bo sam pin uC temu nie podoła.
------------------------ [ Dodano po: 4 minutach ]Acade napisał(a):
Druga sprawa, gdy napisałem sobie inną obsługę multipleksowania to gdy podłącze np. przycisk do PINU PA3 to przycisk nie działa. Anody wyświetlacza podpięte są właśnie do portu A. Co może być przyczyną, że nie działają inne PINY poru A ??
Acade napisał(a):
Nigdzie więcej nie używam Portu A.
A zobacz co robisz tu:
Acade napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
volatile uint8_t tab[]={0,4,0,2,0,1,0,128,0};
...
ANODY_PORT = tab[licznik];
GeSHi
Przecież cały czas zerujesz m.in. pin PA3 bo wysyłasz wartość tab[] bez maskowania czyli zapisujesz cały port, a pewnie podciągnięcie przycisku masz tylko programowe (bo przecież to się załącza zapisując jedynkę do portu pod dany pin) więc stan na tym pinie sobie pływa, dla tego oscyloskop pokazuje co pokazuje.