PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Soft I²C Master Implementierung gesucht



robo_tom_24
19.06.2012, 22:02
Hallo

Mal vorweg: ich habe di Forensuche und Google verwendet, nur ich finde nichts passendes...
Für meinen Bluetooth Roboter brauch ich einen Software I²C Master die mit externen Pull-Up Widerständen arbeitet. Ich habe einige gefunden die mit den internen arbeiten, nur das ist für mich unbrauchbar (Bus 3,3V Controller 5V)
Ich hab auch schon die von Peter Fleury gefunden, nur da ist ein Teil inAssembler geschrieben und von Assembler hab ich keine Ahnung ;)

Könnte mir bitte jemand von euch solch eine Implementierung zur Verfügng stellen oder gute Seiten nennen?
Die andere Option wäre selbst schreiben, aber das würde glaube ich meinen zeitlichen Rahmen sprengen...

Ich bitte um eure Hilfe :)
lg

robo_tom_24
24.06.2012, 15:01
Kann mir keiner helfen?
Ich komm nicht weiter, ich braucht bitte eure Unterstützung....

WL
24.06.2012, 17:04
Was brauchst Du nun konkret::confused:
Hardware oder Software ?

Hardware z.B. PCA9517 oder http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf

robo_tom_24
24.06.2012, 17:05
Den Software Master mit externen Pull-Ups, die Schaltung ist fertig, nur die Software fehlt....

MagicWSmoke
24.06.2012, 17:20
Ich hab auch schon die von Peter Fleury gefunden, nur da ist ein Teil inAssembler geschrieben und von Assembler hab ich keine Ahnung ;)
Und ? Ist doch egal, Du musst doch nur 4 defines anpassen.
Die Lib von Peter Fleury verwendet keine internen Pullups, steht so in der Beschreibung und ist auch einfach nachzuvollziehen, da die SCL/SDA Pins in der Init nur einmal auf 0 gesetzt und sonst nicht wieder angerührt werden.

Klebwax
24.06.2012, 19:14
Den Software Master mit externen Pull-Ups, die Schaltung ist fertig, nur die Software fehlt....

Die internen Pull-Ups sind eher unerheblich, hab ich in deinem anderen Thread schon geschrieben. Mit externen im Bereich weniger k Ohm lassen sich die 50 kOhm leicht übersteuern. Viel wichtiger ist, daß nicht nur SDA sondern auch SCL im Open Collector Betrieb gesteuert wird. Gegen einen als High geschalteten Ausgang kann kein Pull-Up gegen welche Spannung auch immer etwas ausrichten.

Ich würds mal mit programmieren statt mit zusammenkopieren versuchen.

MfG Klebwax

robo_tom_24
24.06.2012, 21:16
Ich wills sowieso dann selbst schreiben aber ich brauch Anhaltspunkte dafür....
So ists glaub ich nicht schwer, aber ich kann mit den ganzen Timing-Diagrammen und Tabellen nichts anfangen :confused:

MagicWSmoke
24.06.2012, 22:14
Das ist dann eher schwierig mit selberschreiben, wenn Du mit Timingdiagrammen nicht klar kommst. Sich aus Code von unbekannter Quelle als Info zu bedienen, kann so falsch sein wie der Code selbst. Wobei ich der Fleury Lib traue, die Du aber nicht lesen kannst.

Auf der Suche nach 'ner C-Version bin ich z.B. auf eine bei MC.net gestossen, aber da wurde SCL aktiv auf High getrieben, was natürlich Murks ist. Aber genau das ist es, was Dir passieren kann, wenn Du versuchst vom falschen Code zu lernen - Misserfolge und geschredderte Hardware.

robo_tom_24
24.06.2012, 22:18
Genau das ist das Problem...
Wenn du mir jetzt so ein Timingdiagramm gibst kann ich schon sagen was was ist und wann es das tut, aber wenn ich das in Software umsetzen soll arrrggggghhh....

Ich hab zum Anfangen meiner "µC Karierre" eine gute Seite gefunden gehabt (newbiehack.com), dort war alles gut erklärt, und warum das so ist usw...
Und genau so was suche ich jetzt auch ;)

MagicWSmoke
24.06.2012, 22:56
Versuch mal AVR300 als Ausgangspunkt: http://www.avrfreaks.net (http://www.avrfreaks.net/index.php?func=viewItem&item_id=75&module=Freaks%20Tools)
Ist zwar auf Assemblerbasis, aber die AN enthält Flussdiagramme, die in beliebiger Sprache umsetzbar sind.
Ansonsten ist's einfach wichtig SCL/SDA als Open Collector zu betreiben, also PORT-Pins auf 0 und nur die DDR-Pins schalten.

robo_tom_24
24.06.2012, 23:02
Dein Link geht nicht ;)

MagicWSmoke
24.06.2012, 23:11
Bei mir geht der Link. Aber gib bei Google: AVR300 Atmel ein, dann hast Du's gleich.

robo_tom_24
24.06.2012, 23:22
Kay ;)
Danke mal, werd mich morgen dann mal intensiv damit beschäftigen...