Пример #1
0
services_t services(services_t service) {
    services_t service_send;
    service_send.command = service.command;
    switch (service.command) {
        case RESET:
            if (reset_count < 3) {
                reset_count++;
            } else {
                SET_CPU_IPL(7); // disable all user interrupts
                //DelayN1ms(200);
                asm("RESET");
            }
            break;
        case DATE_CODE:
            memcpy(service_send.buffer, version_date_, sizeof (version_date_));
            service_send.buffer[sizeof (version_date_) - 1] = ' ';
            memcpy(service_send.buffer + sizeof (version_date_), version_time_, sizeof (version_time_));
            break;
        case NAME_BOARD:
            memcpy(service_send.buffer, name_board, sizeof (name_board));
            break;
        case VERSION_CODE:
            memcpy(service_send.buffer, version_code, sizeof (version_code));
            break;
        case AUTHOR_CODE:
            memcpy(service_send.buffer, author_code, sizeof (author_code));
            break;
        default:
            break;
    }
    return service_send;
}
Пример #2
0
static void run(void)
{
	SET_CPU_IPL(0);
	clockEnable();
	screenEnable();
	menuEnable();
	showWelcome();
	receiverEnable();
	clockShow();
	runEventLoop();
}
Пример #3
0
int main(void)
{
	SET_CPU_IPL(7);
	IEC0 = 0;
	IEC1 = 0;
	IEC2 = 0;

	TRISB = 0xff;
	TRISC = 0xff;
	TRISD = 0xff;
	TRISE = 0xff;
	TRISF = 0xff;

	initialise();
	run();
	return 0;
}
Пример #4
0
int main(void)
{
	if (!IS_MCU_PROGRAMMED()) /* Stay in programming */
	__delay32((unsigned long)((1000)*(FCY_UP)/1000ULL));

	mcu_id = MCU_ID;
	if (isPOWER_ON(rst_state = get_reset_state()))
		power_on_init(); /*	For POR, BOR and MCLR */

	rst_events |= rst_state; /* As RCON register */
	++rst_num; /* Calculate session reset number */

	check_traps(); /* Do some possible traps */

	/* SIM doesn't clear SRbits.IPL, ICD2 clears it */
	SET_CPU_IPL(MAIN_IPL); /* Set default by hands */

	clr_reset_state(); // Clear uParam and RCON

	for(;;);
	return(0); /* Never return */
}
Пример #5
0
int main()
{
    struct sTaskTimesStruct *pTtime_pointer = &Ttime;

/*----------------------------------------------------------------------------*/
/*                                SYSTEM INIT                                      */
/*----------------------------------------------------------------------------*/    
    _SWDTEN = 0; // Disable WDT
    
    OSCCONbits.COSC = 0b111;
    OSCCONbits.NOSC = 0b111;
    OSCCONbits.CF = 0;
    while(OSCCONbits.LOCK!=1) {}; // Wait for PLL to lock
    
    SET_CPU_IPL(0b111);            // Force CPU interrupt priority to max.All user masked interrupts with ptiority from 0 to 7 are Disabled.(Safe version)            
     
/*----------------------------------------------------------------------------*/
/*                                MAIN PROGRAM                                  */
/*----------------------------------------------------------------------------*/
    /* INIT */
    delay_ms(10);
    
    if(EE_CheckEEprom() == S_OK)
    {
        /* Parameters Read */
        ee_param_act(1,1);     // INIT and put in PARACT_PARAMS_READ_ALL state
        ee_param_act(0,0);    // RUN read all parameters. NO NEED REINIT!
    }
    
    IF_DigitalIO_Init();
    IF_LCDInit();
    trace_init_first();
    IF_SysTmr1_Init();
    IF_SysTmr2_Init();
    IF_SysTmr3_Init();
    IF_ADC_INIT();
    state_machine_init();
    triac_control_init();
    measure_init();
    temp_ctrl_init();
    
    /* END INIT */
    
    IF_LCDPutc('\f');
    IF_LCDPuts("    SSTU 4.0");
    IF_LCDPutc('\n');
    IF_LCDPuts("     V");
    IF_LCDPutn((FIRMWARE_BASE_VERSION / 100));
    IF_LCDPutc('.');
    IF_LCDPutn(FIRMWARE_SUB_VERSION);
    
    delay_ms(200);
    
    INTCON1bits.NSTDIS = 0;    // Enable Nested Interrupts
    SET_CPU_IPL(0b000);        // Force CPU interrupt priority to low. All user masked interrupts with ptiority from 0 to 7 are Enabled.(Safe version)
    
    IF_Uart_Init(38400);
    
    ClrWdt();         // Clear WDT
    _SWDTEN = 1;    // Enable WDT    
    
    while(1)
    {
    /* BACKGROUND LOOP. */
        
        if(!_is_task1_execute() && !_is_task2_execute()) Sirem_Engine(); // Serial Communication run in background loop    
        
        Idle();
    
        if(!_is_task1_execute() && !_is_task2_execute()) TaskTimesCalc(pTtime_pointer);
        
        Idle();
        
        if(!_is_task1_execute() && !_is_task2_execute()) ee_param_act(0,0); // Online parameters actualization in background
        
        Idle();
        
        if(!_is_task1_execute() && !_is_task2_execute()) Params_check_limit();

        ClrWdt();    //<------ Clear Watchdog timer

        Idle();
    }

    return(0);
}
Пример #6
0
Файл: system.c Проект: klvt/fiwt
void EnableInterrupts(void) {
    SET_CPU_IPL(0);
}
Пример #7
0
Файл: system.c Проект: klvt/fiwt
void DisableInterrupts(void) {
    SET_CPU_IPL(SCHEDULE_TIMER_PRIORITY_LEVEL);
}
Пример #8
0
int main()
{

/*----------------------------------------------------------------------------*/
/*								SYSTEM INIT			                          */
/*----------------------------------------------------------------------------*/	
	_SWDTEN = 0; // Disable WDT
	
	OSCCONbits.COSC = 0b11;
	OSCCONbits.NOSC = 0b11;
	OSCCONbits.CF = 0;
	while(OSCCONbits.LOCK!=1) {;}; // Wait for PLL to lock
	
	SET_CPU_IPL(0b111);			// Force CPU interrupt priority to max.All user masked interrupts with ptiority from 0 to 7 are Disabled.(Safe version)
	 
	delay_ms(5);
/*----------------------------------------------------------------------------*/
/*								MAIN PROGRAM		                          */
/*----------------------------------------------------------------------------*/
	/* INIT */
	DSP_Engine_Init();
	
	/* Parameters Read */
	ee_param_act(1,1); 	// INIT and put in PARACT_PARAMS_READ_ALL state
	ee_param_act(0,0);	// RUN read all parameters. NO NEED REINIT!
	
	/* HW Modules Init */
	IF_DigitalIO_Init();
	IF_PWM_Init();
	IF_DigitalIO_Init();
	IF_SysTmr1_Init();
	IF_SysTmr2_Init();
	IF_SysTmr3_Init();
	IF_Uart_Init(38400);
	IF_ADC_INIT();
	
	/* Software Modules Init */
	Task_Init();
	Task1_Stack_Usage_Calc(_get_sTimes(), 1);
	trace_init_first();
	measure_init();
	VF_ControlInit();
	init_ramp1(0);
	init_ramp2(0);
	

	/* END INIT */
	
	INTCON1bits.NSTDIS = 0;	// Enable Nested Interrupts
	SET_CPU_IPL(0b000);		// Force CPU interrupt priority to low. All user masked interrupts with ptiority from 0 to 7 are Enabled.(Safe version)
	
	
	
	ClrWdt(); 		// Clear WDT
	//_SWDTEN = 1;	// Enable WDT	
	
	while(1)
	{
	/* BACKGROUND LOOP. */
		
		ee_param_act(0,0); // Online parameters actualization in background
		
		Sirem_Engine(); // Serial Communication run in background loop	
		
		adc_par_convert();
		
		TaskTimesCalc(_get_sTimes());
		
		VF_Par_Convert();
		
		
	}

	return(0);
}