|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: Do, 18.10.2007 12:14:37
In-reply-to:
<471716ED.3080403@xxxxxxx>
References:
<22A7A5C0-8CAB-4AEB-BF80-B96525994353@xxxxxxxxxxxxxxx> <471716ED.3080403@xxxxxxx>
Hallo Hari,
Am 18.10.2007 um 10:18 schrieb Harald W. Leschner:
habe mir ein SP03 Sprachmodul besorgt und versuche es gerade über I2C
anzusteuern. Leider funktioniert es noch nicht mit dem SRF10
Treibermodell, obwohl ich mir sicher bin, das meine Routinen, die den
Steuercode in den I2C-Kontainer packen, richtig sind. Es wäre also
schön, wenn man beliebige I2C Hardware anschließen könnte und sich
nicht
um die Details der I2C Übertragung kümmern müsste.
genau das war auch mein Gedanke. Ich habe den Code für die I2C-
Ansteuerung und den CMPS03-Kompass mal ins SVN gestellt.
Um ein beliebiges I2C-Gerät anzusprechen, ruft man i2c_write_read()
(siehe mcu/i2c.c und include/i2c.h) auf, was an eine Slave-Adresse X
Bytes aus einem Puffer sendet und anschliessend Y Bytes in einen
Puffer liest. Möchte man Daten empfangen und dabei vorher nur ein
Byte senden, kann man auch i2c_read() verwenden.
Die Funktion i2c_wait() wartet, bis der angestoßene I2C-Transfer
komplett beendet ist. Bevor man i2c_wait() wait aufruft, kann man den
Prozessor also andere Dinge tun lassen und muss nicht erst die
Datenübertragung abwarten. Wobei man während der I2C-Übertragung
nichts benutzen kann, das die Schieberegister benötigt. Versucht man
es trotzdem, wird im Schieberegister-Code erst auf das Ende des I2C-
Transfers gewartet.
Der letzte Bus-Status (z.B. Fehler, falls einer auftrat) wird
gespeichert und lässt sich bis zum nächsten I2C-Transfer jederzeit
abfragen.
Am besten einfach mal ausprobieren, am CMPS03-Code sieht man auch,
wie es sich benutzen lässt.
Parallel bastle ich an einer 2. Erweiterungsplatine, die neben dem
I2C-Krams (Kompass, Temperatur, Porterweiterung ...) eine Anbindung
für
die CMUCAM2 und noch eine Verteilung der Stromversorgung bereitstellt.
Das habe ich auch vor ;-) ich weiß nur noch nicht so ganz, mit was
für einer CPU...
Da gleich mal eine allgemeine (Hardware-)Frage: Wie viel Strom kann
ich eigentlich aus dem 3.3V-Zweig der Erweiterungsplatine noch ziehen?
Viele Grüße,
Timo
|
|
|