//INTERRUPT PWM void PWM1_IRQHandler(void) { //Interupción Canal 0 -> PERIODO //----------------------------------------------------------------------------------------------- if (Chip_PWM_MatchPending(LPC_PWM1, 0)) //Reviso interrupción pendiente canal PWM 0 { Match_Cnt1++; //Incremento contador para el brillo Match_Cnt2++; Chip_PWM_ClearMatch(LPC_PWM1, 0); //Limpio interrupción canal PWM 0 //PWM sobre transistores PMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Q1b[Cycle], PIN_Q1b[Cycle], 1); //Encender (invertido por el tbj emisor común) Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Q2b[Cycle], PIN_Q2b[Cycle], 1); //Encender (invertido por el tbj emisor común) } //Interrupción Canal 5 -> DUTYCICLE //----------------------------------------------------------------------------------------------- if (Chip_PWM_MatchPending(LPC_PWM1, 5)) //Reviso interrupción pendiente canal PWM 5 { Chip_PWM_ClearMatch(LPC_PWM1, 5); //Limpio interrupción canal PWM 5 //PWM sobre transistores NMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Q1b[Cycle], PIN_Q1b[Cycle], 0); //Apagar (invertido por el tbj emisor común) } //Interrupción Canal 5 -> DUTYCICLE //----------------------------------------------------------------------------------------------- if (Chip_PWM_MatchPending(LPC_PWM1, 6)) //Reviso interrupción pendiente canal PWM 5 { Chip_PWM_ClearMatch(LPC_PWM1, 6); //Limpio interrupción canal PWM 5 //PWM sobre transistores NMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Q2b[Cycle], PIN_Q2b[Cycle], 0); //Apagar (invertido por el tbj emisor común) } }
//INTERRUPT PWM void PWM1_IRQHandler(void) { //Interupción Canal 0 -> PERIODO //----------------------------------------------------------------------------------------------- if (Chip_PWM_MatchPending(LPC_PWM1, 0)) //Reviso interrupción pendiente canal PWM 0 { Match_Cnt[0]++; //Incremento contador para el brillo Match_Cnt[1]++; //Incremento contador para el brillo Match_Cnt[2]++; //Incremento contador para el brillo Match_Cnt[3]++; //Incremento contador para el brillo Chip_PWM_ClearMatch(LPC_PWM1, 0); //Limpio interrupción canal PWM 0 //PWM sobre transistores PMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[0][Cycle[0]], PIN_Qa_[0][Cycle[0]], 1); //Encender Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[1][Cycle[1]], PIN_Qa_[1][Cycle[1]], 1); //Encender Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[2][Cycle[2]], PIN_Qa_[2][Cycle[2]], 1); //Encender Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[3][Cycle[3]], PIN_Qa_[3][Cycle[3]], 1); //Encender } //Interrupción Canal PWM_number[sel_motor] -> DUTYCICLE //----------------------------------------------------------------------------------------------- if (Chip_PWM_MatchPending(LPC_PWM1, 3)) //Reviso interrupción pendiente canal PWM 3 { Chip_PWM_ClearMatch(LPC_PWM1, 3); //Limpio interrupción canal PWM 3 //PWM sobre transistores NMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[0][Cycle[0]], PIN_Qa_[0][Cycle[0]], 0); //Apagar } if (Chip_PWM_MatchPending(LPC_PWM1, 4)) //Reviso interrupción pendiente canal PWM 3 { Chip_PWM_ClearMatch(LPC_PWM1, 4); //Limpio interrupción canal PWM 3 //PWM sobre transistores NMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[1][Cycle[1]], PIN_Qa_[1][Cycle[1]], 0); //Apagar } if (Chip_PWM_MatchPending(LPC_PWM1, 5)) //Reviso interrupción pendiente canal PWM 3 { Chip_PWM_ClearMatch(LPC_PWM1, 5); //Limpio interrupción canal PWM 3 //PWM sobre transistores NMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[2][Cycle[2]], PIN_Qa_[2][Cycle[2]], 0); //Apagar } if (Chip_PWM_MatchPending(LPC_PWM1, 6)) //Reviso interrupción pendiente canal PWM 3 { Chip_PWM_ClearMatch(LPC_PWM1, 6); //Limpio interrupción canal PWM 3 //PWM sobre transistores NMOS Chip_GPIO_WritePortBit(LPC_GPIO, PORT_Qa_[3][Cycle[3]], PIN_Qa_[3][Cycle[3]], 0); //Apagar } }