Hi Everyone
Can someone please tell me why this code works on pin 15 of a T4.1 (sounds a buzzer):
But this code does not work on pin 12?
It's bound to be something obvious. Thank you for your help.
Can someone please tell me why this code works on pin 15 of a T4.1 (sounds a buzzer):
Code:
long buzzerThreshold = 48000; // threshold tone frequency
uint16_t buzzerDutyOnTime = buzzerThreshold / 4; // default volume duty cycle 1:3 on time = 25%
uint16_t buzzerDutyOffTime = (buzzerThreshold / 4) * 3; // default volume duty cycle 1:3 off time = 75%
void setup() {
CCM_CCGR6 |= CCM_CCGR6_QTIMER3(CCM_CCGR_ON); // enable QTIMER3 clock p.1091
IOMUXC_SW_MUX_CTL_PAD_GPIO_AD_B1_03 = 0x01; // set mux mode pin 15 to QTIMER3_TIMER3 p.495
TMR3_ENBL = 0; // disable timer for setup p.3008
TMR3_LOAD3 = 0; // intitial/reset value p.2998
TMR3_CNTR3 = 0; // reset counter to 0 p.2999
TMR3_SCTRL3 = 0x01; // TMR_SCTRL_OEN (output enable) p.3002 p.3024
TMR3_CSCTRL3 = 0x06; // TMR_CSCTRL_CL2(1) | TMR_CSCTRL_CL1(2) p.3004
TMR3_COMP23 = buzzerDutyOnTime; // pulse width ON time in ticks p.2998 p.3009
TMR3_CMPLD23 = buzzerDutyOnTime; // ON time preload value p.3003 p.3009
TMR3_COMP13 = buzzerDutyOffTime; // pulse width OFF time in ticks p.2997 p.3009
TMR3_CMPLD13 = buzzerDutyOffTime; // OFF time preload value p.3003 p.3009
TMR3_CTRL3 = 0x3024; // TMR_CTRL_CM(1)| TMR_CTRL_PCS(13) | TMR_CTRL_LENGTH | TMR_CTRL_OUTMODE(4) p.2999
// prescaler 1 = 3024, prescaler 32 = 3A24
TMR3_ENBL = 0x08; // enable timer / buzzer p.3008
}
void loop() {}
But this code does not work on pin 12?
Code:
long buzzerThreshold = 48000; // threshold tone frequency
uint16_t buzzerDutyOnTime = buzzerThreshold / 4; // default volume duty cycle 1:3 on time = 25%
uint16_t buzzerDutyOffTime = (buzzerThreshold / 4) * 3; // default volume duty cycle 1:3 off time = 75%
void setup() {
CCM_CCGR6 |= CCM_CCGR6_QTIMER1(CCM_CCGR_ON); // enable QTIMER1 clock p.1091
IOMUXC_SW_MUX_CTL_PAD_GPIO_B0_01 = 0x01; // set mux mode pin 12 to QTIMER1_TIMER1 p.509
TMR1_ENBL = 0; // disable timer for setup p.3008
TMR1_LOAD1 = 0; // intitial/reset value p.2998
TMR1_CNTR1 = 0; // reset counter to 0 p.2999
TMR1_SCTRL1 = 0x01; // TMR_SCTRL_OEN (output enable) p.3002 p.3023
TMR1_CSCTRL1 = 0x06; // TMR_CSCTRL_CL2(1) | TMR_CSCTRL_CL1(2) p.3004
TMR1_COMP21 = buzzerDutyOnTime; // pulse width ON time in ticks p.2998 p.3009
TMR1_CMPLD21 = buzzerDutyOnTime; // ON time preload value p.3003 p.3009
TMR1_COMP11 = buzzerDutyOffTime; // pulse width OFF time in ticks p.2997 p.3009
TMR1_CMPLD11 = buzzerDutyOffTime; // OFF time preload value p.3003 p.3009
TMR1_CTRL1 = 0x3024; // TMR_CTRL_CM(1)| TMR_CTRL_PCS(13) | TMR_CTRL_LENGTH | TMR_CTRL_OUTMODE(4) p.2999
// prescaler 1 = 3024, prescaler 32 = 3A24
TMR1_ENBL = 0x08; // enable timer / buzzer p.3008 (enable when required)
}
void loop() {}
It's bound to be something obvious. Thank you for your help.