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.

[ATMega 8] Dziwne zachowanie stanów H/L na portach I/O

offca358 23 Maj 2011 18:17 1901 8
  • #1 23 Maj 2011 18:17
    offca358
    Poziom 17  

    Witam wszystkich.
    Na początki zabawy z elektroniką cyfrową, skonstruowałem sobie moduł testowy dla ATMega 8 z procesorem wg poniższego schematu:
    [ATMega 8] Dziwne zachowanie stanów H/L na portach I/O [ATMega 8] Dziwne zachowanie stanów H/L na portach I/O [ATMega 8] Dziwne zachowanie stanów H/L na portach I/O

    I napotkałem na pewien problem:
    Otóż na pinach portów I/O (B,C,D) w stanie niskim występuje napięcie 2.30V względem masy. Przy wyzerowanym flash'u jest podobnie. Jeżeli zaprogramować podawanie stanu wysokiego załóżmy na PB0, to na nim napięcie względem masy jest typowe dla stanu wysokiego - 5V, na pozostałych 2,30V.
    Pomiary ogólne jakie udało mi się wykonać, wskazują na prawidłowe podłączenie procesora do zasilania. Na VCC i AVCC jest napięcie zasilania, na GND jest masa, na resecie jest też 5V, czyli stan wysoki. Kondensatory 100n są wszędzie, gdzie powinny być. Procesor bez problemu się programuje.
    Czy to normalne zachowanie dla ATMegi? Gdzie jeszcze szukać błędów?

    0 8
  • #2 23 Maj 2011 18:28
    asembler
    Poziom 32  

    A skąd wiadomo że tam ustawiasz stan niski?

    0
  • #3 23 Maj 2011 18:33
    offca358
    Poziom 17  

    chociażby przy wsadzie z mrugającym LED. Jak ustawiam zmianę stanu pinu z opóżnieniem 2000 ms, to w stanie wysokim jest 5V a w niskim jest zmiana na 2,30V.
    Myślałem, że miernik mi padł, więc podłączyłem LED, i w stanie wysokim świecił, w niskim też, ale ledwo ledwo.

    0
  • #4 23 Maj 2011 18:37
    manekinen
    Poziom 29  

    Nie przestawiasz portów w tryb wyjścia. Domyślnie pracują one w trybie wejścia i wpisując "1" lub "0" włączasz jedynie rezystor podciągający. Więc stan wysoki to 5V a stan niski to stan nieustalony, np coś w okolicach 1/2 VCC (zależnie od warunków pomiaru).

    0
  • #5 23 Maj 2011 18:49
    offca358
    Poziom 17  

    Program jest wzięty z książki "Mikrokontrolery AVR, Język C, Podstawy programowania". Definiuję jako wyjście poleceniem DDRC.

    0
  • Pomocny post
    #8 23 Maj 2011 20:02
    Wojtek75
    Poziom 23  

    Zdecyduj się:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    mam nadzieję że widzisz błąd.

    0
  • #9 23 Maj 2011 20:16
    offca358
    Poziom 17  

    Kurcze, przeglądałem kod kilka razy, dopiero jak ktoś wskaże błąd, to się wydaje być ewidentny. miało być DDRB...
    Dziękuję za pomoc. Czasami jednak potrzeba, żeby ktoś jak "koniowi" pokazał, gdzie jest błąd.

    P.S. Poprawiony program działa w 100%

    0