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.

Problem z portem i dioda LED na Atmega8

dziadzio_ 19 Gru 2012 11:53 1569 4
  • #1 19 Gru 2012 11:53
    dziadzio_
    Poziom 8  

    Witam, czy może mi ktoś wytłumaczyć, dlaczego dioda nie zapala się po podaniu stanu niskiego na inny PIN procka? Schemat jest taki, że PC0 jest wejściem z podciągniętym rezystorem do Vcc. Dioda jest podłączona np. PB0 przez rezystor do Vcc. Przykład kodu jest taki.


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Chodzi o to, że po wgraniu kodu do procesora, gdy na pin wejściowy jest podawane L, to dioda się nie zapala. Tak samo dzieje się, gdy cały czas na ten pin jest podany L. Procek jest sprawny, bo pisząc zupełnie inny program i wykorzystując te dwa piny, wszystko działa jak należy. Pytam, ponieważ, może jest jakiś głupi błąd, a tego nie widzę. Nie ma opóźnienia, po instrukcji PORTB &= ~OUT_SYG, ponieważ i tak ustawianie pinu PB0 powinno odbywać sie co w takt procesora, więc tak naprawdę, dioda LED powinna świecic do momentu, gdy na pinie wejsciowym panuje stan niski.

    0 4
  • #2 19 Gru 2012 16:10
    snajper7.92
    Poziom 14  

    Atmega8 może nie mieć podciągnięcia do masy, jeśli ustawiasz stan niski pin jakby wisi w powietrzu. Podłącz diodę przez rezystor do masy i ustawiaj port podciągając go do VCC. Może to Ci pomoże. Link Tu masz jeszcze wewnętrzne połączenia pinu.Link Zauważ że wpisanie do portu 1 lub 0 włącza lub wyłącza podciągnięcie do VCC.Link

    0
  • #3 19 Gru 2012 17:45
    dziadzio_
    Poziom 8  

    Masz rację pisząc, że wpisanie do portu 0 lub 1 "podciąga" do Vcc lub nie, ale nie w takiej sytuacji. Zauważ, że tam gdzie jest dioda LED, kierunek portu to wyjście, a w takiej sytuacji, nie ma mowy o podciąganiu. Pull-up występuje, ale w przypadku, gdy rejestr kierunku jest ustawiony jako wejście. Wówczas, podciąga się PIN do Vcc, aby na nim nie panałował stan H/Z - wejście nie powinno pływać.

    0
  • #4 19 Gru 2012 18:00
    snajper7.92
    Poziom 14  

    Widzę że się nie zrozumieliśmy, cały czas piszę o porcie wyjściowym. Jeśli kierunek portu jest ustawiony jako wyjście np. DDRB = 0xFF; a diody będą podłączone jak na rys. Link, to podciągnięcie portów lub jak kto woli podanie stanu wysokiego poprzez wpisanie jedynki np. PORTB = 0xFF; powoduje zaświecenie tych diod. Po za tym powinieneś podać jakiej wartości masz rezystor przy diodzie sprawdzić czy kierunek diody masz właściwy (w twoim przypadku anoda do VCC katoda do portu) no i czy dioda jest sprawna.

    0