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?