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 ATMega32] - Bezpieczna komunikacja USART z urządzeniem 3,3V, zmiany przy 3,3V

Dzedorak 08 Lis 2012 17:34 2139 16
REKLAMA
  • #1 11504681
    Dzedorak
    Poziom 13  
    Witam,

    mam pytanie dotyczące komunikacji ATMegi działającej na 5V z urządzeniem 3,3V.

    Jeżeli chodzi o transmisję z uC do urządzenia to zwykły dzielnik napięcia wystarcza, mam natomiast pytanie jak to jest z odbieraniem danych - powinno działać bez niczego tylko mam jedną wątpliwość, oba piny od USARTa są zawsze w stanie wysokim (odbiorczy też) czy więc podłączając pod niego pin który nie wytrzyma 5V nie upalę go?

    To dzieję się na razie na płytce ewaluacyjnej stąd jest zawsze 5V, jak dokończę to już zrobię wszystko razem na 3,3V i tu też mam pytanie - czy cokolwiek muszę zmieniać, zmieniając wartość napięcia zasilania?
    Zmieni mi się na pewno Vref od ADC, wiec to na pewno zmienie, a cos jeszcze muszę? fusy zostają tak samo?

    Pozdrawiam,
  • REKLAMA
  • #2 11504855
    excray
    Poziom 41  
    Podłącz Tx-Rx i Rx-Tx przez oporniki 4k7 i będzie ok.
  • REKLAMA
  • #3 11504953
    mirekk36
    Poziom 42  
    Zobacz sobie jak można zrobić dopasowanie sygnałów pomiędzy układami zasilanymi 3,3V i 5V. Rzuć okiem na jeden ze schematów

    https://www.elektroda.pl/rtvforum/topic1414894.html

    albo jeszcze lepiej - weź w łapki scalak 74LVC125 i bez zmrużenia oka będzie to najlepsze rozwiązanie ;) wykorzystasz z niego dwa bufory w dwóch kierunkach. Scalaka zasilisz z +3,3V a na jego wejścia możesz śmiało podawać +5V ponieważ ma wejścia (5V tolerant) za to stan wysoki na wyjściu nawet przy zasilaniu scalaka 3,3V będzie spokojnie wykryty przez procka jako wysoki.
  • REKLAMA
  • #4 11505013
    Dzedorak
    Poziom 13  
    Wiem, że można użyć scalaków - ale chciałem to załatwić bez nich :P
    Stan 3,3V będzie wykryty, chodzi mi tylko o to, że wejście USARTA (PIN RX) jest wewnętrznie podciągane do zasilania (5V) czy więc podpinając pin TX urządzenia nieodpornego na 5V nie spalę go?
  • #5 11505087
    mirekk36
    Poziom 42  
    Jak by tak można było robić jak piszesz to nikt by sobie konwersją napięć głowy nie zawracał. Sam zresztą czujesz co się stanie - więc po co pytać ? .... pewnie że uszkodzisz w końcu port.
  • #6 11505245
    Dzedorak
    Poziom 13  
    W "tutorialu" do Wixela od Pololu jest następujący schemat:

    [AVR ATMega32] - Bezpieczna komunikacja USART z urządzeniem 3,3V, zmiany przy 3,3V

    więc myślałem, że tak można - tutaj, też wydaje się to dosyć logiczne, skoro to wejście ATMegi to nie powinna nic popalić, chociaż po połączeniu napięcie jest trochę duże (ok. 3,6V, czy tyle też może coś tam uszkodzić?)
  • #7 11505436
    Fredy
    Poziom 27  
    A po co robisz podciąganie na wejsciu Rx?
  • #8 11505582
    Dzedorak
    Poziom 13  
    Nie robię, ale na tym pinie mam zawsze 5V :/
  • #9 11506046
    Fredy
    Poziom 27  
    Sprawdż czy gdzieś nie wpisujesz w rejestr PORTD jedynkę na bicie zerowym.

    Wyłączyć możesz poprzez polecenie:
    PORTD&=~(1<<0); w języku C lub PORTD.0=0 w Bascomie

    ale nalepiej to poszukaj w programie gdzie to podciąganie włączasz , bo na starcie bit ten jest wyłączony.
  • #10 11508739
    Dzedorak
    Poziom 13  
    Takie coś nie zadziała :P

    Tam jest po prostu zawsze 5V, jeżeli to nie przez samą atmegę to przez to, że te piny są na stałe połączone ze scalakiem USB <-> RS232 (wszystko jest na płytce EvB)

    później sprawdzę, czy na płytce stykowej jest normalnie
  • REKLAMA
  • #11 11509121
    excray
    Poziom 41  
    Chyba mój post jest niezrozumiały. Załączam więc obrazek.
    [AVR ATMega32] - Bezpieczna komunikacja USART z urządzeniem 3,3V, zmiany przy 3,3V
  • #12 11509311
    Dzedorak
    Poziom 13  
    I co? coś takiego wystarczy? jak to możliwe? :P
  • #13 11509334
    excray
    Poziom 41  
    Dzedorak napisał:
    I co? coś takiego wystarczy? jak to możliwe? :P

    A co byś chciał więcej? I czemu niby miałoby nie działać? Wixel ma na wejściach Rx i Tx diody obcinające napięcia powyżej Vss i Vdd więc dostaje sygnał 0-3,3V a opornik ogranicza prąd płynący przez te diody do (5-3,3)/4700 = 0,3mA. A w drugą stronę Atmega "przeczyta" wszystko co ma więcej jak 2V jako "1" a poniżej jako "0" więc 3,3V z Wixela też jej "pasi". A opornik w drugą stronę jest tylko profilaktycznie - jakbyś się pomylił i zamiast jako wejście ustawiłbyś tam wyjście w stanie wysokim.
  • #14 11509653
    Dzedorak
    Poziom 13  
    Na pinach od USARTA (Rx i Tx) Wixel nic nie ma (ograniczeń napięcia żadnych), więc samo obcięcie prądu chyba nie wystarcza
  • Pomocny post
    #15 11509734
    excray
    Poziom 41  
    Te diody są w strukturze układu scalonego.
  • #16 11509760
    Dzedorak
    Poziom 13  
    Aha, ok, spróbuję w takim razie :D
    dzięki
  • #17 11509862
    excray
    Poziom 41  
    Tylko mam jeszcze jedną uwagę - ten procek bazuje na 8051 i wyjścia są na P0, a w 8051 P0 jest portem bez podciągania. Więc gdyby się okazało że nie otrzymujesz odpowiedzi z Wixela to dołóż opornik np. 10k między Tx Wixela a +3,3V. Taki zewnętrzny pullup.
REKLAMA