[elektro] I2C+PCF8563

Moczik Gabor pm_levlista at progzmaster.hu
Tue Nov 16 22:23:22 CET 2010


BALOGH ANTAL wrote:
> Sziasztok !
> 
> A PCF8563 RTC-t próbáltam összehozni egy PIC18F25K20-al.
> A MC saját I2C fügvényet használnám .
> A lámaságom a következő :
> Ha irok vagy olvasok az I2C buszra csak akkor müködik ha minden akcio után
> várok most pl. 10ms -t.
> 
>     StartI2C();
> delay10ms();
>     WriteI2C(0xa2);
> delay10ms();
>     WriteI2C(0x00);
> delay10ms();
>     WriteI2C(0x20);
> delay10ms();
> STB...
> 
> Ha nincs késleltetés akkor a irási ciklusbol hibával tér vissza és nem is 
> mozog a busz.

Ezzel elvileg az a probléma, hogy az I2C buszon a slave normális módon 
tudná jelezni hogy nem ér rá (lenntartja az SCL-t), ilyen késleltetés 
elvileg szükségtelen kellene legyen.

> Minha ütközés lenne de elvileg a fügvény kezelné.

Van másik master is?

> Próbáltam ciklust szervezni rá hogy amíg nem nulla a visszatérési érték 
> addig folyamatosan irom.
> De ebbe meg bele áll.
> Hogy illene ezt csinálni ?
> Vagy ez az RTC visz a málnásba.

Ha csak írsz, a slave eszköz ACK-el fogadja. Ha mindent elfogad, akkor 
sose fogod befejezni. Addig írj, ameddig kell, utána stop-pal zárd le.

Ha olvasol, akkor neked kell nyugtázni, de csak akkor ha még kell 
valami. Ha be akarod fejezni, akkor az utolsó bájtra NAK-ot küldj, mert 
utána már nem tudod megállítani. Ha a slave lehúzza az SDA-t (előkészíti 
az adatot), akkor nem tudsz stop feltételt generálni. Ha megteszed, 
akkor egymásra vártok, a slave várja az SCL-en a clockot hogy te 
olvasol, a master pedig várja hogy a slave elengedje az SDA-t.

> Tehát ha  minimum 61 másodpercenként kérdezem le akkor minden jó.
> Ilyen furcsaságot mi okozhat ?

I2C clock jó?
Nem néztem meg a nevezett proci adatlapját, de a régebbi típusoknál 
40MHz-es órajelnél szívtam azzal, hogy nem is lehet kb. 300kHz alá menni 
vele, mert nem lehet olyan nagy osztót beállítani.

-- 
((( Móczik Gábor  )))--((( e|mail: pm-01 |@| progzmaster |.| hu )))
((( S.k.y.p.e.: moczik )))



More information about the Elektro mailing list