Hallo, seit Tagen kämpfe ich nun schon damit, einen Max7313 (16 Port PWM-Treiber I2C ansteuerbar) mit einem ATMEGA 328p oder ATMEGA 88 anzusprechen. Ich habe die I2C-Lib von Peter Fleury und auch diverse anderes versucht, doch es will einfach nicht klappen. Wenn ich die Addresse des Bausteines schreibe, bekomme ich im TWSR immer den Status NACK zurück. An der Hardware kann es eigentlich nicht liegen. Ich habe hier ein Arduino-Beispielprogramm, wenn ich das auf den ATMEGA schreibe, dann funktioniert es. Vielleicht hat ja jemand mit diesem MAX7313 schon mal etwas gemacht, und kann mir vielleicht sagen, ob es da irgend etwas besonderes zu beachten gibt bei der I2C-Geschichte, oder mir mal ein kleines Beispielprogramm zur Verfügung stellen..? Danke.
Hallo nochmal, AD0 und AD2 sind auf GND, AD1 auf SCL. Das ergibt Addresse 0x10. Wie gesagt wenn ich die Arduino-Libs benutze, dann geht es, nehm ich aber die I2C-Libs von Peter Fleury ohne den ganze Arduino-Overhead dann gehts nicht. Hardware ist alles das selbe und die Funktionsaufrufe auch. Nur eben die unterschiedliche Lib.
Hier mal als Anhang noch mein Quellcode. Die I2C-Teile sind aus der Lib mal direkt übernommen. Aber auch wenn ich die Lib einbinde geht es nicht.
Hi dies geht bei dir nicht!
1 | // send device address
|
2 | TWDR = address; |
3 | TWCR = (1<<TWINT) | (1<<TWEN); |
da deine Adresse FALSCH ist!!!! Laut Definition von I2C bzw TWI ist die Adresse 7Bit lang richtig, aber wird beim Senden um 1 nach links verschoben! Dein IC hat die Adr. von 0x10 richtig, aber das ganze mal 2 ist 0x20. (Siehe DB vom MAX Figure 6:Slaveadress) In den I2C-Funktionen muss als Adresse nicht die Adr. des ICs eingegeben werden, sondern das Commandbyte!!! ((Adr << 1) + RW) Stephan
Hallo, vielen Dank. Problem gelöst.. Brett vor dem Kopf entfernt. :) Danke.
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.