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

Reply via email to