Gast
#3916340
Hallo, Ich weiß, dass es zu diesem Thema schon einige Beiträge gibt. Diese konnten mir aber leider nicht weiterhelfen, deswegen starte ich hier mal einen neuen: Ich versuche das Sensormodul CJMCU-105 mit dem Beschleunigungssensor ADXL 345 mit einem Atmega8 über TWI auszulesen. Ich hänge an der Stelle, an der der Beschleunigungssensor (Slave) die erfolgreich Übermittlung der Adresse mit ACK bestätigen soll, was er aber nicht macht (TWSR nach dem Adresse senden = 0x20). aufgetretende Problembe: 1.) Dies ist mein erstes TWI-Projekt und ich kann nicht sagen inwiefern der C-Code stimmt. Ich habe mich aber stark an das Datenblatt des Atmega gehalten. 2.) Es ist auch das erste Mal, dass ich Quelltext in andere Dateien auslagere. Da ich es aber nicht geschafft habe, erst eine .h datei zu schreiben, deren Funktionen in einer weiteren .c datei weiter definiert werden habe, ich alles in die .h-Datei geschrieben. Ich weiß, dass man das so nicht macht, aber soweit ich das beurteilen kann hat das keinen Einfluss auf das TWI. 3.) Für das Modul CJMCU-105 habe ich kein Datenblatt gefunden, sondern nur für den verwendet Sensorchip ADXL 345. Deswegen kann ich nicht zu 100% sagen, wie die Schaltung aussieht, aber die Widerstände für die TWI sind vorhanden und die zwei Pins des ADXL V_DD I/O und V_S haben beide 3,5V, sodass ich davon ausgehen, dass der Chip aktiv ist. Außerdem ist mir aufgefallen, dass ich meinen Fehlercode für Master-TransmitterMode: TWSR=0x20 nur erhalte, wenn ich ich adresse+1 verschicke. Adresse+1 steht aber eigentlich für Master-RecieverMode. Was das für mich bedeutet kann ich leider nicht einschätzen. Am Atemga hängen an PC4..5 nur die beiden Verbindungen für die TWI-Kommunikation mit dem Beschleunigungssensor und an Pin PD0..1 Verbindungen für die UART-Kommunikation mit dem Rechner(Fehlerauswertung). Die Quelltexte für das Programm liegen im Anhang. Ich hoffe, Ihr könnt mir weiterhelfen. Gruß, Oci