Hallo, ich habe ein Programm bei dem ich mit den I2C Routinen vom CCS-Compiler ein EEPROM auslese. Dabei ist mir aufgefallen, dass die Geschwindigkeit der Datenübertragung nur etwa 50KHz beträgt - obwohl im standard-speed-mode doch 100KHz sein sollten. Ich habe Delay mit 10M(Hz) eingerichtet. #use i2c(master,sda=PIN_C4,scl=PIN_C3,FORCE_HW) // 100KHz Wenn ich i2c so einrichte #use i2c(master,sda=PIN_C4,scl=PIN_C3,FAST,FORCE_HW) // 400KHz ist die Flankensteilheit so gering, dass das Auslesen gar nicht klappt - ausserdem sind es auch dann keine 400KHz. Gruß, Tobias
Tobias John schrieb: > ist die Flankensteilheit so gering, dass das Auslesen gar nicht klappt - > ausserdem sind es auch dann keine 400KHz. Was für Pullups hast Du denn angeschlossen? Nimm mal je 1,8k an SCL, SDA. Peter
Peter Dannegger schrieb: > Was für Pullups hast Du denn angeschlossen? > Nimm mal je 1,8k an SCL, SDA. Hallo, es sind 10k Pullups - die kann ich leider nicht verändern, da sie im Speicher-Chip integriert sind. Aber der Hinweis könnte der Richtige sein... da werd ich mal den Hersteller anschreiben. Aber was könnte der Grund für die Geschwindigkeit sein... es sind immer maximal 50KHz... Gruß, Tobias
Tobias John schrieb: > Hallo, es sind 10k Pullups - die kann ich leider nicht verändern, da sie > im Speicher-Chip integriert sind. ??? I2C-ICs sind am Bus immer open-drain, d.h. die I2C-Pullups müssen immer extern rangepappt werden. Manche MCs erlauben es, die internen Pullups zu konfigurieren, die sind aber mit ~50k wirklich nur ein Notnagel bei kurzen Leitungen und langsamer Bitrate. > Aber der Hinweis könnte der Richtige sein... da werd ich mal den > Hersteller anschreiben. Der wird nicht extra für Dich spezielle ICs backen, weil Du die I2C-Spezifikation nicht gelesen hast. > Aber was könnte der Grund für die Geschwindigkeit sein... es sind immer > maximal 50KHz... Vielleicht ein Problem in Deinem Wizzard. Ich benutze generell keine Wizzards, sondern programmiere die Peripherie immer direkt (nach Lesen der Registerbeschreibung im Datenblatt). Peter
Peter Dannegger schrieb: > Tobias John schrieb: >> Hallo, es sind 10k Pullups - die kann ich leider nicht verändern, da sie >> im Speicher-Chip integriert sind. > > ??? > > I2C-ICs sind am Bus immer open-drain, d.h. die I2C-Pullups müssen immer > extern rangepappt werden. Der Meinung bin ich auch - das ist ja auch normalerweise der Fall - es sei denn man verwendet ein RFID-Tag mit Dual-Port-Memory (http://microsensys.de/products/sensors/TELID200.html) => Leider kein Datenblatt zum Download. Jedenfalls sind die 10K-Pullups integriert - da hat sich wohl keiner Gedanken gemacht beim Entwickeln der Tags... Vielleicht ist der Grund für die Integration jedoch das Anwendungsgebiet und die außergewöhnlichen Anforderungen an das Tag. >> Aber der Hinweis könnte der Richtige sein... da werd ich mal den >> Hersteller anschreiben. > > Der wird nicht extra für Dich spezielle ICs backen, weil Du die > I2C-Spezifikation nicht gelesen hast. Ich kann da wohl nichts für... ich weiß eigentlich, dass man die Pullups extern anschließt! >> Aber was könnte der Grund für die Geschwindigkeit sein... es sind immer >> maximal 50KHz... > > Vielleicht ein Problem in Deinem Wizzard. Ich benutze generell keine > Wizzards, sondern programmiere die Peripherie immer direkt (nach Lesen > der Registerbeschreibung im Datenblatt). Ich habe es schon öfter mal probiert (mit PICC-Pro-Compiler von Hi-Tech) das MSSP-Modul zum Laufen zu bringen - jedoch wie man in diversen Beiträgen im Forum lesen kann ohne Erfolg... Wirklich zufrieden bin ich mit der CCS-I2C-Version auch nicht. Gelesen habe ich die Datenblätter und Application-Notes von Microchip zu genüge. Gruß, Tobias
Tobias John schrieb: >> Was für Pullups hast Du denn angeschlossen? >> Nimm mal je 1,8k an SCL, SDA. > > Hallo, es sind 10k Pullups - die kann ich leider nicht verändern, da sie > im Speicher-Chip integriert sind. Was passiert wohl wenn du zusaetzlich einen Pullup von 2,2k dranhaengst? Cheers, Roger
Tobias John schrieb: > Jedenfalls sind die 10K-Pullups integriert Das scheint ja auch kein einzelner IC zu sein, sondern ne Baugruppe. Zu große Pullups schaden ja nichts, einfach noch welche parallel schalten. I2C-ICs können mindestens 3mA ab. > Ich habe es schon öfter mal probiert (mit PICC-Pro-Compiler von Hi-Tech) > das MSSP-Modul zum Laufen zu bringen - jedoch wie man in diversen > Beiträgen im Forum lesen kann ohne Erfolg... Wirklich zufrieden bin ich > mit der CCS-I2C-Version auch nicht. Gelesen habe ich die Datenblätter > und Application-Notes von Microchip zu genüge. Ich kenne das I2C der PIC nicht, nur das der 8051 (NXP, Atmel), daß auch für die AVR und LPC übernommen wurde. Es ist schon etwas tricky (viele Seiten im Datenblatt). Gibts denn keine Beschreibung zu dem "#use i2c"? Wizzardfunktionen benötigen auch immer die Angabe Deiner Quarzfrequenz. Peter
Peter Dannegger schrieb: > Das scheint ja auch kein einzelner IC zu sein, sondern ne Baugruppe. > Zu große Pullups schaden ja nichts, einfach noch welche parallel > schalten. I2C-ICs können mindestens 3mA ab. Genau, eine Baugruppe ;-) Die Pullups parallel schalten wäre wohl eine Idee - das probier ich mal aus. > Ich kenne das I2C der PIC nicht, nur das der 8051 (NXP, Atmel), daß auch > für die AVR und LPC übernommen wurde. Es ist schon etwas tricky (viele > Seiten im Datenblatt). Tricky ists wohl - ich werde es an anderer Stelle noch einmal mit eigenen Routinen versuchen!!! > Gibts denn keine Beschreibung zu dem "#use i2c"? > Wizzardfunktionen benötigen auch immer die Angabe Deiner Quarzfrequenz. In der Hilfe zum Compiler gibt es nur wenig Infos zum I2C... Die Quarzfrequenz habe ich angegeben. Gruß, Tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.