Hot plug UARTa

Pytania dotyczące problemów ze zrozumieniem kart katalogowych, not aplikacyjnych dla mkrokontrolerów AVR firmy Atmel, rozwiązania układowe z zastosowaniem AVR.
Awatar użytkownika
xor
User
User
Posty: 159
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Hot plug UARTa

Postautor: xor » poniedziałek 20 lis 2017, 13:23

UART w AVR nie jest, zdaje się, przewidziany do podłączania/rozłączania pod napięciem, ale co tak naprawdę może się stać złego jak to zrobimy?
Załóżmy, że jest sobie urządzenie pracujące na okrągło. Co jakiś czas chciałbym się do niego podłączyć przejściówką USB-UART i coś tam sobie przeczytać i zapisać. Normalnie piny UARTa były by jako INPUT (czyli HiZ), a na pinie Rx byłby sobie rezystor Pull Down o dużej wartości (~50kOm). Podłaczam przejściówkę, która podciąga pin Rx w górę, urządzenie wykrywa podłączenie i konfiguruje i włącza UART. Po skończonej transmisji odłaczam przejściówkę, urządzenie wykrywa FRAME ERROR, sprawdza czy na pinie Rx jest LOW, jeśli tak wyłacza UART, jeśli nie to nie wyłącza. Programowo się to wydaje OK, ale elektrycznie? Pomijam zmianę Gnd z pinami sygnałowymi, ale czynność podłączenia pewnie może generować jakieś przepięcia. Czy diody zabezpieczające (clamp diodes) wejście sobie z tym poradzą? Ewnetualnie na liniach Tx, Rx dać małe rezystory ograniczające im prąd. Jeszcze kwestia kolejności podłaczenia pinów - Gnd najpierw, potem sygnałowe, ale jak się podłączy w przeciwnej kolejności?
:? :?: :!:

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: Hot plug UARTa

Postautor: squeez » poniedziałek 20 lis 2017, 13:41

Wydaje mi się że nie powinno to sprawiać problemów ale jak masz miejsce i możliwości to daj optoizolację (transoptory) i wówczas nie będziesz ingerował w napięcia układu.

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: Hot plug UARTa

Postautor: squeez » poniedziałek 20 lis 2017, 13:53

Kolega wspominał o przejściówce USB-UART więc z zasilaniem przy paroizolacji nie powinno być problemu a w ostateczności taniej i mniej problematycznie niż izolowane przetwornice wyszło by zasilanie z baterii/akumulatorów owej "przejściówki".

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: Hot plug UARTa

Postautor: squeez » poniedziałek 20 lis 2017, 16:51

te zabudowane kompaktowe? Jakoś co jest zabudowane i chińskie to niekoniecznie temu ufam choćby jak przekaźniki SSR 40A w środku zalane czarną żywicą optotriak i triak BTA16 (16A) i gdzie tu 40A i SSR? :D

ale to tak na marginesie :D

Awatar użytkownika
xor
User
User
Posty: 159
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Hot plug UARTa

Postautor: xor » poniedziałek 20 lis 2017, 19:58

Dzięki za wypowiedzi. Uświadomiły mi jak mało wiem :-(
No więc tak: urządzenie jest już zmontowane więc zależy mi żeby jak najmniej ingerować w układ więc najbardziej podoba mi się opcja z transilem - mam akurat USBCL6-4, chyba się nada? Mam tylko pytanie bo na przykładowym schemacie aplikacyjnym w dataszicie nie ma rezystora, a gdzieś w schemacie nucleo czy discovery widziałem pomiędzy USBCL6 (czy podobnym układem) a pinem µC rezystor 30 czy 60 Omów, lepiej go dać czy nie trzeba?

ISO7221A jest fajny, muszę go sobie zapamiętać, ale urządzenie chodzi na bateryjkach, a scalak ma quiescent current 1mA, więc nie bardzo.

przy optoizolacji, trzeba jeszcze zastosować izolowaną przetwornicę DC/DC jeżeli urządzenie nie będzie miało swojego źródła zasilania

Nie bardzo rozumiem. Chodzi o to, że urządzenie oraz to co jest po drugiej stronie optoizolatora czy ISO7221 mają być zasilane z róznych źródeł? Czyli np. moja przejściówka na CP2102 jest zasilana z USB jednocześnie podaje na złącze UART napięcie z VBUS albo napięcie 3,3 ze stabilizatora to mam to napięcie "przepuścić" jeszcze przez izolowaną przetwornicę (czyli jak rozumiem której wejście jest galwanicznie odseparowane od wyjścia) i dopiero podać na urządzenie?

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: Hot plug UARTa

Postautor: squeez » poniedziałek 20 lis 2017, 20:43

z izolowaną przetwornicą chodzi o to że jak stosujesz optoilozację to żeby byłą to "pełna" izolacja łącznie z masą a nie jak niekiedy ludzie stosują "para izolację" czyli masa wspólna a sygnały przez optoizolacje.
W przypadku pełnej izolacji to co jest z drugiej strony musi mieć jakieś zasilanie (czym zaświecić LED-a w transoptorze), więc jeśli miało by to być zasilane z tego samego źródła co główny układ to zasilanie też powinno być zasilane stąd izolowana przetwornica. Ale w twoim przypadku zasilanie może iść z portu USB.

Awatar użytkownika
xor
User
User
Posty: 159
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Hot plug UARTa

Postautor: xor » czwartek 30 lis 2017, 11:29

No więc to działa tak jak oczekiwałem. Zrezygnowałem z rezystora pull down na pinie Rx i wykrywanie manewrów z UARTem jest czysto programowe. Normalnie moduł UART w µC jest skonfigurowany ale wyłączony. Pod piny Rx, Tx jest podpięte przerwanie PCINT, a piny wewnętrznie podciągnięte do góry. W momencie gdy po podłączeniu adaptera USB-UART zacznie się transmisję, PCINT wykrywa bit startu, włącza UART, ustawia jakiś timeout dla UARTa i wyłącza przerwanie PCINT. Reakcja jest na tyle szybka, że nie ma gubienia znaków czy błędów transmisji (przy baudrate 38400). Po upływie timeouta jest sprawdzana flaga "transmision complete", jeśli jest ustawiona to timeout jest odnawiany a flaga skasowana, jeśli nie jest ustawiona UART jest wyłączany a przerwanie PCINT włączane.
Pozostaje otwarta kwestia elektryczna. Przy takim rozwiązaniu można by spokojnie zastosować optoizolację, więc się namyślam...

Awatar użytkownika
gaweł
Expert
Expert
Posty: 836
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Hot plug UARTa

Postautor: gaweł » sobota 06 sty 2018, 11:24

Wydaje mi się, że cały problem wynika z pewnego szczegółu. Otóż stanem pasywnym na linii RxD oraz TxD jest logiczna jedynka. Jeżeli na RxD utrzymuje się taki stan, to odbiornik czeka na znak i nic się nie dzieje. Jeżeli ta linia zostanie wysterowana do logicznego zera, to w momencie zmiany stanu (z jedynki na zero), odbiornik wykrywa to jako bit startu transmisji. Oczywiście każdy następny odbierany bit będzie zerem i po upłynięciu czasu na odebranie wszystkich bitów (łącznie z bitem stopu) odbiornik stwierdzi, że jest błąd ramki (odebrana sekwencja → w rzeczywistości stały stan zera, nie jest poprawna). Wystarczy na RxD rezystor przykładowo 10k podciągający do +5V (można nawet dać dwa rezystory, na RxD i TxD, wtedy w chwili prezyłączania przejściówki nie wystąpią hazardy zarówno dla AVR i przejściówki). W takich układach nie jest potrzebna optoizolacja, nie występuje tutaj problem różnych potencjałów odniesienia ani nie wystąpią jakieś przepięcia na linii. Przejściówka USB jest wpinana na krótko bez żadnych długich przewodów.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse


Wróć do „AVR - problemy układowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość