Hi allerseits,
Ich habe mir jetzt auch das M32 Modul gekauft und möchte in Zukunft versuchen mich in der Programmierung darauf zu konzentrieren...
In einem der Bespiele sind diese Code-schnipsel für das Ausführen von z.B. des move Befehls durch den Base-Prozessor verantwortlich:
Code:#include "RP6I2CmasterTWI.h" // I2C Master Library #include "RP6Control_I2CMasterLib.h" //RP6 Control I2C Master libraryCode:void watchDogRequest(void) { static uint8_t heartbeat2 = false; if(heartbeat2) { clearPosLCD(0, 14, 1); heartbeat2 = false; } else { setCursorPosLCD(0, 14); writeStringLCD_P("#"); heartbeat2 = true; } } // I2C Requests: /** * The I2C_requestedDataReady Event Handler */ void I2C_requestedDataReady(uint8_t dataRequestID) { checkRP6Status(dataRequestID); } // I2C Error handler /** * This function gets called automatically if there was an I2C Error like * the slave sent a "not acknowledge" (NACK, error codes e.g. 0x20 or 0x30). */ void I2C_transmissionError(uint8_t errorState) { writeString_P("\nI2C ERROR - TWI STATE: 0x"); writeInteger(errorState, HEX); writeChar('\n'); }In der BASE ist „RP6Base_I2CSlave.hex“ geladen.Code:// --------------------------------------- WDT_setRequestHandler(watchDogRequest); // --------------------------------------- // Init TWI Interface: I2CTWI_initMaster(100); I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady); I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); // --------------------------------------- I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED); I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true); I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);
Fragen:
- Wäre es vorstellbar diesen Code in eine Funktion, meinetwegen „void master-slave(void)„ auszulagern und bei Bedarf als „master-slave();“ in ein Programm (Hauptschleife) ähnlich wie z.B. „task_motionControl();“ einzutragen?
- wäre/ist mit dem einbinden der obigen Code-schnipsel sichergestellt, dass alle in der BASE-lib-Dateien vorhandene Funktionen zwar in/durch das Programm im Controlmodul initiiert, aber im Base-Prozessor ausgeführt werden, oder ist das viel komplizierter als ich es mir hier vorstelle?







Zitieren

Lesezeichen