Quizás quisiste decir: Hola, He encontrado una serie de errores *impiden* el
código por
Hello,

The code has several serious errors sent. I attached a new code:

*TestAdcC.nc*

#include "Timer.h"
#include "TestAdc.h"

module TestAdcC
{
  uses  {
  interface Boot;
  interface Leds;
  interface Timer<TMilli> as Timer0;
  interface Msp430Adc12Overflow as overflow;
  interface Msp430Adc12SingleChannel as adc;
  interface Resource;
  interface SplitControl as Control;
  interface Packet;
  interface AMSend;
 }

provides {
interface AdcConfigure<const msp430adc12_channel_config_t*> as
adc_configure;
}
}

implementation
{
#define BUF_SIZE 100
uint16_t buf[BUF_SIZE];
message_t packet;
uint16_t counter = 0;

msp430adc12_channel_config_t adc_config = {
    inch: SUPPLY_VOLTAGE_HALF_CHANNEL,
    sref: REFERENCE_VREFplus_AVss,
    ref2_5v: REFVOLT_LEVEL_1_5,
    adc12ssel: SHT_SOURCE_SMCLK,
    adc12div: SHT_CLOCK_DIV_1,
    sht: SAMPLE_HOLD_64_CYCLES,
    sampcon_ssel: SAMPCON_SOURCE_SMCLK,
    sampcon_id: SAMPCON_CLOCK_DIV_1
  };

event void Boot.booted() {
    call Leds.led0Off();
    call Leds.led1Off();
    call Leds.led2Off();
    call Control.start();

}

event void Timer0.fired() {

    call Resource.request();


  }

event void Control.startDone(error_t err) {
    if (err == SUCCESS){
    call Resource.request();
        }
    else
    call Control.start();
 }

event void Control.stopDone(error_t err) { }


async command const msp430adc12_channel_config_t*
adc_configure.getConfiguration() {
return &adc_config;
}

async event void overflow.conversionTimeOverflow() {
}

async event void overflow.memOverflow() {
}

async event error_t adc.singleDataReady(uint16_t data){

    test_serial_msg_t* rcm = (test_serial_msg_t*)call
Packet.getPayload(&packet, sizeof(test_serial_msg_t));
    call Resource.release();
    rcm->counter = data;
    if(call AMSend.send(AM_BROADCAST_ADDR, &packet,
sizeof(test_serial_msg_t)) == SUCCESS){
        call Leds.led1Toggle();

        return SUCCESS;

  }
  }
async event uint16_t *adc.multipleDataReady(uint16_t *buffer, uint16_t
numSamples){
            return buffer;
  }

event void Resource.granted() {

    error_t e;
    e = call adc.configureSingle(&adc_config);
    call adc.getData();

}

event void AMSend.sendDone(message_t* bufPtr, error_t error) {

    call Timer0.startOneShot(3072);


  }

}


*TestAdcAppC.nc*

#include "TestAdc.h"
configuration TestAdcAppC {
}
implementation
{
components MainC,
             TestAdcC,
             LedsC;

components ActiveMessageC as AM;
components new TimerMilliC() as Timer0;
components new Msp430Adc12ClientAutoRVGC() as Lectura;

//components new TimerMilliC() as Timer1;


TestAdcC.overflow -> Lectura;
TestAdcC.Resource -> Lectura;
TestAdcC.adc -> Lectura;
TestAdcC.adc_configure <- Lectura;

TestAdcC -> MainC.Boot;
TestAdcC.Leds -> LedsC;
TestAdcC.Timer0 -> Timer0;
TestAdcC.Control -> AM;
TestAdcC.AMSend -> AM.AMSend[AM_TEST_SERIAL_MSG];
TestAdcC.Packet -> AM;

//TestAdcC.Timer1 -> Timer1;

}


*TestAdc.h*


#ifndef TEST_SERIAL_H
#define TEST_SERIAL_H

typedef nx_struct test_serial_msg {
  nx_uint16_t counter;
} test_serial_msg_t;

enum {
  AM_TEST_SERIAL_MSG = 0x89,
};

#endif


*Makefile*

#ifndef TEST_SERIAL_H
#define TEST_SERIAL_H

typedef nx_struct test_serial_msg {
  nx_uint16_t counter;
} test_serial_msg_t;

enum {
  AM_TEST_SERIAL_MSG = 0x89,
};

#endif


Quizás quisiste decir: En vez de dos segundos, se pretende que
*envian*datos cada 3 segundos pero por desgracia
Escribe texto o la dirección de un sitio web, o bien, traduce un
documento<http://translate.google.es/?tr=f&hl=es>
.
Cancelar <http://translate.google.es/?tr=t&hl=es>
traducción del español al inglés
Instead of two seconds, my intention is to send data every 3 seconds but
unfortunately data are sent at high speed, the speed is much higher than
that for 3 seconds.

Could someone help me?


A greeting and thank you very much!

Escribe texto o la dirección de un sitio web, o bien, traduce un
documento<http://translate.google.es/?tr=f&hl=es>
.
Cancelar <http://translate.google.es/?tr=t&hl=es>
traducción del español al inglés





















El 3 de octubre de 2011 17:47, Juan Verdu <[email protected]> escribió:

> Hello everyone,
>
> Thank you very much Jan for your reply. Based on your response and ADC12
> readme.txt in the folder, I have made ​​a number of changes, as shown in the
> code below. I have obtained different values ​​OFFF and apparently are
> valid.
>
> What I do not get done properly is to show the internal voltage reading
> every 2 seconds. Messages via radio or do not arrive more than once or do a
> lot of times but not completed the period I need.
>
> If I run the following code is performed only once execution.
> If I remove the line call Resource.release (); in adc.singleDataReady
> (uint16_t data), it runs a lot of times like an infinite loop but does not
> respect me 2 seconds.
>
> The code is:
>
> *TestAdcC.nc*
>
> #include "Timer.h"
> #include "TestAdc.h"
>
> module TestAdcC
> {
>   uses  {
>   interface Boot;
>   interface Leds;
>
>   interface Timer<TMilli> as Timer0;
>   interface Msp430Adc12Overflow as overflow;
>   interface Msp430Adc12SingleChannel as adc;
>   interface Resource;
>   interface SplitControl as Control;
>   interface Packet;
>   interface AMSend;
>  }
>
> provides {
> interface AdcConfigure<const msp430adc12_channel_config_t*> as
> adc_configure;
>
> }
> }
>
> implementation
> {
> #define BUF_SIZE 100
> uint16_t buf[BUF_SIZE];
> message_t packet;
> uint16_t counter = 0;
>
> msp430adc12_channel_config_t adc_config = {
>
>     inch: SUPPLY_VOLTAGE_HALF_CHANNEL,
>     sref: REFERENCE_VREFplus_AVss,
>     ref2_5v: REFVOLT_LEVEL_1_5,
>     adc12ssel: SHT_SOURCE_SMCLK,
>     adc12div: SHT_CLOCK_DIV_1,
>     sht: SAMPLE_HOLD_64_CYCLES,
>
>     sampcon_ssel: SAMPCON_SOURCE_SMCLK,
>     sampcon_id: SAMPCON_CLOCK_DIV_1
>   };
>
> event void Boot.booted() {
>     call Leds.led0Off();
>     call Leds.led1Off();
>     call Leds.led2Off();
>     call Control.start();
>     call Resource.request();
>     call Resource.release();
>
> }
>
> event void Timer0.fired() {
>     call adc.getData();
>
>   }
>
> event void Control.startDone(error_t err) {
>     if (err == SUCCESS){
>     //continua
>
>         }
>     else
>     call Control.start();
>  }
>
> event void Control.stopDone(error_t err) { }
>
>
> async command const msp430adc12_channel_config_t*
> adc_configure.getConfiguration() {
> return &adc_config;
>
> }
>
> async event void overflow.conversionTimeOverflow() {
> }
>
> async event void overflow.memOverflow() {
> }
>
> async event error_t adc.singleDataReady(uint16_t data){
>
>
>     test_serial_msg_t* rcm = (test_serial_msg_t*)call
> Packet.getPayload(&packet, sizeof(test_serial_msg_t));
>     // Call to a led
>     rcm->counter = data;
>     if(call AMSend.send(AM_BROADCAST_ADDR, &packet,
> sizeof(test_serial_msg_t)) == SUCCESS){
>         call Leds.led1Toggle();
>                 call Resource.release();
>         return SUCCESS;
>
>
>   }
>   }
> async event uint16_t *adc.multipleDataReady(uint16_t *buffer, uint16_t
> numSamples){
>             return buffer;
>   }
>
> event void Resource.granted() {
>
>     error_t e;
>     e = call adc.configureSingle(&adc_config);
>     call Timer0.startPeriodic(2048);
>
> }
>
> event void AMSend.sendDone(message_t* bufPtr, error_t error) {
>   }
>
> }
>
>
> *TestAdcAppC.nc*
>
> #include "TestAdc.h"
> configuration TestAdcAppC {
> }
> implementation
> {
> components MainC,
>              TestAdcC,
>              LedsC;
>
> components ActiveMessageC as AM;
> components new TimerMilliC() as Timer0;
> components new Msp430Adc12ClientAutoRVGC() as Lectura;
>
> TestAdcC.overflow -> Lectura;
> TestAdcC.Resource -> Lectura;
> TestAdcC.adc -> Lectura;
> TestAdcC.adc_configure <- Lectura;
>
>
> TestAdcC -> MainC.Boot;
> TestAdcC.Leds -> LedsC;
> TestAdcC.Timer0 -> Timer0;
> TestAdcC.Control -> AM;
> TestAdcC.AMSend -> AM.AMSend[AM_TEST_SERIAL_MSG];
> TestAdcC.Packet -> AM;
>
> }
>
> *Makefile*
>
> COMPONENT=TestAdcAppC
> CFLAGS += -DADC12_TIMERA_ENABLED
> #CFLAGS += -DADC12_ONLY_WITH_DMA
>
> include $(MAKERULES)
>
> CFLAGS += -DCC2420_DEF_CHANNEL=20
>
> *TestAdc.h*
>
>
> #ifndef TEST_SERIAL_H
> #define TEST_SERIAL_H
>
> typedef nx_struct test_serial_msg {
>   nx_uint16_t counter;
> } test_serial_msg_t;
>
> enum {
>   AM_TEST_SERIAL_MSG = 0x89,
> };
>
> #endif
>
> Could someone help me?
>
>
> A greeting and thank you very much!
>
>
>
> El 30 de septiembre de 2011 10:46, Jan Hauer <[email protected]>escribió:
>
> Hi Juan,
>>
>> take a look at tos/chips/msp430/sensors/Msp430InternalVoltage* which
>> measures supply voltage and compare it with our configuration.
>>
>> Jan
>>
>> On Thu, Sep 29, 2011 at 7:51 PM, Juan Verdu <[email protected]> wrote:
>> > Hello everyone,
>> >
>> > I am working with the MSP430F2617 microcontroller and CC2420 radio. I'm
>> > using Zolertia driver.
>> >
>> > I have written an application that sends temperature readings every 2
>> > seconds microcontroller to a base station (BaseStation Application). The
>> > readings are consistent and depending if you use the power of two
>> batteries
>> > or USB power values are different but them are apparently valid.
>> >
>> > The configuration selected in the case of temperature is:
>> >
>> >  msp430adc12_channel_config_t adcconfig = {
>> >     inch: TEMPERATURE_DIODE_CHANNEL,
>> >     SREF: REFERENCE_AVcc_AVss,
>> >     ref2_5v: REFVOLT_LEVEL_1_5,
>> >     adc12ssel: SHT_SOURCE_ACLK,
>> >     adc12div: SHT_CLOCK_DIV_1,
>> >     sht: SAMPLE_HOLD_4_CYCLES,
>> >     sampcon_ssel: SAMPCON_SOURCE_SMCLK,
>> >     sampcon_id: SAMPCON_CLOCK_DIV_1
>> >   };
>> >
>> > Now, I want to read the internal voltage of the microcontroller, but
>> always
>> > gives OFFF reading if I use both batteries (2.6 V) or with USB power
>> (3.3V)
>> > and I do not know the error Could someone help me?
>> >
>> > The code used in the case of voltage is:
>> >
>> >
>> > TestAdcC.nc
>> >
>> > #include "Timer.h"
>> > #include "TestAdc.h"
>> >
>> > module TestAdcC
>> > {
>> >   uses interface Boot;
>> >   uses interface Leds;
>> >
>> >   uses interface Timer<TMilli> as Timer0;
>> >
>> >   uses interface Msp430Adc12Overflow as overflow;
>> >   uses interface Msp430Adc12SingleChannel as adc;
>> >   uses interface Resource;
>> >
>> >   uses interface SplitControl as Control;
>> >   uses interface Packet;
>> >   uses interface AMSend;
>> > }
>> >
>> > implementation
>> > {
>> > #define BUF_SIZE 100
>> > uint16_t buf[BUF_SIZE];
>> > message_t packet;
>> > uint16_t counter = 0;
>> > uint16_t Data;
>> >
>> > void configureSingle();
>> >
>> > msp430adc12_channel_config_t adcconfig = {
>> >     inch: SUPPLY_VOLTAGE_HALF_CHANNEL,
>> >     sref: REFERENCE_VREFplus_AVss,
>> >     ref2_5v: REFVOLT_LEVEL_1_5,
>> >     adc12ssel: SHT_SOURCE_ACLK,
>> >     adc12div: SHT_CLOCK_DIV_1,
>> >     sht: SAMPLE_HOLD_4_CYCLES,
>> >     sampcon_ssel: SAMPCON_SOURCE_SMCLK,
>> >     sampcon_id: SAMPCON_CLOCK_DIV_1
>> >   };
>> >
>> > event void Boot.booted()
>> >   {
>> > call Leds.led0Off();
>> > call Leds.led1Off();
>> > call Leds.led2Off();
>> > call Control.start();
>> > call Resource.request();
>> >  }
>> >
>> > async event void overflow.conversionTimeOverflow(){
>> > }
>> >
>> > async event void overflow.memOverflow(){
>> > }
>> >
>> > async event uint16_t *adc.multipleDataReady(uint16_t *buffer, uint16_t
>> > numSamples){
>> >             return buffer;
>> > }
>> >
>> > task void send(){
>> >     test_serial_msg_t* rcm = (test_serial_msg_t*)call
>> > Packet.getPayload(&packet, sizeof(test_serial_msg_t));
>> >     call Leds.led0Toggle();
>> >     rcm->counter = Data;
>> >     if(  call AMSend.send(AM_BROADCAST_ADDR, &packet,
>> > sizeof(test_serial_msg_t)) == SUCCESS){
>> >         call Leds.led1Toggle();
>> >      }
>> > }
>> >
>> > async event error_t adc.singleDataReady(uint16_t data){
>> >     Data = data;
>> >     post send();
>> >         return SUCCESS;
>> >   }
>> >
>> > event void Resource.granted(){
>> >     configureSingle();
>> >         call Timer0.startPeriodic(2048);
>> >   }
>> >
>> > void configureSingle(){
>> >     error_t e;
>> >     e = call adc.configureSingle(&adcconfig);
>> >      }
>> >
>> > event void Timer0.fired()
>> >   {
>> >     call adc.getData();
>> >   }
>> >
>> > event void AMSend.sendDone(message_t* bufPtr, error_t error) {
>> >     call Leds.led2Toggle();
>> > }
>> >
>> > event void Control.startDone(error_t err) {
>> >   if (err == SUCCESS){
>> >         } else {
>> >     call Control.start();
>> >       }
>> > }
>> >
>> > event void Control.stopDone(error_t err) {
>> >     }
>> >
>> > }
>> >
>> >
>> > TestAdcAppC.nc
>> >
>> > #include "TestAdc.h"
>> > configuration TestAdcAppC {
>> > }
>> > implementation
>> > {
>> >   components MainC,
>> >              TestAdcC,
>> >              LedsC;
>> >  components ActiveMessageC as AM;
>> >  components new TimerMilliC() as Timer0;
>> >  components new Msp430Adc12ClientAutoDMAC() as Lectura;
>> >
>> >  TestAdcC.overflow -> Lectura;
>> >   TestAdcC.adc -> Lectura;
>> >   TestAdcC.Resource -> Lectura;
>> >
>> >   TestAdcC -> MainC.Boot;
>> >   TestAdcC.Leds -> LedsC;
>> >   TestAdcC.Timer0 -> Timer0;
>> >   TestAdcC.Control -> AM;
>> >   TestAdcC.AMSend -> AM.AMSend[AM_TEST_SERIAL_MSG];
>> >   TestAdcC.Packet -> AM;
>> >
>> > }
>> >
>> >
>> > TestAdc.h
>> >
>> > #ifndef TEST_SERIAL_H
>> > #define TEST_SERIAL_H
>> >
>> > typedef nx_struct test_serial_msg {
>> >   nx_uint16_t counter;
>> > } test_serial_msg_t;
>> >
>> > enum {
>> >   AM_TEST_SERIAL_MSG = 0x89,
>> > };
>> >
>> > #endif
>> >
>> >
>> > Makefile
>> >
>> > #ifndef TEST_SERIAL_H
>> > #define TEST_SERIAL_H
>> >
>> > typedef nx_struct test_serial_msg {
>> >   nx_uint16_t counter;
>> > } test_serial_msg_t;
>> >
>> > enum {
>> >   AM_TEST_SERIAL_MSG = 0x89,
>> > };
>> >
>> > #endif
>> >
>> > A greeting and thank you very much!.
>> >
>> > _______________________________________________
>> > Tinyos-help mailing list
>> > [email protected]
>> >
>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>> >
>>
>
>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to