www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

i2c + avtomobilska aplikacija

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marko
Član
Član



Pridružen-a: Sre 07 Jan 2004 15:14
Prispevkov: 755
Aktiv.: 3.18

PrispevekObjavljeno: Pet Maj 18, 2012 10:51 am    Naslov sporočila:  i2c + avtomobilska aplikacija Odgovori s citatom

Živjo!

Izgubljam živce z i2c in avtomobilskio aplikacijo. Žal je projekt v taki fazi, da se I2C ne morem več znebiti, iščem pa najboljšo možno rešitev.

Dogaja se, da se I2C vodilo redno obeša.. Uporabljam AVR in I2C knjižnico avtorja Petra Fleury-a, ki naj bi bila najbolj preverjena. Dodal sem algoritem za detekcijo "obešanja" v določenih while zankah, s katero ponovno obudim vodilo. Ročno naredim 9 clockov + i2c stop. Zadeva se sicer uspešno postavi nazaj, vendar me živcira, ker se to dogaja precej pogosto - največji problem pa je, da med tem ko se izvaja ta recovery, ostala koda ne funkcionira pravilno (izmerjeno 10 - 20 ms).

Recovery je seveda samo en od problemov, največji problem je to, da do tega sploh prihaja.

Moja i2c postavitev je taka:

AVR (izolirano napajanje) <-> RTC chip
AVR (izolirano napajanje) <-> ADUM1250 (i2c isolator na zunanjem napajanju) <-> 2x IO EXPANDER (1 expander je stran 1 cm, drugi pa 1.5m), 1xAD7997 (a/d converter)

Expander, ki je 2m stran ima military spec žico + oklop, tako da motenj po tem kablu ne bi smelo biti. Debelina 0.25.

Zadeva se obeša največkrat na I/O expanderjih, nekajkrat tudi na RTC chipu. AD7997 zaenkrat še ni imel težav. Pullup upori so 1.8k (4 kosi, 2 na obeh straneh izolatorja), ki da najbolj pravokoten signal (sem poskusil tudi z 3.3k, in 4.7k pa je zmeraj slabše)

Zunanjo napajanje je klasično LM7805 + kondenzatorji. Drugih filtrov nimam (Je to problem??). Pred napajanjem (generalni + in -) pa je RBO40-40G, ki skrbi za prenapetostno zaščito in polariteto.

Vem, da i2c ni bil namenjen za take dolžine, vendar želim zadevo zrihtat optimalno, ker za večji redesign vezja ni časa.

Obstaja rešitev za ta problem?
Gledal sem I2C bufferje, ki imajo stuck recovery opcijo. Mislite, da bi to rešilo težavo? Kakšne so vaše izkušnje?

Zase vem, da I2C v naslednjih projektih za avtomobilske aplikacije niti slučajno ne bom uporabljal. Razmišljam o SPI ali CAN vodilu? Se da enostavno povezat CAN vodilo preko kakega zunanjega čipa z 8 bitnim AVR-jem? (preko SPI?)

SPI mi je malo nepraktičen, ker potrebuje veliko žic za več naprav (enable).

Lepo bi prosil za kakšen nasvet ali idejo, zaenkrat sem z vašo pomočjo rešil še vse težave Smile

Koda za i2c recovery je tole:

Koda:

   for (int x=1; x<9; x++)
   {
      cbi(PORTC, 0); // SCL
      _delay_us(50);   
      sbi(PORTC, 0); // SCL
      _delay_us(50);         
   }
   TWCR = (0<<TWINT) | (0<<TWEN) | (1<<TWSTO);
   _delay_ms(5);
   i2c_init();


Marko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.87
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 18, 2012 11:53 am    Naslov sporočila:   Odgovori s citatom

Poskusi zmanjšati hitrost. Kateri RTC uporabljaš? PCF8583? Nekoč sem imel podobne probleme PCF8583,SAA1064 -> PIC. SAA je bil kaka pol metra oddaljen od mikrokontrolerja. (prikazovalnik) Zadeva se je vsake toliko časa obesila. Zadeva je začela delati normalno, ko sem spisal softwerski I2c. Nekaj let kasneje sem uporabil isti displej v kombinaciji AVR-ja. Težava se je ponovila. Ko sem kasneje zmanšal dolžino povezovalnih kablov na par cm je zadeva začela delati normalno. Tukaj je bil res očitno vzrok dolžina. Z drugega konca pa sem recimo LCD katerega poganja extender PCF8574 povezal s ca 5m dolgim telefonskim kablom ter umetno povzročal motnje, pa je zadeva delala brez problema. ***klik***
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko
Član
Član



Pridružen-a: Sre 07 Jan 2004 15:14
Prispevkov: 755
Aktiv.: 3.18

PrispevekObjavljeno: Pet Maj 18, 2012 1:04 pm    Naslov sporočila:   Odgovori s citatom

Uporabljam 100 khz hitrost. Če dam na 400, itak ne deluje polovica naprav. Softwerskega I2C nisem še poskušal. Nekako nisem videl potrebe, bom pa poskusil še s tem.

Tudi jaz imam uporabljen PCF8574. Prav ta je tudi en od ta problematičnih.

Z motnjami doma običajno nisem imel problemov, zadeva je tekla brez težav tudi po več dni skupaj. Problem je ta "barabija" v avtomobilu.

Kaj pa praviš na I2C buffer?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.87
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 18, 2012 1:22 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
Z motnjami doma običajno nisem imel problemov, zadeva je tekla brez težav tudi po več dni skupaj. Problem je ta "barabija" v avtomobilu.


Težava je torej sigurno hardwerskega značaja. Sploh ni nujno, da težava nastaja na vodilu. Prilotaj na vso čipovje direk na napajalne nogice 100n kondezatorje.

Z I2C buferji pa nimam izkušenj.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Pet Maj 18, 2012 6:05 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
Zase vem, da I2C v naslednjih projektih za avtomobilske aplikacije niti slučajno ne bom uporabljal. Razmišljam o SPI ali CAN vodilu? Se da enostavno povezat CAN vodilo preko kakega zunanjega čipa z 8 bitnim AVR-jem? (preko SPI?)


Ja. Poglej MCP2515 ali SJA1000.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 501 dni


Powered by phpBB © 2001, 2005 phpBB Group