Jetzt habe ich versucht, eine Funktion direkt im Slave aufzurufen, da es ja mit der fremden Lib nicht geht:
Meine Abfrage dann im Register:Code:#define SRF02_Adr 0xE0 //Standardadresse des SRF02 void task_SRF02(void); { I2CTWI_transmit2Bytes(SRF02_Adr, 0, 81); //Gib Distanz in cm zurück mSleep(100); I2CTWI_transmitByte(SRF02_Adr, 2); uint8_t highbyte = I2CTWI_readByte(2); I2CTWI_transmitByte(SRF02_Adr, 3); uint8_t lowbyte = I2CTWI_readByte(3); uint16_t SRF02_Dist = (highbyte*256)+lowbyte; writeString_P("\n distance:"); writeInteger(distance,DEC); return SRF02_Dist; }
Jedoch wieder nur Fehler. Das #include "SRF02ControlLibrary.h" habe ich aber schon rausgenommen.Code:uint16_t mic = getMicrophonePeak(); uint16_t SRF02_Dist = task_SRF02(); I2CTWI_readRegisters[I2C_BUTTON] = (getPressedKeyNumber()); I2CTWI_readRegisters[I2C_MICROPHONEPEAKLOW] = (mic & 0x00ff); I2CTWI_readRegisters[I2C_MICROPHONEPEAKHIGH] = (mic & 0xff00) >> 8; I2CTWI_readRegisters[I2C_ADC_2] = (uint16_t)readADC(ADC_2); I2CTWI_readRegisters[I2C_ADC_3] = (uint16_t)readADC(ADC_3); I2CTWI_readRegisters[I2C_ADC_4] = (uint16_t)readADC(ADC_4); I2CTWI_readRegisters[I2C_ADC_5] = (uint16_t)readADC(ADC_5); I2CTWI_readRegisters[I2C_ADC_6] = (uint16_t)readADC(ADC_6); I2CTWI_readRegisters[I2C_ADC_7] = (uint16_t)readADC(ADC_7); I2CTWI_readRegisters[I2C_RF02_DIST_LOW] = (SRF02_Dist & 0x00ff); I2CTWI_readRegisters[I2C_RF02_DIST_HIGH] = (SRF02_Dist & 0xff00) >> 8;







Zitieren

Lesezeichen