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

[ATMEGa128] MISO - dziwnie małe napięcie

rafaloos 30 Paź 2010 23:46 2327 10
  • #1 8683156
    rafaloos
    Poziom 11  
    Witam,

    Mam taką konfigurację:

    [ATMEGa128] MISO - dziwnie małe napięcie

    Próbuje odczytać z MCP2515 jakiś rejestr.
    Wiem co w danym rejestrze się znajduje tzn. jaka wartość.
    Niestety, ale dziwna rzecz, bo nie otrzymuje tego co bym chciał.
    Sprawa tym bardziej dziwna, że jak przykładam miernik i mierze jaki jest poziom napięcia na linii MISO to jak widać na rysunku: max. dostaję 1.76 V
    Teraz pytanie czy to napięcie jest "normalne" czy jest za niskie(powinno być równe Vcc = 5,25V).??
    Podejrzewam, że podpięty konwerter poziomów logicznych 74LVC08AD na linię MISO może coś tutaj psuć.
    Czy jeżeli podciągnę linie MISO do zasilania przez jakiś rezystor nie spali mi czasami tego wejścia?
    Jeżeli nie to jaka powinna być wartość tego rezystora podciągającego przy Vcc = 5,25V??
    Pozdrawiam


    PS. Zdarza się jak jak przykładam miernik i mierzę napięcie na linii MISO, to CZASAMI dostaję to czego oczekiwałem z tego MCP2515. Teraz pytanie czy jest to normalne czy mój miernik ma jakieś kosmiczne moce i nagle wszystko zaczyna działać(napięcie na tej linii ciągle zmienia się od 0.3 V do 1.76V przy Vcc = 5.25V)?
  • #2 8683185
    gargamel22
    Poziom 12  
    A to napięcie jak mierzysz? Bo MISO to chyba sygnał prostokątny? Także jeśli miernikiem to może pokazuje Ci wartość średnią? A może zobacz na oscyloskopie?
  • #3 8683205
    rafaloos
    Poziom 11  
    gargamel22 napisał:
    A to napięcie jak mierzysz? Bo MISO to chyba sygnał prostokątny? Także jeśli miernikiem to może pokazuje Ci wartość średnią? A może zobacz na oscyloskopie?


    Niestety, ale nie mam oscyloskopu. Mierze tylko miernikiem.
    Program jest tak napisany, że odczyt mam tylko w jednym momencie.
    Później przez czas X, linia MISO powinna być w stanie wysokim czyli podciągnięta do Vcc.
    A tu niestety, tylko 1.76V w stanie H.
  • #4 8683246
    tmf
    VIP Zasłużony dla elektroda
    A jak mierzysz to sygnał CS układu MCP jest aktywny? Bo jeśli nie to linia MISO wisi w powietrzu, stąd takie napięcie.
  • #5 8683264
    rafaloos
    Poziom 11  
    tmf napisał:
    A jak mierzysz to sygnał CS układu MCP jest aktywny? Bo jeśli nie to linia MISO wisi w powietrzu, stąd takie napięcie.


    Tak jest aktywny kiedy próbuje odczytać.
    Wczesniej wszystko robiłem na ATMEGa8.
    Wszystko działało. Program zaadaptowałem pod ATMEGe128.
    Załóżmy, że mam błąd w programie (w co raczej wątpię) to nie dziwny jest fakt, że napięcie na tej linii w stanie wysokim wynosi tylko 1.76V ??
    Wg mnie powinno być równe Vcc. Tak przynajmniej mam na ATMEDZe8.
    Na linii MOSI mam normalnie 0.3V lub 5,25V.
    Mnie się wydaję, że przez ten konwerter jakoś mocno spadło napięcie.
    Nie jestem pewny, dlatego zwróciłem się z tym problemem tutaj na forum.
    Pozdrawiam



    //edit:
    Cały Port B ustawiłem jako wyjście, wewnętrznie podciągnąłem każdy pin do "1".
    Sprawdziłem miernikiem napięcia na poszczególnych pinach.
    Na wszystkich poza tym MISO mam ~5V.
    Na linii MOSI jest 1.18V.
    Domyślam się, że powinno być więcej.
    Czy fakt, że do tej linii podłączone jest wyjście bramki AND (74LVC08AD) może mieć tutaj jakiś wpływ?
  • #7 8683764
    rafaloos
    Poziom 11  
    Jeżeli to coś pomoże.
    Jak wspomniałem do linii MISO dochodzą tylko 2 2 sygnały.
    Jeden od MCP2515(MISO) i drugi to wyjście z bramki AND (74LVC08AD).

    [ATMEGa128] MISO - dziwnie małe napięcie [ATMEGa128] MISO - dziwnie małe napięcie
  • #8 8683971
    BoskiDialer
    Poziom 34  
    Ta bramka AND nie ma możliwości ustawienia wyjścia w stan HiZ, więc jeśli będziesz chciał, aby MCP2515 był aktywny (CS w stanie niskim), to popłynie prąd od bramki do MCP2515 - próbujesz wysterować jedną ścieżkę dwoma układami. W ten sposób albo coś uszkodzisz albo popłynie trochę duży prąd, jakkolwiek niczego dobrego nie uzyskasz. Musisz pozbyć się bramki AND wymieniając ją na bramkę z wyjściem OC oraz dodając pullup, lub przeprojektować płytkę dając zwykły bufor, który można przełączyć w tryb HiZ.

    ps. mam wrażenie, że widziałem tą płytkę, jak Grzesiek ją lutował na politechnice.

    -- edit:
    Zmiana typu bramki nic nie da: jeśli karta SD w danym momencie utrzyma stan niski (lub nie będzie go utrzymywać, ale wiszący pin będzie akurat miał potencjał stanu niskiego), pin MISO będzie ściągany do masy. Należy przeprojektować płytkę lub wywalić bufor wstawiając w jego miejsce 4 rezystory i mieć nadzieję, że atmega będzie poprawnie widzieć poziomy napięć 3v3 jako stan wysoki. Ostatecznie bramka AND z wyjściem OC oraz rezystor podciągający przed samą bramką aby zadbać o stan wysoki przy nieaktywności karty oraz rezystor podciągający za bramką.
  • #9 8684040
    rafaloos
    Poziom 11  
    Hehe, patrz jaki ten świat mały :D

    Myślałem, że do SPI można podpiąć równolegle wiele układów ale jak rozumiem muszą być takie same albo co najmniej muszą mieć zgodne poziomy napięć.
    Jak wiesz, płytka już jest zrobiona więc nie mam szans jej przeprojektować.
    W takim razie czy istnieje możliwość wymiany tego układu 74LVC... na jakis "odpowiednik" tak aby to ruszyło?
    Czy może lepiej przepiąć MISO któregoś z tych układów do jakiegoś innego pinu?
    Pozdrawiam
  • Pomocny post
    #10 8684057
    BoskiDialer
    Poziom 34  
    do SPI można podpiąć równolegle wiele układów ale tylko pod warunkiem, że wszystkie układy nieaktywne mają pin MISO w stanie HiZ. Tutaj bramka AND łamie tą zasadę, gdyż jej wyjście jest zawsze w stanie wysokim albo niskim. Ciężko będzie coś z tego wyciągnąć, możesz wstawić 74*09 oraz dodać podciąganie przed i za bramką.

    -- edit:
    Komplikacją będzie, że trzeba wstawić również podciąganie na pinach CS,MOSI i SCK od strony karty.
  • #11 8685137
    tmf
    VIP Zasłużony dla elektroda
    A nie prościej wsadzić tam bufor trójstanowy, LVC125? Sterowanie buforem podpiąć pod linię CS i problem z głowy. Z drugiej strony jako konwersja napięć być może wystarczy zwykły szeregowy rezystor?
REKLAMA