I2C - pripojeni 3V cidla k 5V procesoru

Pavel Kutina hw na prelude.cz
Neděle Červenec 15 16:01:55 CEST 2012


Perfektni, dokonale, jedinecne, diky moc!

Vzhledem k tomu, ze mam vsechno v Mikropascalu, tak ten Pascal fakt nevadi, 
naopak, i kdyz i to prepsani z neceho jineho byva nepomerne jednodussi, nez 
to vymyslet sam.

Jinak tu "hardcore" variantu s orezanim napeti vyzkousim.¨

Pavel Kutina


----- Original Message ----- 
From: "Fanda Kopriva" <info na elektronikavyvoj.cz>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Sunday, July 15, 2012 3:38 PM
Subject: Re: I2C - pripojeni 3V cidla k 5V procesoru


Dne 15.7.2012 13:03, Pavel Kutina napsal(a):
> Zdravim,
>
> hraju si tu s PIC (PIC 18F2620, napajeni 5V) a snazim se k nemu pripojit 
> tlakove cidlo BMP085 pres SW I2C (20kHz hodiny). Ale jak, kdyz Bosch u 
> toho BMP uvadi, ze napeti na zadnem vyvodu nesmi prekrocit 3.6V? 
> Samozrejme mam vyresene napajeni (LE33), ale jak dal?
>
> Hodiny (SCL) se jeste daji vydelit odporovym delicem, ty jsou jednosmerne 
> a generuje je ten PIC, ale co ta obousmerna data (SDA)? Pokud nedelam 
> chybu v uvaze, taky mi tam staci delic? Pokud mi tecou data od procesoru, 
> tak delic vydeli urovne, pokud data generuje cidlo, tak se delic napajeny 
> stredem prakticky neuplatni. Nerad bych to cidlo usmazil, tak se radeji 
> ptam na overeni.
>
> Rad bych co nejjednodussi reseni, na desce nemam zrovna mista na 
> rozdavani.
>
> Diky za kazdou dobrou radu.
>
> Pavel Kutina
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Dobry den
protoze I2c by mela byt otevreny kolektor a dva odpory v radu kOhmu do
+napajeni,
tak by melo stacit dat treba modre ledky z SDA a SCL do zeme a tim
omezit napeti okolo 3V.
Obcas toto reseni pouziju .Ale nevim jiste jak u PIC.

Softwarove procedury pro I2C jsou velmi jednoduche a myslim ,ze i mnohem
jednodussi nez vyuzit
na to hardware procesoru .Moje jsou v pascalu ale to asi
nevadi.Procedury neresi podrzeni hodin od
cidla ,ale v praxi jsem to videl jenom jednou a neni problem to doplnit.

kombinaci s SPI  si netroufam narychlo posoudit.
   Fanda

var
covys,pwod:byte;
ackn,ackp:boolean;

sda1 pin pro sda;
scl1 pin pro scl;

procedure tim4us;   {jenom delay pro dodrzeni rychlosti zbernice}
var dd:byte;
begin
dd:= 0;repeat inc(dd); until dd>5;
end;

procedure byti2c;     {vyslani 1 bytu z pwod a prijem potvrzeni do ackn}
begin
for covys:=0 to 7 do begin
     if pwod>127 then sda1:=true else
sda1:=false;tim4us;scl1:=true;pwod:=pwod*2;scl1:=false;
                      end;
sda1:=true;tim4us;scl1:=true;tim4us;ackn:=sda1;scl1:=false;
end;

procedure ibyti2c;     {prijem 1 bytu do pwod a vyslani potvrzeni s ackp}
begin
tim4us;sda1:=true;tim4us;
for covys:=0 to 7 do begin
scl1:=true;pwod:=pwod*2;if sda1 then inc(pwod);scl1:=false;
                      end;
sda1:=ackp;tim4us;scl1:=true;tim4us;scl1:=false;

end;

procedure starti2c;
begin tim4us;sda1:=false;tim4us;scl1:=false;tim4us;end;

procedure stopi2c;
begin tim4us;sda1:=false;tim4us;scl1:=true;tim4us;sda1:=true;tim4us;end;

procedure MGset;  {nastaveni parametru     zapis do i2c}
begin
starti2c;pwod:=$3c;byti2c;pwod:=0;byti2c;
pwod:=$0c;byti2c;  {datarate MG  7.5Hz}
pwod:=$20;byti2c;  {_+1.3 Gaus}
pwod:=$00;byti2c;  {0 cont 1 single}
stopi2c;
end;


procedure MGread;       {cti vysledek us/5.8 = mm    cteni z i2c}
begin
starti2c;pwod:=$3c;byti2c;pwod:=3;byti2c;stopi2c;tim4us;
starti2c;pwod:=$3d;byti2c;ackp:=false;
ibyti2c;unw1:=pwod;unw1:=unw1*256;ibyti2c;unw1:=unw1+pwod;MosaX:=unw1;
ibyti2c;unw1:=pwod;unw1:=unw1*256;ibyti2c;unw1:=unw1+pwod;MosaZ:=unw1;
ibyti2c;unw1:=pwod;unw1:=unw1*256;ackp:=true;ibyti2c;unw1:=unw1+pwod;MosaY:=unw1;
stopi2c;
end
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list 



Další informace o konferenci Hw-list