[Tinyos-help] Reading PWM signal
Steve McKown
rsmckown at yahoo.com
Sun Apr 1 10:09:42 PDT 2007
On Sunday 01 April 2007 09:33, Jan Soukup wrote:
> Hi everybody,
>
> I want to read a PWM signal from accelerometer with a Tmote Sky module. But
> as far as I just found out, when I use GPIO input, only the rising edge OR
> the falling edge of the signal can be captured. Am I right? But I need to
> measure both, because of time stamps to know the ratio of the periodes. Can
> anyone help please? Can I use analog inputs of the ADC instead of Digital
> IOs?
The msp430 will interrupt only on one type of transition at a time, either
low-to-high or high-to-low. The settings are mutually exlusive; see the TI
msp430 User's Guide, section 9.2 for more information.
Depending upon the frequency and duty cycle ranges of the input PWM signal,
you can create a reliable component that uses the GpioCapture interface to do
what you want. Start by calling Capture.captureRisingEdge(), for example,
and then when Capture.captured() is signalled, call
Capture.captureFallingEdge(). The Capture.captured() signal gives you the
TxR (timer register) value at the time of the capture, which you can use to
calculate frequency, pulse duration, duty cycle, etc. If the signal
frequency is slow you may need to use Msp430Timer for the appropriate timer
so you can process Msp430Timer.overflow() events as well.
I don't understand the ramifications of trying to read the duty cycle via the
ADC so I can't comment on this strategy.
All the best,
Steve
More information about the Tinyos-help
mailing list