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