}
// timer counter interrupts
-void interrupt_tc_config(u8 tcnum,u8 mode,u8 cap,u32 psc) {
+void interrupt_tc_config(u8 tcnum,u8 mode,u8 cap,u32 psv) {
if(tcnum>1)
return;
if(tcnum==0) {
T0TCR=0x03;
T0CTCR=mode|(cap<<2);
- T0PR=psc;
+ T0PR=psv;
}
else {
T1TCR=0x03;
T1CTCR=mode|(cap<<2);
- T1PR=psc;
+ T1PR=psv;
}
}
return;
if(tcnum==0) {
- T0MCR=mode<<(3*mnum);
- mrddr=&T0MR0
+ T0MCR=(T0MCR&0x0fff)|(mode<<(3*mnum));
+ mraddr=(u32 *)&T0MR0;
}
else {
- T1MCR=mode<<(3*mnum);
- mrddr=&T1MR0
+ T1MCR=(T1MCR&0x0fff)|(mode<<(3*mnum));
+ mraddr=(u32 *)&T1MR0;
}
- mraddr[mnum]=val;
+ *((volatile u32 *)(mraddr+mnum))=val;
}
void interrupt_tc_capt_config(u8 tcnum,u8 cnum,u8 mode) {
return;
if(tcnum==0)
- T0CCR=mode<<(3*cnum);
+ T0CCR=(T0CCR&0x0fff)|(mode<<(3*cnum));
else
- T1CCR=mode<<(3*cnum);
+ T1CCR=(T1CCR&0x0fff)|(mode<<(3*cnum));
}
void interrupt_tc_ir_set(u8 tcnum,u8 tcmc) {
if(tcnum>1)
return;
- if(tcnum==0)
+ if(tcnum==0) {
T0IR=tcmc;
- else
+ T0TCR=0x01;
+ }
+ else {
T1IR=tcmc;
+ T1TCR=0x01;
+ }
+}
+
+// pwm interrupts
+void interrupt_pwm_ir_set(u8 pwm_channel) {
+
+ PWMIR=(pwm_channel&0x0f)|((pwm_channel&0x70)<<4);
}
/*