Hi Leute,
ich hätte da gerne mal ein Problem: [-o<
was ich habe: Ich habe es hingekriegt, einen Getriebemotor über eine Kombination aus RN-Motorcontrol/RN-Dualmotor über die serielle Schnittstelle vom PC mit dem vom Robotikshop downloadbaren Programm "RN-Motorcontrol" zu steuern - funktioniert - so weit keine große Kunst.
was ich in Zukunft möchte: Ich möchte die Steuerung nicht vom PC, sondern von einem Atmega32 übernehmen lassen, wobei ich die serielle Schnittstelle des AVR weiterhin für die Kommunikation mit dem PC frei halten möchte.
Soll heißen, ich möchte für die Kommunikation zwischen AVR und RN-Motorcontrol die I²C/TWI-Schnittstelle verwenden. Ich habe jetzt schon stundenlang in Foren rumgesucht und mir schwirrt der Schädel.
Soll ich die Lib von Peter Fleury oder die TWI.h verwenden?
Wie sende ich ein einzelnes Byte vom AVR (Master) an RN-Motorcontrol (Slave)? und und und...?
Was mir sehr weiterhelfen würde, wäre ein Programmbeispiel in C von jemandem, der das schon mal gemacht hat - in dieser Kombination.
Falls diese Frage schon mal gestellt wurde, würde vielleicht auch ein Link dahin reichen.
Grüße
Ralf
PS: Ich bin noch Neuling in AVR´s , also bitte die Antworten meinem Niveau anpassen
OkOk,
keine Resonanz.. Hmmmmm.
Dann könnte vielleicht mal jemand auf dieses Programm schauen, bzw. warum das nicht funktioniert:
Das Programm wird einwandfrei compiliert, gelinkt. Nach dem Übertragen auf den AVR tut sich jedoch nichts. Eigentlich müsste sich Motor1 drehen.Code:#include <avr/io.h> #include "i2cmaster.h" #include "twimaster.c" #define RNMotor 0x58 // Adresse von RNMotorcontrol void main(void) { unsigned int i; unsigned char ret; unsigned char val[6]={0x23,0x23,0x03,0x02,0x01,0x96}; // i2c_init(); // I2C Interface initialisieren while(1) { for(i=0;i<6;i++) { ret = i2c_start(RNMotor+I2C_WRITE); // Addresse und Schreibmodus aktivieren if ( ret ) { // Versuch, die Startbedingungen zu setzen gescheitert, z.B. wenn das Board // nicht gefunden wurde i2c_stop(); } else { // Versuch, die Startbedingungen zu setzen erfolgreich i2c_write(val[i]); // Daten schreiben i2c_stop(); // Bus wieder freigeben } } } }
Für nen kleinen Stups in die richtige Richtung wäre ich ganz dankbar.
Grüße
Ralf
Lesezeichen