Guten Morgen zusammen,
ich habe jetzt die Beispielprogramm der Version 20080510 herunter geladen, da in der Version 20080915 scheinbar ein Fehler in der Slave Adressierung steckt (Die Slave Adresse ist wohl durch einen "Fehler" nicht dez. 10 sondern dez. 5, was aber verboten ist, da die Adresse nur in den oberen 7 Bit stehen darf). Naja wie auch immer. Mit der älteren Version kann ich den AVR jetzt jedenfalls ohne Probleme ansprechen. Allerdings tut sich das nächste Problem auf. Hier mal kurzgefasst wie die Kommunikation i.M. aussieht:
Problem: Ich empfange immer FFh. Egal ob ich das 21. Register oder das 22. ausleseCode:-> Adressierung 0x0A <- ACK -> Senden 16h -> Adressierung 0x0B <- ACK <- Empfange FFh -> ACKHat evtl. schon einmal jemand das Problem gehabt oder kann eine Aussage treffen warum ich nur "Mist" empfange?
Mein aktueller Code (Ausschnitt):
Viele GrüßeCode:IdleI2C(); StartI2C(); //Start I2C Data = SSPBUF; // do { Status = WriteI2C(ADR|0x00); //Adresse senden bis die.. if(Status == -1) //Bus Kollision? { Data = SSPBUF; // SSPCON1bits.WCOL=0; //Bus Kollisions Bit löschen } } while(Status!=0); //..Übertragung erfolgreich war WriteI2C(22); //Dezimal: 22 Schreiben WriteI2C(ADR|0x01); //Adresse senden (+1) AKKUH=ReadI2C(); //Lesen und Ergebnis in AKKUH IdleI2C(); //Ist der Bus verfügbar? AckI2C(); //Sende Acknowledge IdleI2C(); //Ist der Bus verfügbar? CloseI2C(); //I2C beenden
Nico![]()







Zitieren


Lesezeichen