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

ATmega16 - Jak ustawić masę na wybranych wyjściach portu?

nówka 03 Lut 2014 18:50 2184 25
  • #1 13257511
    nówka
    Poziom 8  
    Chciałbym się dowiedzieć, jak zrobić, aby na kilku wyjściach mikrokontrolera (nie wszystkich, tylko np. w jednym porcie) była masa zamiast VCC.
  • Pomocny post
    #4 13258200
    Konto nie istnieje
    Poziom 1  
  • #6 13259713
    yokoon
    Poziom 29  
    Witam.
    Dodam taką ciekawostkę w sprawie configuracji portów
    Wykonałem taką próbę (doświadczenie):

    ATmega8
    DDRC = &B111111 ' pierwsze 6 bitów jako wyjście, bit 7 to RESET nie configurowałem.

    Dokonałem pomiarów na w/w pinach miernikiem cyfrowym.
    U = 0,0V w stosunku do masy.
    Rezystancja = 23Ω, czyli nie jest to 0 omów.

    Jeden z uczestników forum pisał, iż nie działał mu wyświetlacz LCD 16*2.
    Port R/W w LCD skonfigurował programowo i nie działał.
    Po podłączeniu w/w pinu galwanicznie do masy wyświetlacz ruszył.

    Takie moje doświadczenia.
  • #7 13259800
    Eagle
    Poziom 24  
    A po co chcesz mieć taką "dokładną" masę ? Tranzystor zwiera do masy i ma pewną impedancję/rezystancję którą możesz zmierzyć, nawet jak byś tam miął zworkę to też by miała rezystancje.

    Przecież R/W jest typowym wejściem, więc pewnie źle była ta linia sterowana, po zwarciu na stałe zostało wymuszone write to zaczęło działać. Klasyka.
  • #8 13259841
    yokoon
    Poziom 29  
    Eagle napisał:
    A po co chcesz mieć taką "dokładną" masę ? Tranzystor zwiera do masy i ma pewną impedancję/rezystancję którą możesz zmierzyć, nawet jak byś tam miął zworkę to też by miała rezystancje.

    Przecież R/W jest typowym wejściem, więc pewnie źle była ta linia sterowana, po zwarciu na stałe zostało wymuszone write to zaczęło działać. Klasyka.


    Chcę dokładnej masy, aby LCD dziłał prawidłowo - czytasz nie uważnie.

    Ja tylko podałem przykład, gdzie brak był dokładnej masy i LCD nie działał.
    Tak R/W jest wejściem czyli potrzebuje dokładnej masy w tym przypadku.

    Nie rozumiem tego zdania:
    nawet jak byś tam miął zworkę to też by miała rezystancje.
  • #9 13259863
    dondu
    Moderator na urlopie...
    yokoon napisał:
    Witam.
    Dodam taką ciekawostkę w sprawie configuracji portów
    Wykonałem taką próbę (doświadczenie):

    ATmega8
    DDRC = &B111111 ' pierwsze 6 bitów jako wyjście, bit 7 to RESET nie configurowałem.

    Dokonałem pomiarów na w/w pinach miernikiem cyfrowym.
    U = 0,0V w stosunku do masy.
    Rezystancja = 23Ω, czyli nie jest to 0 omów.

    Nie trzeba robić doświadczeń, wystarczy popatrzeć do dokumentacji np. ATmega8, by zorientować się, że napięcie wyjściowe na złączu tranzystora zwierającego pin do masy jest zależne od prądu jaki przez pin płynie w taki sposób (przykład dla dla Vcc=5V):

    ATmega16 - Jak ustawić masę na wybranych wyjściach portu?

    Wykres pokazuje jakie napięcie (spadek napięcia na złączu) będzie na pinie przy danym prądzie pinu zwierającego do masy.
    Przyjąłem prąd 10mA i dla temperatury 25°C i odczytałem z wykresu VOL wynosić powinno około 0,21V.

    Stąd już łatwo policzyć z Prawa Ohma rezystancję złącza: R = U/I = 0,21V/10mA ≈ 21Ω

    Tranzystory w mikrokontrolerach nie są "supermenami", to nadal tranzystory które zachowują swoje właściwości analogowe.



    yokoon napisał:
    Chcę dokładnej masy, aby LCD dziłał prawidłowo - czytasz nie uważnie.

    Ja tylko podałem przykład, gdzie brak był dokładnej masy i LCD nie działał.
    Tak R/W jest wejściem czyli potrzebuje dokładnej masy w tym przypadku.

    To znaczy jedynie że masz błąd projektowy, pokaż schemat.
  • #10 13259885
    yokoon
    Poziom 29  
    Ale ja chciałem pokazać, iż ustawianie programowe logicznego 0 na pinie mikrokontrolera w niektórych przypadkach jest nie skuteczne.

    Np. dla pinu R/W wyświetlacza LCD.
  • #11 13259890
    dondu
    Moderator na urlopie...
    yokoon napisał:
    Ale ja chciałem pokazać, iż ustawianie programowe logicznego 0 na pinie mikrokontrolera w niektórych przypadkach jest nie skuteczne.

    Np. dla pinu R/W wyświetlacza LCD.

    Ponieważ poprawiałem post, gdy Ty pisałeś swój, ponowię: Masz błąd projektowy - pokaż schemat.

    ... i zapoznaj się z tym: http://mikrokontrolery.blogspot.com/2011/04/jak-mikrokontroler-widzi-sygnal-cyfrowy.html?a
    wprawdzie to przykład dla mikrokontrolera, ale w przypadku LCD jest oczywiście podobnie.
  • #12 13260037
    BlueDraco
    Specjalista - Mikrokontrolery
    Eee tam, od razu schemat. DDR nie włączył. ;)
  • #13 13260057
    dondu
    Moderator na urlopie...
    BlueDraco napisał:
    Eee tam, od razu schemat. DDR nie włączył. ;)

    ... nie brałem pod uwagę tak prozaicznego błędu. Zakładam, że ten o kim yokoon pisze jednak DDR ustawił prawidłowo, no ale może jednak nie ... :)
  • #14 13260485
    Eagle
    Poziom 24  
    Cytat:

    Nie rozumiem tego zdania:
    nawet jak byś tam miął zworkę to też by miała rezystancje.


    Drut z którego robisz zworkę też ma rezystancję. Nie spodziewam się, że używasz nadprzewodników. Próbujesz rozwiązać problem niewłaściwe przyjmując, że zakładając zworkę rozwiążesz problem. Zobacz w dokumentacji jaki poziom przyjmuje wejście R/W i zobaczysz, że aby ustawić stan "write" czyli L nie trzeba zwierać do masy. To że komuś działa po zwarciu do masy R/W oznacza, że usunął skutek swojego błędu a nie usunął przyczynę.

    Cytat:

    Ale ja chciałem pokazać, iż ustawianie programowe logicznego 0 na pinie mikrokontrolera w niektórych przypadkach jest nie skuteczne.

    Dlaczego, jest niezgodne z dokumentacją ?

    Cytat:

    Np. dla pinu R/W wyświetlacza LCD.

    Zapewniam cię, że gigantyczna ilość LCD ma sterowaną linię R/W bezpośrednio z portu i sterownie jest skuteczne.
  • #15 13261351
    yokoon
    Poziom 29  
    Eagle napisał:

    Drut z którego robisz zworkę też ma rezystancję. Nie spodziewam się, że używasz nadprzewodników. Próbujesz rozwiązać problem niewłaściwe przyjmując, że zakładając zworkę rozwiążesz problem. Zobacz w dokumentacji jaki poziom przyjmuje wejście R/W i zobaczysz, że aby ustawić stan "write" czyli L nie trzeba zwierać do masy. To że komuś działa po zwarciu do masy R/W oznacza, że usunął skutek swojego błędu a nie usunął przyczynę.

    Myślisz o zworce długości 2 metry ?

    Przeczytaj Kolego dokładnie mój pierwszy post.
    Mówisz o dokumentacji a ja Ci przedstawiam praktyczną próbę.
    Cały czas piszę o wyświetlaczu LCD 16*2, sterownik HD44780 i sterowanie 4-bitowe bitowe.

    We wszyskich przykładach które znam R/W = masa.
    Jeżeli Kolego znasz inny sposób to proszę pokazać praktycznie.
  • #16 13261452
    vania
    Poziom 24  
    yokoon napisał:
    Eagle napisał:
    Przeczytaj Kolego dokładnie mój pierwszy post.
    Mówisz o dokumentacji a ja Ci przedstawiam praktyczną próbę.
    Cały czas piszę o wyświetlaczu LCD 16*2, sterownik HD44780 i sterowanie 4-bitowe bitowe.

    We wszyskich przykładach które znam R/W = masa.
    Jeżeli Kolego znasz inny sposób to proszę pokazać praktycznie.


    http://radzio.dxp.pl/hd44780/hd44780_avr_8-bit_rw_c.htm

    I jakoś koledze to działało bez zwierania R/W do masy;)
  • #17 13261625
    yokoon
    Poziom 29  
    vania napisał:
    yokoon napisał:
    Eagle napisał:
    Przeczytaj Kolego dokładnie mój pierwszy post.
    Mówisz o dokumentacji a ja Ci przedstawiam praktyczną próbę.
    Cały czas piszę o wyświetlaczu LCD 16*2, sterownik HD44780 i sterowanie 4-bitowe bitowe.

    We wszyskich przykładach które znam R/W = masa.
    Jeżeli Kolego znasz inny sposób to proszę pokazać praktycznie.


    http://radzio.dxp.pl/hd44780/hd44780_avr_8-bit_rw_c.htm

    I jakoś koledze to działało bez zwierania R/W do masy;)


    Nastepny który nie czyta dokładnie.
    Ja pisałem o sterowaniu 4-bitowym.
  • #18 13261632
    tadzik85
    Poziom 38  
    yokoon napisał:
    vania napisał:
    yokoon napisał:
    Eagle napisał:
    Przeczytaj Kolego dokładnie mój pierwszy post.
    Mówisz o dokumentacji a ja Ci przedstawiam praktyczną próbę.
    Cały czas piszę o wyświetlaczu LCD 16*2, sterownik HD44780 i sterowanie 4-bitowe bitowe.

    We wszyskich przykładach które znam R/W = masa.
    Jeżeli Kolego znasz inny sposób to proszę pokazać praktycznie.


    http://radzio.dxp.pl/hd44780/hd44780_avr_8-bit_rw_c.htm

    I jakoś koledze to działało bez zwierania R/W do masy;)


    Nastepny który nie czyta dokładnie.
    Ja pisałem o sterowaniu 4-bitowym.

    A co ma piernik do wiatraka?

    Zajrzyj na stronę to i tryb 4bitowy z RW znajdziesz.
    Miliony osób z tego korzystają, Ty jedyny uważasz to za niemożliwe.
  • #19 13261640
    vania
    Poziom 24  
    yokoon napisał:
    vania napisał:
    yokoon napisał:
    Eagle napisał:
    Przeczytaj Kolego dokładnie mój pierwszy post.
    Mówisz o dokumentacji a ja Ci przedstawiam praktyczną próbę.
    Cały czas piszę o wyświetlaczu LCD 16*2, sterownik HD44780 i sterowanie 4-bitowe bitowe.

    We wszyskich przykładach które znam R/W = masa.
    Jeżeli Kolego znasz inny sposób to proszę pokazać praktycznie.


    http://radzio.dxp.pl/hd44780/hd44780_avr_8-bit_rw_c.htm

    I jakoś koledze to działało bez zwierania R/W do masy;)


    Nastepny który nie czyta dokładnie.
    Ja pisałem o sterowaniu 4-bitowym.


    Mówisz i masz.

    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_rw_c.html
  • #20 13261645
    BlueDraco
    Specjalista - Mikrokontrolery
    Jak by Ci tu powiedzieć... Z parametrów HD44780 jasno wynika, że jego wejścia dadzą się poprawnie wysterować z dowolnego układu mikroprocesorowego działającego z napięciem zasilania 3.3..5 V. Wskazuje też na to praktyka tysięcy ludzi, którzy to robili. Sam miałem tak sterowany LCD w kilkunastu projektach, zanim zmądrzałem i przestałem bezsensownie sprawdzać gotowość HD44780 w pętli. Co więcej, w jednym starszym urządzeniu z nowym oprogramowaniem programowo wymuszam stałe 0 na R/-W, bo na płytce jest to jeszcze podłączone do portu uC.
  • #21 13261688
    dondu
    Moderator na urlopie...
    Aby uciąć dyskusję dot. R/W:

    ATmega16 - Jak ustawić masę na wybranych wyjściach portu?


    yokoon napisał:
    Jeden z uczestników forum pisał, iż nie działał mu wyświetlacz LCD 16*2.
    Port R/W w LCD skonfigurował programowo i nie działał.
    Po podłączeniu w/w pinu galwanicznie do masy wyświetlacz ruszył.

    Możesz wskazać tę dyskusję na forum?
  • #22 13261750
    yokoon
    Poziom 29  
    Panowie, wywiązała się jałowa dyskusja ponieważ nie przeczytaliście dokładnie mego postu #1.
    A w nim podałem "parametry" pinów portu C, gdzie do configuracji użyłem DDRC = &B111111 i zmierzyłem wartości, które występują i to wszystko.

    Powołałem się też na jednego z kolegów z forum, któremu nie działał układ gdy miał pin R/W ustawiany programowo. zaproponowałem podłaczenie bezpośrednio do masy i facet stwierdził, iż układ ruszył.
  • #23 13261805
    dondu
    Moderator na urlopie...
    yokoon napisał:
    Powołałem się też na jednego z kolegów z forum, któremu nie działał układ gdy miał pin R/W ustawiany programowo. zaproponowałem podłaczenie bezpośrednio do masy i facet stwierdził, iż układ ruszył.

    Ponownie poproszę - wskaż temat na forum.
  • #24 13261840
    yokoon
    Poziom 29  
    dondu napisał:
    yokoon napisał:
    Powołałem się też na jednego z kolegów z forum, któremu nie działał układ gdy miał pin R/W ustawiany programowo. zaproponowałem podłaczenie bezpośrednio do masy i facet stwierdził, iż układ ruszył.

    Ponownie poproszę - wskaż temat na forum.


    A w jaki to sposób mam wskazać ?
    Czytałem to w zeszłym roku.
  • #26 13262218
    Eagle
    Poziom 24  
    Proszę napisz czego oczekujesz od nas, z twoich wpisów jasno wynika, że masz większą wiedzę niż my wszyscy i do tego praktyczną.

    Bo jeśli chodzi o:
    Cytat:
    Chcę dokładnej masy, aby LCD dziłał prawidłowo - czytasz nie uważnie.


    Nie da się zewrzeć do GND, da się ustawić stan L, napięcie w stanie niskim jest zależne od obciążenia, stosowne wykresy w dokumentacji mikrokontrolera.

    Z dalszych twoich postów wynika, że chcesz GND bo ktoś zwarł i mu zadziałało. Wierzę w to, bo jeśli programowo w momencie zapisu miał tam stan H, zapis nie działał. Jak zwarł na siłę do GND wymusił stan L = permanentny sygnał "write" co maskowało nieprawidłowość w sterowaniu R/W i pozwalało tylko na zapis do LCD.

    Jeśli chcesz to samo osiągnąć masz dwa rozwiązania, zacznij poprawnie sterować linią R/W lub zewrzyj sobie linię R/W do GND.

    --------------------
    Tak off topic :
    Cytat:
    Mówisz o dokumentacji a ja Ci przedstawiam praktyczną próbę.

    W firmie w której pracuje jest powiedzenie :
    "Jeśli soft nie działa zgodnie ze specyfikacją, tym gorzej dla specyfikacji"
REKLAMA