Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Dekodowanie multipleksowania

MAJSTEROS 07 Mar 2012 09:14 1397 14
  • #1 07 Mar 2012 09:14
    MAJSTEROS
    Poziom 15  

    Dekodowanie multipleksowania
    Mam problem jak wykonać poprawne zdekodowanie multipleksowania 4 wyświetlaczy LED z procesora. Schemat pokazuje jak są opodłączone. Może ktoś udostępni lub naprowadzi jak to wykonać poprawnie w C lub w Bascomie. Zawsze świecą 4 cyfry.

    Pozdrawiam

    0 14
  • #2 07 Mar 2012 09:44
    snnaap
    Poziom 25  

    Najpierw musisz zastanowić się co to są za układy i tak 573 to bufor, 164 to rejestr przesuwny z wejściem szeregowym wyjściem równoległym.
    Do sterowania rejestrem potrzebujesz jeszcze podłączyć do uK wejścia oznaczone na Twoim 'schemacie' jako PROL.
    Zasada jest taka że jak podasz na nóżkę 1 i 2 układu 164 jakiś stan (niski lub wysoki) a następnie na wejście PROL podasz zbocze narastające to na wyjściu Q0 pojawi się stan który podałeś na nóżkę 1 i 2. Natomiast na wyjściu Q1 pojawi się stan który był na wyjściu Q0 itd.

    Dziwi mnie sposób podłączenia segmentów co kierował Tobą aby tak je podłączyć, ze schematu wynika ze podłączone są w następujący sposób:

    Q0 - seg B
    Q1 - seg A
    Q2 - seg D
    Q3 - seg ??
    Q4 - seg G
    Q5 - seg F
    Q6 - seg E
    Q7 - seg ??

    Nie lepiej byłoby podłączyć Q0 - seg A, Q1 - seg B itd.

    Dobrze było zobaczyć cały schemat i podłączenie pozostałych pinów układów 573 i 164.


    Pozdrawiam

    PS :
    Nie wiem czy to co przedstawia schemat można nazwać multipleksowaniem.

    0
  • #3 07 Mar 2012 09:45
    hotdog
    Poziom 26  

    tematów o tym było multum.

    Best pratice to wykorzystanie przerwania od timera i cyklicznie wykonywanie kroków w tym przerwaniu:
    - zgaszenie aktualnej "wspólnej" anody/katody
    - ustawienie wartości znaku na pinach dla poszczególnych segmentów
    - zapalenie następnej "wspólnej" anody/katody

    Nie ma co za dużo dywagować, tylko brać się do roboty. Nie ma tu nic trudnego, tylko obsługa timera i GPIO. Idealne na "drugi" program.

    0
  • #4 07 Mar 2012 10:23
    MAJSTEROS
    Poziom 15  

    Nie pamiętam pod którą nogę został podłączony segment c wyświetlacza led. Urządzenie całe jest zaprojektowane przez kogoś innego. Potrzebuję użyć cyfr wyświetlanych przez to urządzenie. Dziękuje za szybkie odpowiedzi i naprowadzenie toku myślenia.

    0
  • #5 07 Mar 2012 10:46
    hotdog
    Poziom 26  

    Jeżeli jest już zrobione, to bez pełnego schematu, mało można pomóc.

    0
  • #6 07 Mar 2012 11:29
    MAJSTEROS
    Poziom 15  

    Właśnie jest wykonane i działa dlatego przerysowałem częśc która by mnie interesowała w jaki sposób to rozpracować.

    0
  • #8 07 Mar 2012 12:08
    Jado_one
    Poziom 22  

    Masz w sumie do odczytania następujące sygnały:
    4 sterujące włączaniem poszczególnych wyświetlaczy i 7 sterujących włączaniem poszczególnych segmentów na wyświetlaczach.
    Te sygnały musisz "pociągnąć" bezpośrednio z wyjść procka sterującego wyświetlaniem LED'ow - przed tranzystorami sterującymi. Jeżeli byłby to jakiś układ specjalizowany, gdzie od razu ida bezpośrednie sygnały na wyświetlacze, to być może musiałbyś zastosować jakieś dostosowanie poziomów napięć do zakresu 0-5V - jeśli LED'y zasilane są wiekszym napięciem niż 5V.
    Potem do jednego portu podlączasz sygnały 1-7 (segmenty), do drugiego 1-4 (cyfry).
    I programowo badasz stany sygnałów 1-4. Jeżeli, na którymś z nich jest 1 log (zakładamy wstępnie taką logikę, może być odwrotna, w zależności od tego czy wyświetlacze są ze wspólna Anodą czy Katodą), to wczytujesz stan portu 1-7 - i masz już wartość dla tej cyfry.
    I tak po kolei - wszystkie cyfry w pętli sprawdzania.

    0
  • #9 07 Mar 2012 12:52
    snnaap
    Poziom 25  

    Jado_one napisał:
    Masz w sumie do odczytania następujące sygnały:
    4 sterujące włączaniem poszczególnych wyświetlaczy i 7 sterujących włączaniem poszczególnych segmentów na wyświetlaczach.
    Te sygnały musisz "pociągnąć" bezpośrednio z wyjść procka sterującego wyświetlaniem LED'ow - przed tranzystorami sterującymi. Jeżeli byłby to jakiś układ specjalizowany, gdzie od razu ida bezpośrednie sygnały na wyświetlacze, to być może musiałbyś zastosować jakieś dostosowanie poziomów napięć do zakresu 0-5V - jeśli LED'y zasilane są wiekszym napięciem niż 5V.
    Potem do jednego portu podlączasz sygnały 1-7 (segmenty), do drugiego 1-4 (cyfry).
    I programowo badasz stany sygnałów 1-4. Jeżeli, na którymś z nich jest 1 log (zakładamy wstępnie taką logikę, może być odwrotna, w zależności od tego czy wyświetlacze są ze wspólna Anodą czy Katodą), to wczytujesz stan portu 1-7 - i masz już wartość dla tej cyfry.
    I tak po kolei - wszystkie cyfry w pętli sprawdzania.



    Panowie popatrzcie dokładniej na ten fragment schematu który kolega udostępnił i odpowiedzcie sobie czy na pewno dobrze koledze radzicie.

    Wydaje mi się że wasze rady nie są dobre w tym przypadku ponieważ nie występuje tu zwyczajne multipleksowanie - w ogóle przedstawiony przez autora układ nie ma nic wspólnego z multipleksowaniem bardzie pasuje tu sterowanie spi jak już.

    Wródźcie uwagę że każdy wyświetlacz jest sterowane przez oddzielny rejestr.
    Stan każdego wyświetlacza zatrzaskiwany jest na oddzielnym rejestrze i wyświetlany statycznie nie multipleksowo.


    No chybże czegoś nie rozumiem.

    0
  • #10 07 Mar 2012 13:16
    Jado_one
    Poziom 22  

    Tak, masz chyba rację - zasugerowałem się tym "multipleksowaniem"....

    No to pozostaje droga czysto programowa - odczytywanie 4 wyjsc (z procesora) danych szeregowych wraz z sygnałem clock'a.

    O ile dobrze rozumiem ideę, to na tych 4 wyjsciach z 573 pojawiają się sygnały jednocześnie dla 4 rejestrów szeregowych.
    Jednocześnie zmienia się sygnał clock, powodując "wczytywanie" kolejnych stanów do 164 (szeregowo).

    Programowo można to zrobić tak:
    Sprawdzać sygnał clock - najlepiej podłaczyć pod przerwanie zewnętrzne procka.
    Przy opadającym (albo narastającym - nie pamiętam w tej chwili noty 164) zboczu dokonac odczytu stanów tych 4 wyjsc z 573.
    Po 8 clockach mamy wczytane 8 bajtów danych (po 4 interesujące nas bity w kazdym) dla 4 wyswietlaczy.

    Reszta to juz zamiana programowa tych danych na 4 bajty "równoległe"...

    0
  • #11 07 Mar 2012 13:48
    snnaap
    Poziom 25  

    Też mi się właśnie tak wydało z tym że nie rozważałem połączenia sygnału clock wszystkich 164 - czy są one połączone wypowie się na pewno autor.
    Przy połączeniu sygnałów clock tracimy możliwość zmiany pojedynczej cyfry, zawsze musimy ustawać 4 cyfry naraz.

    Jeżeli autor poda dokładnie pod jakie piny uK podczepione są poszczególne we układów 573 oraz 164 to już nie będzie nic stało na przeszkodzie aby coś napisać.

    0
  • #12 07 Mar 2012 16:42
    MAJSTEROS
    Poziom 15  

    Jest dokładnie tak wszystkie wejścia clock hc164 są podłączone równolgle. Procesor z którego jest sterowany 573 to staruszek mcs-48 piny DB3 - PIN 6 HC573, DB4 PIN 5, DB5 -PIN 4, DB 6 -PIN 3. Piny CLOCK HC164 połączone do pinu RD procka aktywny niski poziom. oczywiście hc573 steruje jeszcze epromem ale to już chyba mało ważne.

    0
  • #14 07 Mar 2012 20:53
    Jado_one
    Poziom 22  

    O ile dobrze rozumiem, to kolega musi dorobić drugi układ do tego istniejącego już na tym 48' - więc nie będzie musiał go przeprogramowywać.

    Skoro clocki są razem, to ten mój sposób powinien zadziałać. Jedyny problem możesz mieć z wykrywaniem początku transmisji. Miejmy nadzieję, że pomiedzy kolejnymi transmisjami 8 bitów do 164 są jakieś przerwy czasowe, które można wykryć.
    Wtedy układ dekodujący może się zsynchronizować z transmisją do 164.
    To trzeba by oscyloskopem popatrzeć - sygnał clock - jeśli jest jeden ciagły przebieg, bez żadnych przerw, to ciężko będzie wykryć który bit jest pierwszy a który ostatni....

    Ale skoro to nie jest układ multipleksowalny tylko statyczny, to przerwy powinny być, a może nawet mogą dochodzić do 1s....Zależy jak często zmieniają się dane na wyświetlaczach....

    0
  • #15 07 Mar 2012 22:30
    MAJSTEROS
    Poziom 15  

    Kolega Jado_one trafił w sedno spawy - jutro siadam do oscyloskopu

    0