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 library
Code:
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');
}
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);
In der BASE ist „RP6Base_I2CSlave.hex“ geladen.
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?
Lesezeichen