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

[avr]Soft.SPI-zbyt niskie napięcia.

sottek 14 Cze 2010 07:42 1874 10
REKLAMA
  • #1 8187950
    sottek
    Poziom 10  
    Witam kolegów.
    Chce połączyć atmega32u4 i attiny2313 software'owym SPI, ale napotkałem na problem z napięciami.
    Szczegóły:
    -oba uC są na wspólnym zasilaniu i masie,
    -łączone kablem 6 żyłowym zakończonym wtykami RJ45,
    -kabel długości ok.1m.
    Problemem jest fakt, iż wystawienie stanu wysokiego na pinie SCK w atmedze po połączeniu z attiną daje tylko ok. 1,8V, zamiast oczekiwanych 5V. Cała sprawa jest o tyle dziwna, że specjalnie oba uC połączyłem na wspólnej masie i zasilaniu, żeby takiego niechcianego działania nie było, a teraz zmuszony jestem prosić o pomoc, bo sam nie daje rady.
    Ma Ktoś jakieś pomysły co z tym zrobić? Co może być powodem tak niskiego napięcia na stanie wysokim?
    Za pomoc z góry dziękuję.

    Poprawiłem tytuł.
    [zumek]
  • REKLAMA
  • #2 8187959
    mirekk36
    Poziom 42  
    Magistrala I2C została stworzona do łączenia układów znajdujących się na tej samej płytce bądź na kilku płytkach obok siebie w jednym urządzeniu a nie do połączeń kablowych na jakieś większe odległości.

    Poza tym czy słyszałeś kiedyś o podciąganiu linii SDC i SCL do VCC rezystorami 4,7K ????? coś czuję, że chyba nie. Stąd twoje 1,8V zamiast oczekiwanych 5V.
  • REKLAMA
  • #3 8187999
    Nagus
    Poziom 27  
    Pytanie dotyczyło SPI a nie I2C...

    A attiny masz dobrze skonfigurowanego? Znaczy, czy przypadkiem tiny nie wystawia na SCK swojego zegara?
  • REKLAMA
  • #4 8188024
    sottek
    Poziom 10  
    Zdecydowanie chodzi o SPI.
    Zegar attiny jest wejściem, bez podciągania do VCC.
    Zapomniałem podać: to mega pełni rolę "pseudo" mastera i to ona wystawia zegar do komunikacji.
    Swoją drogą marek36, słyszałem o podciąganiu do VCC. Tyle tylko, że licząc wydajność pradowa pinu atmegi wynosiłaby więcej niż w nocie katalogowej. Człowiek uczy się całe zycie, dlatego rozwiń proszę swoją myśl, może coś co piszesz jest na rzeczy.
  • #5 8188084
    mirekk36
    Poziom 42  
    sottek -> przepraszam, pokiełbasiło mi się na maxa, w innym wątku przeczytałem o I2C i tu jakoś odpowiedziałem..... ok moja wina.

    Przy SPI podciąganie nie jest takie istotne jak przy I2C. Jeśli master podaje zegar do slave a ty w tym czasie mierzysz napięcie - to chyba nie dziwne, że nie będzie to 5V. Przecież takich przebiegów nie mierzy się woltomierzem. Coś musi być nie tak w takim razie z częscią programową softwarowego SPI.
  • #6 8188118
    sottek
    Poziom 10  
    Lubie przyjmować krytykę, bo to zmusza mnie do nauki.
    Przebieg rzeczywiście nie mierzony miernikiem, bo troche trudno przy 16MHz coś tym pomierzyć. Przebieg widziałem na oscyloskopie.
    Jeszcze jedna rzecz w atmedze ten soft działa na portach przeznaczonych pod jtag, ten jednak wyłączony przez fuse bity.
  • #7 8188197
    tmf
    VIP Zasłużony dla elektroda
    Może głupie pytanie, ale w ATTiny pin SCK masz ustawiony jako wejściowy? Bo to wygląda tak jakby oba były wyjściem i na jednym masz stan wysoki, a na drugim niski.
  • REKLAMA
  • #8 8188259
    sottek
    Poziom 10  
    Drogą po nitce do kłębka, doszedłem, że problem jest z układem z attiny. Jego wpięcie powoduje opisywane dziwne zachowanie napięć.
    tmf SCK w attiny zdecydowanie jest wejściem, ale nasunąłeś mi pewną myśl:
    HIPOTEZA:
    Wpięcie kabla powoduje zwarcie linii SCK do VCC, powoduje takie zachowanie.

    Hipotez może głupia, ale za słaby jestem z wewnętrznej budowy uC.
  • #9 8189333
    kamyczek
    Poziom 38  
    Źle skonfigurowane porty...
  • #10 8190691
    sottek
    Poziom 10  
    Witam kolegów ponownie.
    Przede wszystkim bardzo dziękuję za zainteresowanie tematem i udzieloną pomoc. Problem rzeczywiście leżał po stronie źle skonfigurowanych portów w attiny, dopiero Wasze sugestie spowodowały bardzo dokładne przyjrzenie się programowi po raz n-ty i o to co odkryłem niemal od razu. Błąd niewybaczalny zamiast wpisu:

    w programie znalazł się:

    a jak wiecie diabeł tkwi w szczegółach. Moja sugestia: na przyszłość nie ufać opcji kopiuj wklej, bo to największe zło i często zwalnia od myślenia.

    P.S. W ramach zakończenia tematu i może zamknięcia go w sposób pożyteczny, pokusił by się Ktoś wytłumaczeniem, dlaczego wystawienie dwóch portów na wyjście i ich zwarcie powoduje takie zachowanie. Choć wiem, że może to być trudne i wymagać wglądu w strukturę uC.

    Pozdrawiam
    Sottek
  • #11 8191345
    tmf
    VIP Zasłużony dla elektroda
    Jeśli zewrzesz dwa wyjścia, z których jedno ma stan wysoki, a drugie niski to masz różnicę potencjałów, czyli płynie prąd. A że wyjścia procesora mają ograniczoną wydajność prądową to napięcie wyjścia w stanie niskim rośnie, a wyjścia w stanie wysokim maleje - MOSFETy na wyjściu mają przecież pewien opór pomiędzy S i D. Aż ustala się pewna równowaga.
REKLAMA