Hallo Mikrocontroller.net-Familie! Bei einem Projekt ist es meine Teilaufgabe das Akkumanagement für einen LIPO-Akku zu realisieren. Dabei verwende ich den TI FuelGauge IC bq20z65-r1 sowie den Charger IC bq24735. Um die wichtigsten Parameter des LIPOs immer sehen zu können, sollen dementsprechend verschiedene Parameter vom im Projekt zum Einsatz kommenden Atmel AVR 1281V abgefragt werden. Ich habe mich sehr ausführlich mit den beiden Protokollen I²C und SMBus beschäftigt und bin der Meinung alle Bedingungen damit beide Protokolle miteinander kompatibel sind, zu erfüllen: -) Ich betreibe alle IC's mit 3V Vcc. -) Die Pull-up Widerstände für SCL und SDA habe ich mit 10k bemessen. -) Ich betreibe den Bus mit 50kHz Ich arbeite mit dem I²C Master Driver AVR315 von Atmel, habe den Source-Code für den AVR-GCC Compiler entsprechend angepasst. Im Anhang sieht er ein Bild, wie der derzeitige Versuch einen Slave anzusprechen aussieht: Bis auf das, dass nach der START-Condition doch sehr viel Zeit vergeht, bis die 9 Zyklen des Clocks beginnen und ebenso wieder sehr viel Zeit vergeht bis SCL und SDA wieder in den High-Zustand wechseln, wird kein Timing verletzt. All meine Versuche sind bisher gescheitert ein Acknowledge vom Slave zu erhalten, wie Ihr seht erhalte ich immer ein NACK und ich weiß einfach nicht wieso! Nach dem ersten Sendeversuch wird permanent ein REPEATED START initiiert da eben kein Slave antwortet... Hat jemand Ideen, bzw. sieht jemand einen essentiellen Fehler im Code? Vielen Dank für eure Hilfe, Stefan
das ist bis jetzt das beschissenste bild das mir hier im forum untergekommen ist. steht aufm kopf (linkshänder?), ist riesengroß und der herr stefan spiegelt sich darin. kann man da nicht ein wenig mitdenken und ordnung walten lassen?
Sorry, kein Grund gleich an die Decke zu gehen =). War in Eile, und hatte im Nachinhein erst bemerkt, dass das Bild verkehrt rum ist! Hab mir die Mühe gemacht und habe nun einen USB-Stick aufgetrieben, hier hast du nun einwandfreie Bilder direkt vom Oszilloskop.
Ich habe lediglich gelesen, dass Bilder nur in JPEG Format hochgeladen werden sollen, das habe ich auch gemacht. Das hier auch so großer Wert auf eine passende Auflösung gelegt wird habe ich nicht gewusst. Auf jeden Fall kotzt es mich an, wie hier auf einen Erst-Poster eingedroschen wird. Mein zweiter Post soll keine Ausrede sein, sondern war Fakt. Anscheinend ist dieses Forum hier sehr penibel, was ich auf eine gewisse Art und Weise selbstverständlich verstehe um hier eine gewisse Qualität zu wahren...jedoch verstehe ich es nicht, dass man hier einem User der zum ersten Mal postet, eine derartige Unfreundlichkeit entgegenbringt, obwohl ich mich eigentlich in meinem zweiten Post entschuldigt habe. Diese Unfreundlichkeit habe ich wiederum bis dato in keinem anderen Forum gesehen, man wird nach meinen bisherigen Erfahrungen nach, zuerst freundlich ermahnt...würde es in diesem Forum eine Editierfunktion für bereits veröffentlichte Beiträge geben, hätte ich diese sowieso bei bermeken meines Missgeschickes verwendet... Da ich scheinbar durch den Upload des Bildes ein derartiges Entsetzen ausgelöst habe, möchte ich mich (noch einmal) dafür entschuldigen, nicht in eurem gewünschten Sinne gepostet zu haben. Hilfe darf ich hier scheinbar sowieso keine mehr erwarten und da hier wahrscheinlich eher weitere Beiträge hinzukommen werden, die mit dem eigentlichen Sinn dieses Beitrages nichts zu tun haben, werde ich den Webmaster bitten, diesen Beitrag zu löschen.
Hallo, ich habe mal deinen Code mit einem Atmega644 und einen RTC-Baustein (DS1307) getestet. TWI_Master_Initialise(); sei(); // sets the Global Interrupt Enable Bit to allow Interrupts messageBuf[0] = 0xD0; // Slave_Adress_DS1307 = 0xD0; messageBuf[1] = 0x0; // Startadresse messageBuf[2] = 0x0; // sekunde messageBuf[3] = 0x30; // minute messageBuf[4] = 0x23; // stunde messageBuf[5] = 0x05; // tagnr messageBuf[6] = 0x17; // tag messageBuf[7] = 0x08; // monat messageBuf[8] = 0x12; // jahr messageBuf[9] = 0x90; // run TWI_Start_Transceiver_With_Data( messageBuf, 10); TWI_operation = REQUEST_DATA; while(1) { nop(); } Die Sache funktioniert nur, wenn ich Slave_Adress_BQ20Z65R1(0x16)aleine sende! also <<TWI_ADR_BITS) | (FALSE<<TWI_READ_BIT);weglasse. Zum Testen habe ich all Abfragen mal weggelassen, war mir zu unübersichlich. Veruche es doch mal! Gruß G.G.
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.