PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rnrelais über I²C-Bus in C nsprechen



flogge
30.12.2006, 12:48
Hi!
Bin n ziemlicher Neuling was Robotik angeht...
Wie kann ich in C meinem Relaisboard, das ich über I²C-Bus am Control-Board (mit ATMega32) angeschlossen hab, sagen, es soll n bestimmtes Relais durchschalten...?
Bin echt m verzweifeln, weil ich aus den C-Beispielen zum I²C-Bus einfach nicht schlau werd... ](*,)
Danke schon mal im voraus!

uwegw
30.12.2006, 13:00
du lädst dir bei www.jump.to/fleury die I2C lib runter, bindest sie laut Anleitung in dein Programm ein, und setzt dann mit den Befehlen
i2c_start(adresse+I2C_WRITE);
i2c_write(byte);
i2c_stop();

die Ausgänge am Relaisborad mit der Adresse adresse auf dem Wert, der in byte steht.

flogge
30.12.2006, 13:06
...genau das hab ich gemacht...
Hab das Byte als HEXA-Dezimalzhl geschrieben...
genauso wie die adresse...
Die lib hab ich eingebunden...
keine Fehlermeldung beim compilen...
Und jetzt steh ich am schlauch...
Ich tüftel noch mal n bisschen rum...

uwegw
30.12.2006, 13:12
wie sitzen die Jumper für die Adresse?
i2c_init(); gemacht?
benutzt du twimaster.c oder i2cmaster.S ?

flogge
30.12.2006, 13:23
Jumper sitzen auf Standard, wie in der Dokumentation und die gleiche Adresse is im Prog angegeben.
i2c_init(); hab ich auch vorher.
Benutze i2cmster.S

uwegw
30.12.2006, 17:35
Benutze i2cmster.S
Dann musst du in der i2cmaster.S noch angeben, an welchen Pins du den I2C-Bus angeschlossen hast. Ich würde dir aber die twimaster.c empfehlen, damit wird nämlich die Hardware-I2C Schnittstelle benutzt. Die läuft schneller als die Softwareemulation mit der i2cmaster.S

flogge
31.12.2006, 10:32
In der Dokumentation steht, dass die SDA-Leitung PC1, die SCL-Leitung PC0 ist.

Habs jetzt folgendermaßen angegeben:
#define SDA 1
#define SCL 0
#define SDA_PORT PORTC
#define SCL_PORT PORTC

...Läuft noch immer nix...

Wenn ich twimaster und die zugehörige makefile (Deiteinamen etc wie gewohnt editiert) verwende bekomm ich ne Fehlermeldung...

uwegw
31.12.2006, 12:10
das makefile dazu brauchst du nicht.

In dem Ordner, in dem deine Haupt-.c-Datei liegt, packst du die i2cmaster.h und die twimaster.c. Dann #include i2cmaster.h, und es sollte laufen...

Fehlermeldung?