Hi, On Thu, May 24, 2012 at 4:30 PM, Ugo Colesanti <[email protected]> wrote: > Thanks for your help. If I have correctly understood what you are saying, I > have the following options (none of them is nice):
You can still change the hardware :) > - 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 I'm not sure which oscillator consumes less energy, but thats probably correct. > - 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. Strange, but good to know. > > 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. You're right, there should be a define for that. Andris > > > > > 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
