On Thursday 24 May 2007 10:02, Steve McKown wrote:
> Hi Michele,
>
> On Wednesday 23 May 2007 09:51, Michele Paselli wrote:
> > I'm working with a platform based on the msp430 and I need to use one of
> > the two internal timers (A or B) in order to generate an external clock.
> > The problem is that they're both already used by TinyOS, TimerA for the
> > ADC and TimerB for the internal timing. My question is, could I switch
> > one of these two timers with the watchdog timer provided by the msp430?
> > Are there any drawbacks in doing that? Would this require a lot of work?
> > Thanks for the help.
>
> I'm assuming TinyOS 2.0 and an msp430 like the '1611.
>
> Both timer peripherals implement multiple capture/compare registers.  You
> can use a CCR to pass through its Timer's source clock (/ 2) by setting the
> CCR to 0 and configuring its control so that it toggles an output each time

Oops, wrong.  /2^16, the number of codes storable in TAR.  Sorry...

> the Timer register wraps.  To get a reasonably stable clock, you'll
> probably need a crystal source.  TimerB already has one in most msp430
> designs.  One can be added for use by TimerA (XT2, generating ACLK). 
> TimerA without a crystal sources from the DCO which isn't very stable over
> time and temperature.
>
> You can generate other clock frequencies by altering the CCR value after
> each compare event using a bit of code in the ISR.  The big problem is that
> the reliability of the clock is now dependent upon the uC's ability to
> service the interrupt in time to get the CCR value changed before the Timer
> register reaches that next value.  So, it's probably usable only for
> relatively low clock frequencies.
>
> IMO, TimerB is the best to use if you can, since it is always running in
> most tos programs and the necessary TinyOS componentry exists to use its
> CCR's. TimerA will require some more coding, but the TimerB code could
> effectively be copied.
>
> You can allocate a CCR, with wiring like this, if using Timer B:
>
>   components new Msp430Timer32khzC() as Timer;
>   YourModuleP.Msp430TimerControl -> Timer;
>   YourModuleP.Msp430Compare -> Timer;
>
> BTW, the ADC12's will run fine without using TimerA, with some
> limitations.Create a component providing AdcConfigure<const
> msp430adc12_channel_config_t*> that sets adc12ssel to any value *other*
> than SHT_SOURCE_ACLK.  You can use all the standard ADC read interfaces,
> but if you use ReadStream, you must use zero (0) for the usPeriod field (if
> usPeriod
>
> > 0, then TimerA is used to generate SAMPCON).
>
> Hope this helps,
> Steve
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
> !DSPAM:4655bb1c138758539715904!
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to