-
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