Beispiel #1
0
void SYS_Initialize ( void* data )
{
    /* Core Processor Initialization */
    SYS_CLK_Initialize( NULL );
    sysObj.sysDevcon = SYS_DEVCON_Initialize(SYS_DEVCON_INDEX_0, (SYS_MODULE_INIT*)&sysDevconInit);
    SYS_DEVCON_PerformanceConfig(SYS_CLK_SystemFrequencyGet());
    SYS_DEVCON_JTAGDisable();
    SYS_PORTS_Initialize();

    /* Initialize Drivers */
    /*Initialize TMR0 */
    DRV_TMR0_Initialize();
 
    DRV_USART0_Initialize();
    DRV_USART1_Initialize();
    DRV_USART2_Initialize();
      
    /* Initialize System Services */
    SYS_INT_Initialize();  

    /* Initialize Middleware */
    initDebugU();

    /* Initialize the Application */
    COMMUNICATION_Initialize();
    MOTOR_Initialize();
    SENSORCOMMUNICATION_Initialize();
}
void SYS_Initialize ( void* data )
{
    /* Core Processor Initialization */
    SYS_CLK_Initialize( NULL );
    sysObj.sysDevcon = SYS_DEVCON_Initialize(SYS_DEVCON_INDEX_0, (SYS_MODULE_INIT*)&sysDevconInit);
    SYS_DEVCON_PerformanceConfig(SYS_CLK_SystemFrequencyGet());
    SYS_DEVCON_JTAGDisable();
    SYS_PORTS_Initialize();

    /* Initialize Drivers */
    /*Initialize TMR0 */
    DRV_TMR0_Initialize();
    /*Initialize TMR1 */
    DRV_TMR1_Initialize();
    /*Initialize TMR2 */
    DRV_TMR2_Initialize();
    /*Initialize TMR3 */
    DRV_TMR3_Initialize();

     DRV_USART0_Initialize();
    DRV_USART1_Initialize();


    /*Initialize OC0 */
    DRV_OC0_Initialize();

    /*Initialize OC1 */
    DRV_OC1_Initialize();

    /* Initialize System Services */
    SYS_INT_Initialize();  

    /*Setup the INT_SOURCE_EXTERNAL_1 and Enable it*/
    SYS_INT_VectorPrioritySet(INT_VECTOR_INT1, INT_PRIORITY_LEVEL1);
    SYS_INT_VectorSubprioritySet(INT_VECTOR_INT1, INT_SUBPRIORITY_LEVEL0);
    SYS_INT_ExternalInterruptTriggerSet(INT_EXTERNAL_INT_SOURCE1,INT_EDGE_TRIGGER_RISING);
    SYS_INT_SourceEnable(INT_SOURCE_EXTERNAL_1);

    /*Setup the INT_SOURCE_EXTERNAL_2 and Enable it*/
    SYS_INT_VectorPrioritySet(INT_VECTOR_INT2, INT_PRIORITY_LEVEL1);
    SYS_INT_VectorSubprioritySet(INT_VECTOR_INT2, INT_SUBPRIORITY_LEVEL0);
    SYS_INT_ExternalInterruptTriggerSet(INT_EXTERNAL_INT_SOURCE2,INT_EDGE_TRIGGER_RISING);
    SYS_INT_SourceEnable(INT_SOURCE_EXTERNAL_2);





    /* Initialize Middleware */
	initDebugU();

    /* Initialize the Application */
    COMMUNICATION_Initialize();
    MOTOR_Initialize();
}
Beispiel #3
0
// Main program
int main(void) {

	// Initialize modules
	COMMON_Initialize();
	SIGNAL_Initialize();
	MEASUREMENT_Initialize();
	MOTOR_Initialize();
	TASK_Initialize();
	MEMORY_Initialize();
	COMMUNICATION_Initialize();
	//LOGGING_Initialize();

	// Activate measurements
	MEASUREMENT_ActivateAnalogConverter();
	MEASUREMENT_ActivatePositionSensor();

	// Wait for stabilized measurements
    COMMON_Delay(5);

	// Calibrate controller temperature sensor
	if (MEMORY_CheckFlag(FLAG_TEMPERATURE_SENSOR_CALIBRATION)) {

		// Reset flag for controller temperature sensor calibration
		MEMORY_ResetFlag(FLAG_TEMPERATURE_SENSOR_CALIBRATION);

		// Calibrate controller temperature sensor
		MEASUREMENT_CalibrateTemperatureSensor();

	}

	// Initialize state observer and control
	OBSERVER_Initialize();
	TRAJECTORY_GENERATION_Initialize();
	CONTROL_Initialize();

	// Activate signal
	SIGNAL_Activate();

	// Activate task management
	TASK_Activate();

	// Activate watchdog timer
	COMMON_ActivateWatchdog();

	// Clear communication status register
	COMMUNICATION_ClearStatusRegister();

	while (1) {

		// Observer task
		if (TASK_CheckTask(TASK_OBSERVER)) {

			// Update estimation
			OBSERVER_UpdateEstimation();

			// Reset observer task
			TASK_ResetTask(TASK_OBSERVER);

		}

		// Control task
		if (TASK_CheckTask(TASK_CONTROL)) {

			// Update control signal
			CONTROL_UpdateControlSignal();

			// Reset control task
			TASK_ResetTask(TASK_CONTROL);

		}

		// Signal task
		if (TASK_CheckTask(TASK_SIGNAL)) {

			// Update signal
			SIGNAL_Update();

			// Reset signal task
			TASK_ResetTask(TASK_SIGNAL);

		}

		// Logging update task
		if (TASK_CheckTask(TASK_LOGGING_UPDATE)) {

			// Update logging values
			/*LOGGING_UpdateEndurance();
			if (MEMORY_CheckError(ERROR_CURRENT_LIMIT)) {

				LOGGING_UpdateOvercurrentTime();

			}
			if (MEMORY_CheckError(ERROR_MOTOR_TEMPERATURE_LIMIT)) {

				LOGGING_UpdateOvertemperatureTime();

			}*/

			// Reset logging update task
			TASK_ResetTask(TASK_LOGGING_UPDATE);

		}

		// Logging saving task
		if (TASK_CheckTask(TASK_LOGGING_SAVING) && (EEPROM0_GetStatus() != EEPROM_BUSY)) {

			// Save logging values
			//LOGGING_Save();

			// Reset logging saving task
			TASK_ResetTask(TASK_LOGGING_SAVING);

		}

		// Status return delay timer
		if (TASK_CheckTimer(TIMER_STATUS_RETURN_DELAY)) {

			// Process end of status return delay
			COMMUNICATION_ProcessStatusReturnDelay();

			// Reset status return delay timer
			TASK_ResetTimer(TIMER_STATUS_RETURN_DELAY);

		}

		// Reception timeout timer
		if (TASK_CheckTimer(TIMER_RECEPTION_TIMEOUT)) {

			// Process reception timeout
			COMMUNICATION_ProcessReceptionTimeout();

			// Reset reception timeout timer
			TASK_ResetTimer(TIMER_RECEPTION_TIMEOUT);

		}

		// Synchronized read timeout timer
		if (TASK_CheckTimer(TIMER_SYNCHRONIZED_READ_TIMEOUT)) {

			// Process synchronized read timeout
			COMMUNICATION_PROTOCOL_ProcessSynchronizedReadTimeout();

			// Reset synchronized read timeout timer
			TASK_ResetTimer(TIMER_SYNCHRONIZED_READ_TIMEOUT);

		}

		// Process communication packets
		if (COMMUNICATION_CheckPacketStatus() == COMMUNICATION_PROCESS) {

			// Process communication packet
			COMMUNICATION_PROTOCOL_ProcessPacket();

		}

		// Reload watchdog timer
		COMMON_ReloadWatchdog();

	}
}