Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.
  • #1
    arkgrudz
    Level 11  
    Witam

    Zachcialo mi sie podlaczyc klawiature ps2 pod 8051 ale zamiast normalnie podlaczyc pod INT0 cos mnie podkusilo zeby podlaczyc pod TX i RX. Podlaczylem zasilanie i DATA pod RX i CLK pod TX. Napisalem obsluge przerwania w asm zeby wyswietlal mi na LCD wartosci jakie przyjda z portu. Nic nie przyszlo po naciskaniu klawiszy wiec pomyslalem sobie ze zamienie miejscami podlaczenie TX i RX, jednak nadal nie dzialalo. Pomijam juz to ze wg specyfikacji klawiatura nadaje z bitem parzystosci a 8051 nie ma takiego trybu (synchronicznego). Oczywiscie jak to bywa w takich sytuacjach zapomnialem uaktywnic odbiornik (setb REN). Po aktywacji sie zaczelo :


    Otrzymywalem same wartosci 0xFF ale co mnie zdziwilo na maksa wartosci byly odbierane przez uC przy odlaczonej klawiaturze !!!(TX i RX wisialy w powietrzu). Odbieralem je przez przerwanie jak i przez badanie bitu RI. Czy to jest normalne?? Sprawdzalem 2 procki i to samo, przy asynchr tego nie ma, jedynie przy synchr trybie.


    Druga sprawa : gdy nie udalo mi sie nic uzyskac z podlaczeniem klawiatury podlaczylem ja sobie spowrotem do kompa i okazalo sie ze jest martwa. W jaki sposob mogla sie ona spalić ?? Zasilanie na 100% podlaczylem odpowiednio, nic tez nie wysylalem na rs w 8051 jedynie odbieralem dane. Czy uszkodzilem ja podlaczając nieodpowiednio TX i RX do CLK i DATA?? W klawiaturze DATA i CLK idą bezposrednio do uC bez zadnych elementow posredniczacych . Podlaczalem w ten sam sposob myche kulkowa i ona zyje a w srodku tez DATA i CLK ida od razu do ukladu.

    Czy moglby ktos odpowiedziec mi co sie stalo ??
    Czy byl jakis konflikt sygnalow ??
    Z tego co wyczytalem klawiatura ma wejscia typu otwarty kolektor więc chyba nie powinno sie nic stac. Klawiatura odbiera i nadaje wiec musi to ze soba jakos chodzic bez konfliktow.

    Jestem raczej zielonym elektronikiem czy moglby ktos mi to objasnic??

    Prosze o wyrozumialosc, jestem tutaj bardzo poczatkujacy.
  • #2
    Jdsoul
    Level 23  
    Teoretycznie komunikacja odbwa się za pomocą poziomów zgodnych z TTL, ale ....

    Układy TTL posiadają wejścia i wyjścia :) wyjście może być obciążone przez wejście lub kilka wejść, ale nie powinno być obciążane przez wyjście :(

    W zależności od konstrukcji układu F, HC, HCT, LS są różne dopuszczalne obciążalności tych wyjść. Obawiam się nie najdroższa klawiatura może nie mieć bufora wyjściowego :( i usiłowała ściągnąć wyjście TX ustawione w stan wysoki lub odwrotnie podciągnać wyjście ściągnięta do 0. Kolizja stanów i chyba tyle.

    A może poprostu "nie zauważyłeś", że gdzieś na moment nastąpiło ... zwarcie.

    Generalnie 8051 ma strukturę z logiką ujemną tzn. że wyjście w stanie wysokim jest wejściem , dopóki nie zostanie uruchomiony tranzystor ściągający więc raczej próbowałeś sterować ściągnięty do "0" :) wyjściem :( i być może stąd problemik.

    Wbrew pozorom elektronika cyfrowa nie jest niezawodna i czasem układy padają .....

    A tak przy okazji w jaki sposób zasiliłeś klawiaturę i kontroler ??
  • #3
    arkgrudz
    Level 11  
    Zasilanie szło z zasilacza (badziewia-czarnej kostki) i potem przez stabilizator.

    Wiem że nie można podlaczac wyjsc razem bo bedzie niedobrze ale teoretycznie uklad szeregowy klawiatury powinien byc typu otwarty kolektor czyli nie powinno sie nic stac (cos w ten desen jak uklady podlaczone do szyny systemowej).

    Faktycznie klawiatura to tanie badziewie i uklad napewno nie jest zabezpieczony tak jak powinien jednak transmisja synchroniczna ma to do siebie ze moga wystepowac momenty w ktorych dwa uklady chca nadawac (i w tym tanim badziewiu rowniez).
    Klawiatura odbiera sygnaly od kompa i wysyla do niego dane i wlasnie to mnie dziwi bo raczej sie nie slyszy zeby klawiatury padaly podczas normalnej pracy.

    Nie mam przyrzadu do mierzenia przebiegow ale jak pomierzylem miernikiem pola ktore ida do siatki to oscyluja ok 4.70-4.73V a napiecie ktore dochodzi do ukladu 5.02V wiec ostroznie wnioskuje ze matryca jest nadal badana a tylko uklad szeregowy uC klawiatury sie uszkodzil...

    Czy wychodzi z tego ze uklad sterowania klawiatury (kiedys byl to 8255, teraz chipset) w komuterze jest bardziej "ostrozny" niz 8051 i nie powoduje uszkodzenia klawiatury??

    Chyba ze zeczywiscie zrobilem gdzies zwarcie przez "nie zauwazenie"...
  • #5
    Jdsoul
    Level 23  
    Generalnie transmisja szeregowa opiera się zawsze na jakimś protokole i na jakimś inferfejsie. Protokół zabezpiecza przed jednoczesnym nadawaniem softwareowo tzn. czekaj aż skończę lub ja jest ważniejszy więc daj mi gadać (Master Slave) , a jak będę chciał to cię grzecznie posłucham :).

    Druga strona to hardware :)
    W celu uniknięcia jednoczesnego nadawania stosowane są sztuczki typu jednoczesny nasłuch magistrali RS-485 z oczekiwaniem na wolną szynę danych lub izolacja Ethernet. (tak tak bez jaj Ethernet to też łącze szeregowe tylko w dupleksie i z różnicowym nadawaniem )

    Większość układów do obsługi klawiatury testuje stan szyny danych i czyta tą szynę , raczej kolizje jednoczesnego nadawania się nie zdarzają :)

    Inna sprawa to interfejs elektroniczny, np. w I2C żeby uniknąć problemów stosuje się rezystory pullup i najwyżej dwa nadajniki dostaną po połowie oczekiwanego prądu.

    W przypadku TTL, CMOS konieczne jest łączenie wejść z wyjściami i pilnowanie żeby wyjście bramki nie pracowało na zwarcie - bo się sfajczy :) Zazwyczaj jest to zapewnino przez odpowiednią konstrukcje złącz lub dodatkowe kości bufforów etc.

    Niestety Chinole oszczędzają na wszystkim i masz babo placek, musiałeś pomylić piny :)
  • #6
    Zaquadnik
    Level 27  
    Przede wszystkim, w trybie synchronicznym, port szeregowy procka generuje zegar... i klawiatura, wysyłając znak też generuje zegar, zderzenie, karetka, szpital itd. :P Proponuję wyjście clk z klawiatury podpiąć pod INT0 a sam interfejs napisać progrramowo. Nie należy zapominać o rezystorach podciągających linie DATA i CLK klawiatury :]
  • #7
    Jdsoul
    Level 23  
    Generalnie :) Klawiatura została dostosowana do współpracy z konkretnym urządzeniem komputerem PC :) i taka jest jej podstawowa rola)

    Żeby 8051 mógł ją obsłużyć , musi emulować prace kontrolera klawiatury z PC :) i nie jest to na pewno tryb UART :) tylko coś ciekawszego :) tryb synchroniczny i to jeszcze z magistralą danych dwukierunkową :)


    Nic więcej dodać nic ująć :)


    Taniej i oszczędniej z pkt widzenia 8051 jest zastosować uproszczone klawiatury i nie wymagać od niego straty mocy obliczeniowej na obsługę dość ciekawego, ale jednak bezużytecznego protokołu klawiatury 101 klawiszowej :) :) :) :) :)

    No chyba że ktoś chce zrobić Interface:

    Klawiatura PC -> RS-232,
    Klawiatura PC ->USB,
    lub Klawiatura PC->LCD.


    Abstrachując od tematu fajny byłby interfejs Klawiatura PC->i2c :)
  • #8
    arkgrudz
    Level 11  
    Dzieki za zainteresowanie.

    Zeczywiscie moje skojarzenie z UART bylo conajmniej bezpodstawne, dzieki za wytlumaczenie od strony elektronicznej.

    Po dokladnym obejrzeniu zeczywiscie mialem zwarcie...

    Dzieki raz jeszcze.
    Temat uwazam za zamkniety.
  • #9
    Jdsoul
    Level 23  
    Cześć nie zniechęcaj się za mocno taką prostą awarją , tylko następnym razem zainwestuj kilka zł w gniazdo, płytkę uniwersalną ets. i td.

    Doświadczalna nauka jest nieoceniona i co byśmy zrobili bez działań słynnego Tomasa Alfy Edisona.

    Jego niekonwencjonalne podejście do nauki przyniosło masę nieoczekiwanych i jedynych w swoim rodzaju odkryć, nieosiągalnych dla "wykształciuchów" po studiach.

    Jest jeszcze masa rzeczy do odkrycia na świecie :)

    Co zaś do klawiatury do sprawa jest jasna i opisana dość dobrze nawet tu na elektrodzie :) szkoda w to głębiej wnikać. Staraj się korzystać z wiedzy, i dawać coś od siebie z dziedzin które sam doskonale znasz :)

    Będzie super i do zobaczenia wkrótce na forum z nowymi pomysłami :)