Hallo
Die TWI-Variablen werden in RP6I2CmasterTWI.c definiert. Normalerweise sollte man die dann mit "extern" importieren können, aber ich kanns nicht. Auch nicht, wenn man das "static" bei den Definitionen entfernt: http://openbook.galileocomputing.de/...tionen_012.htm
Das kann ich wenigstens Fehler- und Warnungsfrei übersetzen. Im makefile muss man dann natürlich RP6I2CmasterTWI.c rausschmeisen.Code://Servoansteuerungs Test #include "RP6RobotBaseLib.h" #include "RP6I2CmasterTWI.h" #include "RP6I2CmasterTWI.c" // oje :( #define PCF8574_Schreiben 0b01110000 void I2C_transmissionError(uint8_t errorState) { writeString_P("I2C ERROR - TWI STATE: 0x"); writeInteger(errorState, HEX); writeChar('\n'); } void senden(uint8_t adresse, uint8_t daten) { TWI_msgSize = 2; I2CTWI_buf[0] = adresse; I2CTWI_buf[1] = daten; TWI_statusReg.all = 0; TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(0<<TWEA)|(1<<TWSTA)|(0<<TWSTO); task_I2CTWI(); } void ServoAnsteuern( uint8_t grad) { if(getStopwatch1() >= 20) // Alle 20 ms Impuls senden { setStopwatch1(0); senden(PCF8574_Schreiben, 0b00001000); // Signal auf High sleep(grad); // Signaldauer senden(PCF8574_Schreiben, 0b00000000); // Signal auf Low } } int main(void) { uint8_t grad = 15; // = 1,5ms -> normalerweise Mittelstellung initRobotBase(); I2CTWI_initMaster(100); I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); startStopwatch1(); while(true) { ServoAnsteuern(grad); } return 0; }
Gruß
mic







Zitieren

Lesezeichen