I used PE to create a period timer on an MC9S08AC48, for some reason the timing of the pulses is off by a factor of 2-3 please see the attachment for a screen shot of how I configured the timer.
I'm trying to use the timer TPM3 to help control communications with a one-wire device. There are four specific timed pulses that I need to bit bang - a 15uS pulse, a 67uS pulse, a 240uS pulse and a 480uS pulse. I configured the bean to provide these options. I have also attached an image of the setting for the four times, and the output of my bit-banging.
The way I've approached the bit banging is to write a zero to the one wire bus, then set the timer to interrupt after a certain amount of time and which then writes a one to end it.
If you look at the attached bit bang, you can see that when I create a low going pulse, and then enable and set the timer for 67uS, as in the code below, the pulse I get is 160uS, not 67uS. Can anyone offer some advice on how to remedy this problem?
void OW_WriteBit(bool sendbit){
OW_TXBIT(0); //every write is preceded with a 1-0-1 transition
if(sendbit) OW_TXBIT(1);
(void)ONEWIRE_TMR_SetPeriodMode(ONEWIRE_TMR_PM_67_0us);
(void)ONEWIRE_TMR_Enable();
}
void OW_TIMER_Int(void)
{
(void) ONEWIRE_TMR_Disable(); //shut down the counter so it doesn't keep going and cause another interrupt
OW_TXBIT(1); //release the bus - let the device respond
}