Gast
#329764
Hallo Forum! Hat sich von euch schonmal jemand mit dem SMB360 auseinandergesetzt? Den einzigen den ich gefunden habe ist dieser hier: http://www.mikrocontroller.net/forum/read-1-316495.html#new Leider hilft mir das nicht weiter. Ich möchte mit meinem Atmega32 einige Bits vom meinem Beschleunigungssensor setzen. Genauer gesagt das Bit 7 im Register 25h. Der Christoph hat das auch gemacht und bei ihm scheint es auch funktioniert zu haben, nur leider bei mir nicht. Ich habe die gleiche Funktion wie er benutzt und zwar diese hier: void smb360_write_bit( char adress,char data ) { // /CS des SMB360 auf Low ziehen PORTB &= (0<<PB0); spi_putc (adress); spi_putc (data); // /CS Leitung wieder freigeben PORTB |= (1<<PB0); } Die spi_putc Funktion ist die Standard funktion die jeder zum senden über den SPI Bus nutzt. Zum testen ob das Bit gesetzt wurde, lese ich das entsprechende Register aus(05h). Leider bleibt bei mir das Bit7 immer 0. Langsam weiß ich nicht mehr weiter. Das auslesen von Registern funktionert eigentlich auch aber wieso klappt dann das setzen eines Bits nicht? Die Funktion rufe ich folgendermaßen auf: smb360_write_bit(0x25,(1<<7)); Laut Datenblatt muss ich 1 Read/Write Bit und 7Adressbits +8Datenbits senden.Das R/W Bit muss zum schreiben des EEproms 0 sein, was ich auch beachte. Ich habe auch schon getestet ob es funktioniert, wenn ich die 20 ms Zugriffszeit beachte, was leider auch kein Erfolg brachte. Mehr Informationen kann ich dem Datenblatt leider nicht entnehmen, weshalb ich jetzt hier nachfrage, ob mir jemand bei meinem Problem helfen. Ich würde mich über eine Antwort sehr freuen. Danke und Gruß, Marian