Witam !!! oto co napisałem w pewnym wątku:
Dostałem odpowiedź:
No a teraz właściwy problem :] nie mam pojęcia jak oprogramować transmisję szeregową, ten problem wlecze się za mną od dobrych 2 lat i jakos sam nie znalazlem na to odpowiedzi (chyba za słabo szukałem
), gdyby był ktoś łaskawy i podpowiedział mi chociaż kawałek kodu napisany w C, to byłbym dźwięczny
Vein napisał:
chcialbym zastosować atmege8 albo atmege16 do wysterowania 2 wyświetlaczy LED, tzn jeden wyświetlacz składał by się z 3 segmentów (kazdy segment z 7 diód), a drugi z 4 segmentów, wiem że można to zrobić tylko przez multipleksowanie, ale nie mam żadnego pomysłu na hardware :/ aha, potrzebowałbym jeszcze 2 wejścia do zliczania impulsów i 1 przycisk. By nie marnować portów (w koncu do wysterowania 7 wyswietlaczy wasza metoda trzeba wykorzystać aż 15 portów Neutral ) można by było wykorzystać jakiś układzik, który sterowało by się tylko 3 bitami, na 3 bitach można by było wysterować już 27 wyświetlaczy (teoretycznie), ale niestety ja nie znam takiego układu Sad , może Wy coś mi podpowiecie ? może jest jakis scalaczek ktory by mogl wzmocnic sygnal by nie obciazac wyjść procesora zbytnim natężeniem prądu ?
moze sie niejasno wyrazilem 3 bity + 7 bitow, 3 bity do przełączania wyswietlaczy a 7 do sterowania diodami w poszczegolnych segmentach :]
Dostałem odpowiedź:
jacobsek napisał:
możesz np. wykorzystać 74ls164, na jego wejście podajesz dane w sposób szeregowy a na wyjściu masz dane w postaci równoległej gotowe do sterowania wyświetlaczem led 7 segment razem z kropką.
Do sterowania potrzebny jest jeden port jako wyjście data i jeden do sterowania pinem zegarowym 74ls164 czyli używasz tylko 2 porty uc.
Do wysłania najlepiej użyć instrukcji shiftout.
Anodę każdego wyświetlacza łączysz przez tranzystorek więc dochodzi jeszcze 7 portów,jeśli chcesz ograniczyć do minimum liczbę portów to możesz sterować anody też poprzez taki rejestr szeregowo równoległy i dojdzie tylko 2 porty czyli "zmarnujesz" razem 4 porty do sterowania 7 wyświetlaczami.
Wszystko to najlepiej zrobić na przerwaniu od tajmera aby wyświetlanie było robione "w tle" programu głównego i niezależnie od niego.
No a teraz właściwy problem :] nie mam pojęcia jak oprogramować transmisję szeregową, ten problem wlecze się za mną od dobrych 2 lat i jakos sam nie znalazlem na to odpowiedzi (chyba za słabo szukałem