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; }
static void run(void) { SET_CPU_IPL(0); clockEnable(); screenEnable(); menuEnable(); showWelcome(); receiverEnable(); clockShow(); runEventLoop(); }
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; }
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 */ }
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); }
void EnableInterrupts(void) { SET_CPU_IPL(0); }
void DisableInterrupts(void) { SET_CPU_IPL(SCHEDULE_TIMER_PRIORITY_LEVEL); }
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); }