logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega16/32 - Linia wejściowa po odebraniu danej zadziała czasowo jako wyjście

MES Mariusz 06 Maj 2015 12:08 855 7
  • #1 14672657
    MES Mariusz
    Poziom 36  
    Witam.

    Chciałbym skonsultować koncepcję.

    a). urządzenie ma obsługiwać możliwie najwięcej linii wejściowych (na wejściach 0V lub 5V)
    b). urządzenie ma sygnalizować napływ danej zaświeceniem diody LED.
    c). odebrana dana jest holdowana, gaśnie dopiero po odebraniu danej po UART
    d). posiadać UART do odczytu stanu diod.

    Załóżmy, że urządzenie ma mieć 25 wejść.
    By nie marnować wyprowadzeń po odebraniu stanu 5V ta linia wejściowa zostanie zamieniona w wyjściową, i uC będzie trzymał na niej 5V tak długo, aż informacja o stanie wysokim na linii nie zostanie odebrana przez UART. Po tej akcji linia ponownie stanie się linią wejściową. Sygnał podawany na port przez diodę, dzięki czemu informacja +5V nie jest zwracana na podłączone urządzenie.

    Pomysł wykorzystania linii jako zarówno wejście jak i wyjście (przełączanie trybów) jest chyba ok.
    Mikrokontrolery AVR (Atmega16/32) nie powinny mieć problemów z wysterowaniem diody LED bezpośrednio z portu napięciem dodatnim (takie jest założenie). Podciągać ich do VCC też z tego co widzę nie trzeba (szkoda miejsca na PCB).

    Ale, ale, jedna sprawa. Z wysterowaniem pojedynczej diody problemu nie będzie. Gorzej, jak na wszystkie 25 linii wejściowych zostanie podana jedynka i mikrokontroler będzie musiał zasilić 25 diod jednocześnie.

    Może to nie jest dobry kierunek?

    Bardzo ciekawią mnie wasze uwagi na samym wstępie.

    Dzięki za komentarze.
  • #2 14672821
    dondu
    Moderator na urlopie...
    MES Mariusz napisał:
    Pomysł wykorzystania linii jako zarówno wejście jak i wyjście (przełączanie trybów) jest chyba ok.

    To zależy od tego jak sygnał z zewnątrz jest dostarczany - podajesz jedynie, że ma 5V.
    Nie wiemy, czy to krótki impuls, a później sygnał ten przechodzi w stan wysokiej impedancji, .... itd.

    Najlepiej byłoby byś pokazał schemat jednego z takich wejść wyjść i dokładnie opisał sygnał wejściowy.

    MES Mariusz napisał:
    Ale, ale, jedna sprawa. Z wysterowaniem pojedynczej diody problemu nie będzie. Gorzej, jak na wszystkie 25 linii wejściowych zostanie podana jedynka i mikrokontroler będzie musiał zasilić 25 diod jednocześnie.

    W czym widzisz problem? W prądzie? Zastosuj odpowiednie diody.
  • #3 14672846
    szelus
    Poziom 34  
    Musisz tylko pilnować, aby wyjście ustawić w stanie wysokim (czyli de facto pull-up) przed zmianą z wejścia na wyjście. I albo diody o wysokiej efektywności sterowane małym prądem, albo sterować diodę dodatkowym tranzystorem.
    Rozumiem, że to "podtrzymanie stanu" także na tym, co jest wysyłane przez UART nie przeszkadza.
    Chociaż dla mnie to koncepcja jest trochę zbyt minimalistyczna (w sensie, że wejścia kontrolera pozostają kompletnie niezabezpieczone).
  • #4 14672847
    MES Mariusz
    Poziom 36  
    Na wejście podpięty moduł HC-SR501
    http://www.mpja.com/download/31227sc.pdf

    Zadaniem układu nie jest ochrona mienia, pozwoliłem sobie założyć minimalim z tego powodu. Z punktu widzenia (niewielkich) kosztów mikrokontrolera / chińskich modułów / krok w stronę separacji to krok w stronę niepotrzebnych kosztów / większej płytki. Trzeba ewentualnie pomyśleć nad separacją UARTa (RS485).
  • Pomocny post
    #5 14672854
    dondu
    Moderator na urlopie...
    Z dokumentacji którą pokazałeś już wiesz że:

    Cytat:
    Level output High 3.3 V /Low 0V
    ...
    Automatic induction: to enter the sensing range of the output is high, the person leaves the sensing range of the automatic delay off high,
    output low.

    Ponawiam więc: Przedstaw schemat jak to widzisz dla jednego wejścia/wyjścia.
  • #6 14672862
    MES Mariusz
    Poziom 36  
    dondu napisał:
    Z dokumentacji którą pokazałeś już wiesz że:

    Cytat:
    Level output High 3.3 V /Low 0V
    ...
    Automatic induction: to enter the sensing range of the output is high, the person leaves the sensing range of the automatic delay off high,
    output low.

    Ponawiam więc: Przedstaw schemat jak to widzisz dla jednego wejścia/wyjścia.


    A widzisz. Bardzo wczesna koncepcja. Nie zwróciłem uwagi.
    Można rozważyć mikrokontroler na 3V3, lub wykorzystać fakt, że mikrokontroler i tak zinterpretuje 3V3 na wejściu jako stan wysoki. Albo i nie, jeśli weźmie się pod uwagę spadek na diodzie. Fakt.
  • #8 14672932
    Wirnick
    Poziom 30  
    Taka moja refleksja co się zna na pierwszych stronach DS-ów. T0 jest aktywne w każdym ustawieniu portu, a obróbka flagi to już zależy od programu. UART programowy lub sprzętowy w przerwaniu, zależny od ważności wysyłanej informacji lub multipleksowany zewnętrznie. To i ATiny15 idzie przystosować.
REKLAMA