Thanks for your help. If I have correctly understood what you are saying, I have the following options (none of them is nice): - Use the internal RC Oscillator for TMcu and wire everything on it: I loose precision and I need to keep the atm128rfa1 in idle mode (the HplAtmRfa1TimerP do it automatically if a timer is set) - Use the external Transceiver Oscillator for TMcu and wire everything on it: It is more precise (even if not as a 32Khz oscillator) but should draw a little more current. From the datasheet, with the external oscillator I should be able to put the atm128rfa1 in standby mode, still keeping the oscillator running - Use the external Transceiver Oscillator as Symbol Counter and manage the transceiver driver to avoid sleep mode (it seems quite complicated).
I've checked the fuses of the zigduino, they are set as: low_fuses=0xFF , high_fuses=0xDA , extended_fuses=0xF5 The low fuse is set to select the external 16Mhz transceiver oscillator, thus, I started following the second option. It seems to work even if the timer stops if I force the atmega128rfa1 to standby mode (it shouldn't do that) while keeping the idle mode works fine. Ugo p.s. the McuInitP does not seem to support the external oscillator since all the CLKPR values assumes internal RCOscillator with 1:2 prescaler. I forced CLKPR to 0x00 since the default value, 0x0f was for RC Oscillator only. On 05/23/2012 10:11 PM, András Bíró wrote: > Hi Ugo, > > On Wed, May 23, 2012 at 5:37 PM, Ugo Colesanti > <[email protected]> wrote: >> I managed to have TimerMilli working without re-wiring: >> - I used Blink as test >> - I changed SYM_TIMER_MODE to ATMRFA1_CLKSC_XTAL but it was not enough >> since as the datasheet says: "If the transceiver goes from active mode >> into sleep mode, the symbol counter clock source is switched to the RTC >> clock automatically [...] After wake up, the counter switches back to >> the clock source which was selected before going to sleep mode." >> - Hence, I added ActiveMessageC and started it, but TimerMilli was >> still not working >> - Then I found this thread: >> http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=110931&start=0 >> <http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=110931&start=0> >> where it seems that when the radio exits sleep mode, it does not select >> XTAL unless the following code is run: >> >> ASSR_struct.as2 = 1; >> ASSR_struct.as2 = 0; >> >> the code enables and disables the RTC. >> - Thus, in the splitControl.startDone of Active message I added: >> >> atomic{ >> ASSR = 1<< AS2; >> ASSR = 0<< AS2; >> } >> >> and yep, it worked :) >> >> By the way I realized that without the RTC, the symbol counter as >> TimerMilli is useless since it would be stopped each time the radio >> would go into sleep state, thus i think that re-wiring everything to >> TMcu as previously done is better. Isn't it? > First of all, I'm not really familiar with the new (or the old) timer > stack, but I'm quite familiar with the rfa1 (I wrote some of the > drivers for it, and I'm still working with rfa1 based motes). > > Both solutions are bad, but I'm not sure which one is less bad. > > First, the internal RC oscillator is quite inaccurate. The 16MHz radio > crystal is much better, but it's way too fast for RTC usage, if you > scale it down to millisecs, the nominal frequency error will be much > bigger then a 32 kHz crystal. > > The bigger problem is the energy. You're correct, you need the radio > in TRX_OFF mode to use it's oscillator. Turning it on with > ActiveMessage brings the transciever to RX_ON mode, and I think it > consumes much more power than TRX_OFF. However turning the transciever > on without messing up the state machine of the radio timer is not an > easy task. > > If you want to use the main clock, it will never let the mcu to enter > power-down/power-save mode (only standby/extended standby). By the > way, you have to do this manually with connecting > McuPowerOverride/McuPowerState interfaces to McuSleepC. > > If I were you, I would use the main clock, and if I need more accurate > timing, I would change the corresponding fuses on the mcu to use the > radio crystal for the main clock. > > Andirs > >> Ugo >> >> On 05/21/2012 06:30 PM, Ugo Colesanti wrote: >>> Hi, I just made the port of TinyOS-2.1.2-rc1 for the Zigduino platform, >>> an arduino clone with atmega128rfa1 chip. The porting was pretty simple >>> since the atm128rfa1 is already supported. The only issue I had was >>> related to the missing RTC on the zigduino which is used by TimerMilli >>> and Alarm62khz components. I made everything work by applying the >>> following changes: >>> - I re-wired AlarmMilli32C and CounterMilli32C to AlarmMicro32C and >>> CounterMicro32C respectively >>> - I used AlarmMicro32C and LocalTimerMicroC in the RFA1DriverLayerC >>> - I redefined TRadio as TMicro and set RADIO_ALARM_MICROSEC to 1 and >>> RADIO_ALARM_MILLI_EXP to 0 in RadioConfig.h >>> >>> With these changes I've been able to successfully run Blink, >>> RadioCountToLeds,tests/TestNetworkLPL and tutorial/Printf . However I >>> think there is a cleaner way to get the millitimer and 62khz timer to >>> properly work on zigduino. In particular I think there is a way to tell >>> tinyos to use the XTAL1 instead of OSC1 at least for Alarm62khz. I >>> tried to set SYM_TIMER_MODE to ATMRFA1_CLKSC_XTAL in TimerConfig.h >>> but it has not worked. Probably I missed some steps but I get lost with >>> all those timers :S >>> Does somebody have any suggestion? >>> >>> Ugo >>> >>> p.s. I put my code on: http://code.google.com/p/zigduino-tinyos/ >>> >>> >>> >>> >> >> -- >> Ugo Maria Colesanti >> Dipartimento di Informatica e Sistemistica >> Sapienza Universita' di Roma >> Via Ariosto 25, II floor, room B221 >> 00185, Rome >> http://wiserver.dis.uniroma1.it/cms/index.php?id=8 >> Phone: +39 06 77274003 >> Fax: +39 06 77274002 >> >> _______________________________________________ >> Tinyos-help mailing list >> [email protected] >> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help -- Ugo Maria Colesanti Dipartimento di Informatica e Sistemistica Sapienza Universita' di Roma Via Ariosto 25, II floor, room B221 00185, Rome http://wiserver.dis.uniroma1.it/cms/index.php?id=8 Phone: +39 06 77274003 Fax: +39 06 77274002 _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
