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