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

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

offca358 23 Maj 2011 18:17 2321 8
  • #1 9536581
    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?
  • #2 9536633
    asembler
    Poziom 32  
    A skąd wiadomo że tam ustawiasz stan niski?
  • #3 9536654
    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.
  • #4 9536675
    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).
  • #5 9536726
    offca358
    Poziom 17  
    Program jest wzięty z książki "Mikrokontrolery AVR, Język C, Podstawy programowania". Definiuję jako wyjście poleceniem DDRC.
  • Pomocny post
    #8 9537003
    Wojtek75
    Poziom 24  
    Zdecyduj się:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    mam nadzieję że widzisz błąd.
  • #9 9537062
    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%
REKLAMA