eGospodarka.pl

eGospodarka.plGrupypl.misc.elektronika › Slave i2c blokuje magistralę....
Ilość wypowiedzi w tym wątku: 20

  • 1. Data: 2018-10-31 21:24:48
    Temat: Slave i2c blokuje magistralę....
    Od: Marek <f...@f...com>

    Taka sytuacja: jest na magistrali tylko jeden master i jeden slave.
    Komunikacja potrafi działać kilka dni bez problemów po czym nagle
    master zgłasza bus collision. Okazuje się, że slave trwale ściąga do
    masy sda i tak trzyma. Podobno może się tak zdarzyc, np. slave
    dostał jakieś zakłócenia, nie zobaczył zegara i pozostał
    zawieszony na ack. Jest na to sposób polegający na "ręcznym"
    wygenerowaniu kilku taktów scl by slave się "odwiesił" i zwolnił
    magistralę. Niestety to w tym przypadku nie pomaga, pomaga jedynie
    off/on zasilania slave'a. Slave to ds2482, nie wiem czy to problem
    osobniczych w tego układu ale tak z ciekawości, czy to częsta
    przypadłość slave'ów i2c takie zawieszenie się?

    --
    Marek


  • 2. Data: 2018-10-31 22:31:43
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2018-10-31 o 21:24, Marek pisze:
    > Taka sytuacja: jest na magistrali tylko jeden master i jeden slave.
    > Komunikacja potrafi działać kilka dni bez problemów po czym nagle master
    > zgłasza bus collision. Okazuje się, że slave trwale ściąga  do masy sda
    > i tak trzyma. Podobno może się tak zdarzyc, np.  slave dostał jakieś
    > zakłócenia, nie  zobaczył zegara  i  pozostał zawieszony  na ack. Jest
    > na to sposób polegający na "ręcznym" wygenerowaniu kilku taktów scl by
    > slave się "odwiesił" i zwolnił magistralę. Niestety to w tym przypadku
    > nie pomaga, pomaga jedynie off/on zasilania slave'a. Slave to ds2482,
    > nie wiem czy to problem osobniczych w tego układu ale tak z ciekawości,
    > czy to częsta przypadłość slave'ów i2c takie zawieszenie się?
    >

    Mam praktycznie zerowe doświadczenie z I2C, ale to co opisujesz wygląda
    jak latch-up pinu w scalaku.

    Czy jest szansa, że na pinach pojawia się chwilowy stan poniżej -0,3V.
    To może spowodować latch-up.
    Przyczyną może być np. za duża indukcyjność połączenia między
    kondensatorem blokującym zasilanie scalaka i jego strukturą wewnętrzną,
    albo zła wartość lub typ (ESR) kondensatora. Np. obudowa przewlekana ma
    z natury większe impedancje połączeń zasilań do struktury bo do pinów
    jest dalej.
    Impuls prądu pobierany przez scalak w czasie zmiany stanu może na tych
    indukcyjnościach wydzielić impulsowe spadki napięcia. Potencjał GND
    scalaka skacze do góry (VCC w dół), gdy tymczasem inny scalak utrzymuje
    stan linii na poziomie GND i już wejście danego scalaka widzi napięcie
    poniżej jego GND, które może doprowadzić do latch-up-u struktur
    pasożytniczych pina.
    P.G.


  • 3. Data: 2018-11-01 09:01:34
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Marek <f...@f...com>

    On Wed, 31 Oct 2018 22:31:43 +0100, Piotr
    Gałka<p...@c...pl> wrote:
    > To może spowodować latch-up.
    > Przyczyną może być np. za duża indukcyjność połączenia między
    > kondensatorem blokującym zasilanie scalaka i jego strukturą
    > wewnętrzną,
    > albo zła wartość lub typ (ESR) kondensatora. Np. obudowa
    > przewlekana ma
    > z natury większe impedancje połączeń zasilań do struktury bo do
    > pinów
    > jest dalej.

    Ten ds pracuje w trudnym elektrycznie środowisku (rozdzielnia
    elektryczna), ma podłączone 3 20m przewody z termometrami (każdy na
    osobnym kanale). Szanse na zbieranie ESD z okolicy ma bardzo duże.
    Jak się trochę w tym temacie poszpera to okazuje się, że problem z
    zatykającymi się slave'ami i2c występuje (ogólnie, nie tylko w tym
    szczególnymuklafzie, o którym mówimy). Niestety większoś układów
    slave i2c nie ma pina reset przydatnego w takich sytuacjach, zaleca
    się sztuczkę z generacja taktów zegara aż zwolni SDA (o ile nie jest
    to latchup, o którym piszesz a jedynie rozsynchronizowanie). Jeśli to
    nie pomaga a układowi często się to zdarza taki latchup to trzeba
    niestety zaimplementować slave'owi power reset....

    --
    Marek


  • 4. Data: 2018-11-02 12:33:39
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2018-11-01 o 09:01, Marek pisze:

    > Ten ds pracuje w trudnym elektrycznie środowisku (rozdzielnia
    > elektryczna),  ma podłączone 3 20m przewody z termometrami (każdy na
    > osobnym kanale). Szanse na zbieranie ESD z okolicy ma bardzo duże.
    > Jak się trochę w tym temacie poszpera to okazuje się, że problem z
    > zatykającymi się  slave'ami i2c występuje (ogólnie, nie tylko w tym
    > szczególnymuklafzie, o którym mówimy). Niestety większoś układów slave
    > i2c nie ma pina reset przydatnego w takich sytuacjach, zaleca się
    > sztuczkę z generacja taktów zegara aż zwolni SDA (o ile nie jest to
    > latchup, o którym piszesz a jedynie rozsynchronizowanie). Jeśli to nie
    > pomaga a układowi często się to zdarza taki latchup to trzeba niestety
    > zaimplementować slave'owi power reset....
    >

    Poszukałem co to takiego ten DS2482.
    Rozumiem, że do niego masz bezpośrednio podłączone 20m kable.

    Urządzenia normalnie bada się na odporność na ESD, burst i surge.
    ESD to w sumie symulacji dotknięcia urządzenia przez naelektryzowanego
    człowieka.
    Burst to symulacja różnych zjawisk związanych z przełączaniem prądów
    (np. iskrzenie na stykach przekaźników/styczników).
    Surge to symulacja uderzającego gdzieś w pobliżu pioruna lub jakichś
    awaryjnych zdarzeń w sieci energetycznej (włączenie/wyłączenie podsieci
    może skutkować zakłóceniami podobnymi do tych od pioruna).

    Na tyle na ile zrozumiałem to to Twoje urządzenie raczej jest narażone
    na burst i surge.

    Surge to impuls napięciowy 50us lub prądowy 20us (jak wyjście generatora
    się zewrze to prąd spada szybciej niż napięcie w nie obciążonym
    generatorze). Takie impulsy podaje się na linie zasilania AC urządzeń bo
    zakłada się że mogą się pojawić (piorun, przepięcia z sieci).
    Jeśli wychodzi (np. długie kable), że linie sygnałowe należy zbadać na
    odporność na surge to generator surge podłącza się nie bezpośrednio
    tylko przez układy redukujące jego moc (bo na linie sygnałowe surge
    dostaje się pośrednio, a nie prosto z sieci). Elementem ograniczającym
    prąd jest wtedy rezystor 40om. Według moich symulacji jak zerze się
    wyjście generator surge z podłączonym rezystorem 40om to uzyska się
    impuls prądu, który spada do połowy gdzieś po 47us.
    Typowym wymaganiem jest impuls Surge 1kV (1kV/40om = 25A).

    Pierwszym na co bym patrzył w schemacie Twojego urządzenia to czy
    wejścia 1-wire wytrzymają impuls 25A/50us. Choć być może normy dla
    urządzeń pracujących w rozdzielniach elektrycznych specyfikują nie 1kV
    surge a może kilka razy więcej.
    P.G.


  • 5. Data: 2018-11-04 01:50:53
    Temat: Re: Slave i2c blokuje magistralę....
    Od: q...@t...no1 (Queequeg)

    Marek <f...@f...com> wrote:

    > ma podłączone 3 20m przewody z termometrami (każdy na osobnym kanale).

    Jakie masz rezystory magistrali I2C? Może warto zmniejszyć?

    Zastanawiam się też, czy (jeśli problemem jest latch-up) transil na linii
    1wire nie rozwiązałby problemu...

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 6. Data: 2018-11-04 11:17:09
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Marek <f...@f...com>

    On Sun, 4 Nov 2018 00:50:53 +0000 (UTC), q...@t...no1
    (Queequeg) wrote:
    > Jakie masz rezystory magistrali I2C? Może warto zmniejszyć?

    2.2k. Zmniejszenie ich pomoże na twardy latchup?

    > Zastanawiam się też, czy (jeśli problemem jest latch-up) transil na
    > linii
    > 1wire nie rozwiązałby problemu...

    Zdaje się że jest już w strukturze ds2482, w końcu to 1w master.

    --
    Marek


  • 7. Data: 2018-11-04 18:50:19
    Temat: Re: Slave i2c blokuje magistralę....
    Od: q...@t...no1 (Queequeg)

    Marek <f...@f...com> wrote:

    >> Jakie masz rezystory magistrali I2C? Może warto zmniejszyć?
    >
    > 2.2k. Zmniejszenie ich pomoże na twardy latchup?

    Jeśli to twardy latch-up, to nie. Nie doczytałem, że próbowałeś już
    zwolnić slave'a ręcznie generując mu zegar.

    Znalazłem coś takiego:

    https://www.microchip.com/forums/m76835.aspx

    "Toggling the SCL pin 9 times, with SDA high, followed by a STOP cycle,
    would probably clear it."

    Próbowałeś tak?

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 8. Data: 2018-11-05 09:32:42
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Marek <f...@f...com>

    On Sun, 4 Nov 2018 17:50:19 +0000 (UTC), q...@t...no1
    (Queequeg) wrote:
    > "Toggling the SCL pin 9 times, with SDA high, followed by a STOP
    > cycle,
    > would probably clear it."
    > Próbowałeś tak?

    Oczywiście ale to nie pomaga. Mocno niepokojący jest fakt, że slave
    ściąga również scl do masy, co jest bardzo dziwne bo scl dla tego
    slave to tylko wejście.
    Pomaga odpięcie mu zasilania na chwilę.

    --
    Marek


  • 9. Data: 2018-11-05 11:18:54
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2018-11-04 o 11:17, Marek pisze:
    > On Sun, 4 Nov 2018 00:50:53 +0000 (UTC), q...@t...no1 (Queequeg)
    > wrote:
    >> Jakie masz rezystory magistrali I2C? Może warto zmniejszyć?
    >
    > 2.2k. Zmniejszenie ich pomoże na twardy latchup?
    >
    >> Zastanawiam się też, czy (jeśli problemem jest latch-up) transil na
    >> linii 1wire nie rozwiązałby problemu...
    >
    > Zdaje się że  jest już w strukturze ds2482, w końcu to 1w master.
    >

    W strukturze jeśli jest zabezpieczenie to tylko ESD, chyba, że scalak
    jest odpowiednio duży - na każdą linię 1w trzeba by dodać objętości jak
    SMB (transil 600W).

    W latach 90-tych ubiegłego wieku myślałem, że jak zamiast 'normalnego'
    scalaka RS485 użyłem takiego z wbudowanym zabezpieczeniem ESD 16kV to
    jestem zabezpieczony. To się sprawdzało wtedy w ponad 100 instalacjach
    naszego systemu, ale w jednej się nie sprawdziło. Instalacja była na
    szczycie płaskowyżu. Raz, dwa razy do roku (zawsze po jakiejś burzy)
    system się zawieszał.
    Umówiłem się, aby nie resetowali tylko dali cynk. Rozebrałem urządzenie
    bez zdejmowania mu zasilania i mierząc mV spadki napięcia na GND
    odkryłem, że driver RS485 zwiera zasilanie.
    Potem doczytałem (w różnych papierach bo Googla jeszcze nie było) co to
    jest latchup i czym się różni ESD od surge i jak się od tego
    zabezpieczać. Po odpowiednich zmianach problemy już się nie powtórzyły.
    Trzeba tylko przy kolejnych projektach pamiętać, aby kiedyś nie
    zrezygnować ze szczepienia, bo skoro zachorowań nie ma to po co się
    zabezpieczać :)

    Kilka lat później miałem do czynienia z urządzeniem (jakiejś brytyjskiej
    firmy), które czasem "się przegrzewa i zawiesza".
    Obejrzałem schemat i stwierdziłem, że ono na pewno się nie "przegrzewa i
    zwiesza" tylko "zawiesza i grzeje".
    Miało czytnik pastylek Dallasa (1w) podłączony bezpośrednio do nogi
    procesora, a już wtedy wiedziałem, że człowiek może z palca walnąć ESD
    nawet 25kV. Spotkałem też informację, że kobieta to nawet 30kV, ale bez
    uzasadnienia skąd różnica (może kobiety w jakiejś statystycznej próbie
    częściej miały jakieś elektryzujące się ciuchy).
    P.G.


  • 10. Data: 2018-11-05 11:40:30
    Temat: Re: Slave i2c blokuje magistralę....
    Od: Marek <f...@f...com>

    On Mon, 5 Nov 2018 11:18:54 +0100, Piotr
    Gałka<p...@c...pl> wrote:
    > W strukturze jeśli jest zabezpieczenie to tylko ESD, chyba, że
    > scalak
    > jest odpowiednio duży - na każdą linię 1w trzeba by dodać objętości
    > jak
    > SMB (transil 600W).

    Popularne transile SMB jakie testowałem mają pojemności około 1 nF co
    je dyskwalifikuje do zastosowania na długich linii 1W z kilkoma
    slave'ami.
    Jeśli znasz jakieś smb o pojemności ponizej 100pF dużej mocy to
    zaproponuj, chętnie zastosuje.

    --
    Marek

strony : [ 1 ] . 2



Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo:

Ok, rozumiem Strona wykorzystuje pliki cookies w celu prawidłowego jej działania oraz korzystania z narzędzi analitycznych, reklamowych, marketingowych i społecznościowych. Szczegóły znajdują się w Polityce Prywatności. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie. Jeśli nie chcesz, aby pliki cookies były zapisywane w pamięci Twojego urządzenia, możesz to zmienić za pomocą ustawień przeglądarki.