Hello everyone,
I am working with a MSP430F2617 microcontroller and a radio CC2420 underthe
Zolertia driver.
I am making an application to read the internal temperature of the
microcontroller, and later I will send the information to a base station under
the Basestation application.
My application performs Send () correctly but this application fails
AM.sendDone (), if I change the component SerialActiveMessageC by
ActiveMessageC, the same problem will happen. In this case, I do not use a
radio. I use the serial port and I wouldn´t use the BaseStation application.
The code is as follows:
*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
*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 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 Resource.release();
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) {
}
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;
}
Could someone help me?
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
A greeting and thank you very much
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help