//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)
	}
}
Beispiel #2
0
//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
	}
}