Content originally posted in LPCWare by avass on Wed Jan 02 23:56:08 MST 2013
Hi,
I would like to output two independent PWMs. For example, MAT0 outputing "0.1V" and MAT1 outputing "2.6V"...
I've been trying to use timer 0 using the init_timer16PWM / setMatch_timer16PWM functions outputing on 0_8/0_9 (MAT0/MAT1), but it looks like they are somehow interconnected. I am sure I don't know enough, I've been reading the docs, yet here I'm...
So far my code is :
LPC_TMR16B0->TCR = 0;//Disable Timer0
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7);// System AHB clock control enable clock to timer 0
LPC_TMR16B0->EMR = (1<<EMC3)|(0<<EMC2)|(1<<EMC1)|(1<<EMC0)|(1<<3)|(MATCH0)|(MATCH1);// Setup the external match register
LPC_IOCON->PIO0_8 &= ~0x07;
LPC_IOCON->PIO0_8 |= 0x02;// Timer0_16 MAT0
LPC_IOCON->PIO0_9 &= ~0x07;
LPC_IOCON->PIO0_9 |= 0x02;// Timer0_16 MAT1
LPC_TMR16B0->MR3 = 1000;// Setup the match registers
LPC_TMR16B0->MR0 = 0;// Match Register 0
LPC_TMR16B0->MR1 = 0;
LPC_TMR16B0->MCR = 1<<10;// Match Control Register : Reset on MR3
LPC_TMR16B0->PWMC = (1<<3)|0x02|0x01;// PWM Control Register Enable the selected PWMs and enable Match3
NVIC_EnableIRQ(TIMER_16_0_IRQn);// Enable the TIMER1 Interrupt
LPC_TMR16B0->MR0 = 50;
LPC_TMR16B0->MR1 = 500;
LPC_TMR16B0->TCR = 1;// Enable Timer16
I thought this would output 50/1000*3.3V on 0_8 and 500/1000*3.3V on 0_9, yet I'm getting 1.5V and 2.90Vs...
Can somebody please help.
Thanks!