Ejemplo n.º 1
0
/**************************************************************
 *  Name                 :	SchM_Start
 *  Description          :	Starts the scheduler
 *  Parameters           :  None
 *  Return               :
 *  Critical/explanation :    [yes / No]
 **************************************************************/
void SchM_Start(void)
{
	SchController.SchStatus = SCH_RUNNING;
	PIT_channel_start(PIT_CHANNEL_0);
    enableIrq();			/* Enable External Interrupts*/
	SchM_Background();		/* Scheduler controls hardware */
}
Ejemplo n.º 2
0
/*****************************************************************************************************                                                                        
*   Function: main()
*
*   Description: what I can say about it, it just the tipical main
*
*   Caveats:
*****************************************************************************************************/
void main(void) 
{
  /*Disable interrupts to start the MCU configuration*/  
  DisableInterrupts;
  /* Intilialize the interupt vector base address for default location */
  Init_Interrupt_Vector();
    
  Mcu_Init();
  DDRA =0x0F;
  DDRB =0x0F;
  
  EnableInterrupts;
  
  SchM_Init(SchM_TaskConfigInitial);
  SchM_Start();
  
  for(;;) 
  {
    /* Call the scheduler */
    SchM_Background();
    /* feeds the dog */
    _FEED_COP(); 
  } 
  /* loop forever */
  /* please make sure that you never leave main */
}
Ejemplo n.º 3
0
/*****************************************************************************************************                                                                        
*   Function: SchM_Start
*
*   Description: Starts the scheduler
*
*   Caveats:
*****************************************************************************************************/
void SchM_Start(void)
{
    u16 index_a; 
    u16 index_b;
    u16 index_ControlBlock;
    /*Start the timer for the OS tick*/
    Gpt_StartTimer(CHANNEL_0, 500u);
    //Gpt_StartTimer(CHANNEL_1, 20000u);
    //Gpt_StartTimer(CHANNEL_2, 40020u);
    /*Enable notification*/
    Gpt_EnableNotification(CHANNEL_0);
    Gpt_EnableNotification(CHANNEL_1);
    Gpt_EnableNotification(CHANNEL_2);
    
    /* Initialize Dispacher Array Vector */
    for(index_a=0U;index_a < MAX_PRIORITY;index_a++)
    {
      for(index_b=0U;index_b < CNF_MAXTASKQUEUE;index_b++)
      {
         DispacherArray[index_a][index_b] = 0xFFFF;            
      }
    }
    
    BackgroundControlBlock.BackgroundContextSave.CCR_TaskContext_u16   = 0U;
    BackgroundControlBlock.BackgroundContextSave.D_TaskContext_u16     = 0U;
    BackgroundControlBlock.BackgroundContextSave.X_TaskContext_u16     = 0U;
    BackgroundControlBlock.BackgroundContextSave.Y_TaskContext_u16     = 0U;
    BackgroundControlBlock.BackgroundContextSave.PC_TaskContext_u16    = 0U;
    BackgroundControlBlock.BackgroundContextSave.PPAGE_TaskContext_u16 = 0U;
    BackgroundControlBlock.BackgroundContextSave.SP_TaskContext_u16    = 0U;
    BackgroundControlBlock.BackgroundInterrupted                       = TASK_NOPREEMPTED;

    TaskControlBlock = ((Task_Control_Block *__far)Mem_Alloc((MAX_NUM_TASK*sizeof(Task_Control_Block))));
    for(index_ControlBlock=0U;index_ControlBlock < MAX_NUM_TASK;index_ControlBlock++)
    {
      TaskControlBlock[index_ControlBlock].Task_ID                                  = TaskConfigInitial->ptr_Task[index_ControlBlock].Task_ID;
      TaskControlBlock[index_ControlBlock].Task_Priority                            = TaskConfigInitial->ptr_Task[index_ControlBlock].Task_Priority;
      TaskControlBlock[index_ControlBlock].Task_State                               = SUSPENDED;
      TaskControlBlock[index_ControlBlock].Stack_Information.StartAddress           = 0U;
      TaskControlBlock[index_ControlBlock].Stack_Information.EndAddress             = 0U;
      TaskControlBlock[index_ControlBlock].Task_Deadline.Relative                   = 0U;
      TaskControlBlock[index_ControlBlock].Task_Deadline.Absolute                   = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.CCR_TaskContext_u16     = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.D_TaskContext_u16       = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.X_TaskContext_u16       = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.Y_TaskContext_u16       = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.PC_TaskContext_u16      = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.PPAGE_TaskContext_u16   = 0U;
      TaskControlBlock[index_ControlBlock].Task_ContextSave.SP_TaskContext_u16      = 0U;
      TaskControlBlock[index_ControlBlock].Task_Interrupted                         = TASK_NOPREEMPTED;
      TaskControlBlock[index_ControlBlock].Task_Mode                                = PERIODIC;
    }
    
    while(1)
    {
      SchM_Background();
      _FEED_COP();
    }

}
Ejemplo n.º 4
0
/**
* \brief    Scheduler start
* \author   Gerardo Valdovinos
* \param    void
* \return   void     
*/
void SchM_Start(void)
{
    /* Initialize OsTick timer */
    Gpt_EnableNotification(0);
    Gpt_StartTimer(0);
    
    /* Go to a background task */
    SchM_Background();
}
Ejemplo n.º 5
0
/*const SchMConfigType *schmconfigglobal;*/
void SchM_Start(void)
{
	/*arrancar el timer pit*/
	
		
    PIT_channel_start(PIT_CHANNEL_0);
	enableIrq();
	SchControl.SchStatus=SCH_RUNNING;
	SchM_Background();
}