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

Cuda na kiju czyli odczyt z portu

24 Sty 2009 02:09 996 5
  • Poziom 9  
    Witam serdecznie,

    Zabawę z AVRem zaczołem dopiero kilka dni temu więc może nie rozumiem jakiegoś oczywistego faktu ale dnia dzisiejszego oszalałem :D
    Podłączyłem sobię LCD HD44870 aby mieć lepszy wgląd w to co dzieje się w kontrolerze i postanowiłem pobawić się z portem A ustawionym na odczyt (DDRA = 0x0). W pętli ustawiłem aby wyswietlał mi 8 bitow na LCD co się okazało 0/1 zmieniały się bez mojej ingerencji same z siebie. Czasem potrafily działac dobrze w sensie uspokoic się i nie szaleć ale niestety tylko na krótką chwilę. Jeśli dany pin z portu A zostal uziemiony wtedy LCD reagowal bezblednie i wyswietlal 0 na dany PIN. Jak tylko odłączylem go od uziemienia znów zaczynał wariować... Pomyslalem sobie, pewnie źle napisałem sterownik do LCD czy coś źle podłączylem itd wiec przeszedłem do klasycznego przykładu z diodami przełącznikami i kodem:

    Code:

    DDRA = 0xFF;
    DDRB = 0x0;
          
    while(1)
    {
       PORTA = PINB;
    }


    Co sie okazalo czasami diody, które powinny świecić nie świeciły. Przez przypadek zauważyłem, że jak trzymam rękę nad układem (nie dotykając go) wszystko zaczyna działać jak nalęzy WTF? jeśli to nie pomagało wystarczyło trzymać palec na mikrokontrolerze. Sytuacja ma się tak samo na wszystkich portach :D

    Wie ktoś o co chodzi ??

    Dodano po 3 [minuty]:

    (uzywam ATMega8515)
  • Poziom 42  
    Mnie to wygląda na prawidłowe działanie przy wyłączonym pull-up. Linie znajdują się w stanie wysokiej impedancji, w przypadku układów CMOS oznacza to bardzo dużą czułość na zewnętrzne zakłócenia (pole elektrostatyczne i pole elektromagnetyczne).
  • Poziom 9  
    a tak cos czytalem o tym pullupie i zakluceniach - to co mowisz ma absolutnie sens. Da sie to jakos ustawic aby nie bylo takie czule?
  • Poziom 12  
    PORTx włącza rezystory podciągające, gdzie x to port A, B,C lub D. Wtedy gdy zewrzesz dany pin (y) do masy to PINxy da 0. Trzeba pamiętać żeby DDRx był ustawiony jako wejście (0), w przeciwnym wypadku poplynie prąd zwarciowy.
  • Poziom 9  
    Ustawilem PORTx na 1 i zaklucenia uciekly uff.. swoja droga do czego potrzebna jest tak wysoka czulosc?
  • Poziom 21  
    Nie wysoka czułość tylko wysoka impedancja - chodzi o to, że możesz mieć połączone kilka wyjść i jak inne jest aktywne to nieaktywne dajesz w stan trzeci żeby nie kolidowało.