[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