[Tinyos-contrib-commits]
CVS: tinyos-1.x/contrib/handhelds/swtest/TestDMA_SD
TestDMA_SD_M.nc, 1.1, 1.2
steve ayer
ayer1 at users.sourceforge.net
Wed Oct 25 06:52:14 PDT 2006
Update of /cvsroot/tinyos/tinyos-1.x/contrib/handhelds/swtest/TestDMA_SD
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv23897
Modified Files:
TestDMA_SD_M.nc
Log Message:
repaired mismatched ADCInterrupt prototype; it now returns the
register number where the interrupt appeared.
Index: TestDMA_SD_M.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/handhelds/swtest/TestDMA_SD/TestDMA_SD_M.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TestDMA_SD_M.nc 3 Aug 2006 19:16:49 -0000 1.1
--- TestDMA_SD_M.nc 25 Oct 2006 13:52:12 -0000 1.2
***************
*** 37,40 ****
--- 37,41 ----
includes NVTParse;
includes SD;
+ includes MMA7260_Accel;
includes msp430baudrates;
***************
*** 55,61 ****
--- 56,65 ----
interface StdControl as SDStdControl;
+ interface StdControl as AccelStdControl;
interface SD;
+ interface MMA7260_Accel as Accel;
+
interface Telnet as TelnetRun;
***************
*** 65,72 ****
/* end telnet stuff */
interface Leds;
interface Timer as yTimer;
- interface Timer as gTimer;
- interface Timer as rTimer;
}
}
--- 69,78 ----
/* end telnet stuff */
interface Leds;
+ // interface NTPClient;
+ interface Time;
+
+ interface LocalTime;
interface Timer as yTimer;
}
}
***************
*** 84,94 ****
void * server_token;
! uint8_t dma_transfers, write_step, myreason;
uint16_t inbuf0[256], inbuf1[256], inbuf2[256], *curr0, *curr1, *curr2, shipping_sector;
! norace uint32_t current_sector = 142000;
uint16_t cardbuf[256];
! uint16_t sbuf[256];
uint8_t msgbuf[128];
uint16_t adcifg_count = 0;
--- 90,103 ----
void * server_token;
! uint8_t dma_transfers, write_step, myreason = 0;
uint16_t inbuf0[256], inbuf1[256], inbuf2[256], *curr0, *curr1, *curr2, shipping_sector;
! norace uint32_t current_sector = 52999;
! uint32_t howbig;
uint16_t cardbuf[256];
! uint32_t sbuf[256];
uint8_t msgbuf[128];
+ time_t g_local_time;
+
uint16_t adcifg_count = 0;
***************
*** 116,142 ****
atomic{
! ADC12CTL1 &= ~ADC12SSEL_3; // clr clk from smclk
! ADC12CTL1 |= ADC12SSEL_1; // clk from aclk
!
! ADC12CTL1 |= ADC12DIV_7; // divide clk by 8
// sample and hold time four adc12clk cycles
! ADC12CTL0 |= SHT0_0;
// conversion start address
! ADC12CTL1 |= CSTARTADD_0; // really a zero, for clarity
}
// set input channel
! call DMA0.ADCsetMemRegisterInputChannel(0, 3); // memreg 0 <= channel 0
call DMA0.ADCsetMemRegisterInputChannel(1, 4); // memreg 1 <= channel 1
call DMA0.ADCsetMemRegisterInputChannel(2, 5); // memreg 2 <= channel 2
/* set up for three adc channels -> three adcmem regs -> three dma channels in round-robin */
/* clear init defaults first */
! ADC12CTL1 &= ~CONSEQ_2; // clear default repeat single channel
! // ADC12MCTL0 &= ~INCH_1; // input channel for mem0 is a0
! ADC12CTL1 |= CONSEQ_3; // repeat sequence of channels
! /* test to try channel-mapping, though it's supposed to be auto in repeat-sequence...*/
! ADC12MCTL2 |= EOS; //sez "this is the last reg"
setupDMA();
--- 125,158 ----
atomic{
! CLR_FLAG(ADC12CTL1, ADC12SSEL_3); // clr clk from smclk
! SET_FLAG(ADC12CTL1, ADC12SSEL_3); // clk from aclk
!
! SET_FLAG(ADC12CTL1, ADC12DIV_4); // divide clk by 8
// sample and hold time four adc12clk cycles
! SET_FLAG(ADC12CTL0, SHT0_0);
!
! // set reference voltage to 2.5v
! SET_FLAG(ADC12CTL0, REF2_5V);
// conversion start address
! SET_FLAG(ADC12CTL1, CSTARTADD_0); // really a zero, for clarity
}
// set input channel
! /* call DMA0.ADCsetMemRegisterInputChannel(0, 3); // memreg 0 <= channel 0
call DMA0.ADCsetMemRegisterInputChannel(1, 4); // memreg 1 <= channel 1
call DMA0.ADCsetMemRegisterInputChannel(2, 5); // memreg 2 <= channel 2
+ */
+ SET_FLAG(ADC12MCTL0, INCH_3);
+ SET_FLAG(ADC12MCTL1, INCH_4);
+ SET_FLAG(ADC12MCTL2, INCH_5);
+ SET_FLAG(ADC12MCTL2, EOS); //sez "this is the last reg"
/* set up for three adc channels -> three adcmem regs -> three dma channels in round-robin */
/* clear init defaults first */
! CLR_FLAG(ADC12CTL1, CONSEQ_2); // clear default repeat single channel
!
! SET_FLAG(ADC12CTL1, CONSEQ_3); // repeat sequence of channels
! SET_FLAG(ADC12MCTL2, EOS); // sez "this is the last reg"
setupDMA();
***************
*** 146,151 ****
call DMA2.beginTransfer();
- TOSH_SET_ACCEL_SLEEP_N_PIN(); // wakes up accel board
-
call DMA0.ADCbeginConversion();
--- 162,165 ----
***************
*** 170,186 ****
task void dma2Results() {
uint8_t rval;
dma_transfers++;
call Leds.orangeToggle();
if(dma_transfers == 255){
dma_transfers = 0;
- // reset transfer destinations
- atomic {
- call DMA0.setDestinationAddress(inbuf0);
- call DMA1.setDestinationAddress(inbuf1);
- call DMA2.setDestinationAddress(inbuf2);
- }
- call DMA0.ADCstopConversion();
call Leds.yellowOn();
--- 184,204 ----
task void dma2Results() {
uint8_t rval;
+
dma_transfers++;
call Leds.orangeToggle();
+
if(dma_transfers == 255){
+ /*
+ call DMA0.stopTransfer();
+ call DMA1.stopTransfer();
+ call DMA2.stopTransfer();
+ */
+ call DMA0.ADCstopConversion();
dma_transfers = 0;
+ call DMA0.setDestinationAddress(inbuf0);
+ call DMA1.setDestinationAddress(inbuf1);
+ call DMA2.setDestinationAddress(inbuf2);
call Leds.yellowOn();
***************
*** 191,197 ****
if((rval = call SD.writeSector(current_sector++, (uint8_t *)inbuf2)))
sprintf(msgbuf, "bad write, error=%d", rval);
!
call Leds.yellowOff();
call DMA0.ADCbeginConversion();
}
}
--- 209,221 ----
if((rval = call SD.writeSector(current_sector++, (uint8_t *)inbuf2)))
sprintf(msgbuf, "bad write, error=%d", rval);
!
call Leds.yellowOff();
+
call DMA0.ADCbeginConversion();
+ /*
+ call DMA0.beginTransfer();
+ call DMA1.beginTransfer();
+ call DMA2.beginTransfer();
+ */
}
}
***************
*** 203,218 ****
call SDStdControl.init();
!
! TOSH_MAKE_ACCEL_SLEEP_N_OUTPUT(); // sleep for accel
! TOSH_SEL_ACCEL_SLEEP_N_IOFUNC();
!
! TOSH_MAKE_ADC_ACCELZ_INPUT(); // clock
! TOSH_SEL_ADC_ACCELZ_MODFUNC();
!
! TOSH_MAKE_ADC_ACCELY_INPUT(); // clock
! TOSH_SEL_ADC_ACCELY_MODFUNC();
!
! TOSH_MAKE_ADC_ACCELX_INPUT(); // clock
! TOSH_SEL_ADC_ACCELX_MODFUNC();
dma_transfers = 0;
--- 227,232 ----
call SDStdControl.init();
!
! call AccelStdControl.init();
dma_transfers = 0;
***************
*** 235,240 ****
call SDStdControl.start();
! call TCPServer.listen(MY_SERVER_PORT); // we'll listen for a client to pull a sector of data
sampleADC();
--- 249,258 ----
call SDStdControl.start();
! call AccelStdControl.start();
+ call Accel.setSensitivity(RANGE_2_0G);
+
+ call TCPServer.listen(MY_SERVER_PORT); // we'll listen for a client to pull a sector of data
+
sampleADC();
***************
*** 295,298 ****
--- 313,342 ----
}
+ char * do_dma(char * in, char * out, char * outmax) {
+ uint16_t w;
+
+ call Leds.redOn();
+ atomic{
+ SET_FLAG(ADC12IE, 0xff);
+ CLR_FLAG(ADC12IFG, 0xff);
+ CLR_FLAG(ADC12IE, 0xff);
+
+ call DMA0.beginTransfer();
+ call DMA1.beginTransfer();
+ call DMA2.beginTransfer();
+ }
+ w = ADC12MEM0;
+ w = ADC12MEM1;
+ w = ADC12MEM2;
+
+ return out;
+ }
+
+ char * do_size(char * in, char * out, char * outmax) {
+ howbig = call SD.readCardSize();
+
+ return out;
+ }
+
task void ship_contents() {
uint8_t rval;
***************
*** 304,307 ****
--- 348,355 ----
}
+ event void Time.tick() {
+ //call Leds.redToggle();
+ }
+
event void TCPServer.connectionMade( void *token ) {
server_token = token;
***************
*** 363,370 ****
}
-
event void TCPServer.dataAvailable( void *token, uint8_t *buf, uint16_t len ) {
! shipping_sector = *(uint16_t *)buf;
!
post ship_contents();
--- 411,419 ----
}
event void TCPServer.dataAvailable( void *token, uint8_t *buf, uint16_t len ) {
! uint8_t b[50];
! shipping_sector = *(uint32_t *)buf;
! sprintf(b, "looking at sector %d", shipping_sector);
! strcat(msgbuf, b);
post ship_contents();
***************
*** 379,394 ****
}
- event result_t gTimer.fired() {
- call Leds.greenToggle();
-
- return SUCCESS;
- }
-
- event result_t rTimer.fired() {
- call Leds.redToggle();
-
- return SUCCESS;
- }
-
async event void DMA0.transferComplete() {
post dma0Results();
--- 428,431 ----
***************
*** 403,407 ****
}
! async event void DMA0.ADCInterrupt() {
call Leds.orangeOn();
atomic {
--- 440,444 ----
}
! async event void DMA0.ADCInterrupt(uint8_t regnum) {
call Leds.orangeOn();
atomic {
***************
*** 413,418 ****
}
}
! async event void DMA1.ADCInterrupt() {}
! async event void DMA2.ADCInterrupt() {}
event void Client.connected( bool isConnected ) {
--- 450,455 ----
}
}
! async event void DMA1.ADCInterrupt(uint8_t regnum) {}
! async event void DMA2.ADCInterrupt(uint8_t regnum) {}
event void Client.connected( bool isConnected ) {
***************
*** 426,430 ****
{ "adcmem1", PARAM_TYPE_HEX16, (uint16_t *)&ADC12MEM1},
{ "adcmem2", PARAM_TYPE_HEX16, (uint16_t *)&ADC12MEM2},
! { "adcmemctl", PARAM_TYPE_HEX8, (uint8_t *)&ADC12MCTL0},
{ "adciv", PARAM_TYPE_HEX16, (uint16_t *)&ADC12IV},
{ "adcifg", PARAM_TYPE_HEX16, (uint16_t *)&ADC12IFG},
--- 463,469 ----
{ "adcmem1", PARAM_TYPE_HEX16, (uint16_t *)&ADC12MEM1},
{ "adcmem2", PARAM_TYPE_HEX16, (uint16_t *)&ADC12MEM2},
! { "adcmemctl0", PARAM_TYPE_HEX8, (uint8_t *)&ADC12MCTL0},
! { "adcmemctl1", PARAM_TYPE_HEX8, (uint8_t *)&ADC12MCTL1},
! { "adcmemctl2", PARAM_TYPE_HEX8, (uint8_t *)&ADC12MCTL2},
{ "adciv", PARAM_TYPE_HEX16, (uint16_t *)&ADC12IV},
{ "adcifg", PARAM_TYPE_HEX16, (uint16_t *)&ADC12IFG},
***************
*** 455,475 ****
{ "dma transfers", PARAM_TYPE_UINT8, &dma_transfers },
{ "error_reason", PARAM_TYPE_UINT8, &myreason },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[0] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[1] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[2] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[3] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[4] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[5] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[6] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[7] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[8] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[9] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[10] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[11] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[12] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[13] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[14] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[15] },
! { "", PARAM_TYPE_HEX16, (uint16_t *)&sbuf[16] },
{ NULL, 0, NULL }
};
--- 494,515 ----
{ "dma transfers", PARAM_TYPE_UINT8, &dma_transfers },
{ "error_reason", PARAM_TYPE_UINT8, &myreason },
! { "card size", PARAM_TYPE_UINT32, &howbig },
! { "0", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[0] },
! { "1", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[1] },
! { "2", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[2] },
! { "3", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[3] },
! { "4", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[4] },
! { "5", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[5] },
! { "6", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[6] },
! { "7", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[7] },
! { "8", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[8] },
! { "9", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[9] },
! { "10", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[10] },
! { "11", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[11] },
! { "12", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[12] },
! { "13", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[13] },
! { "14", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[14] },
! { "15", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[15] },
! { "16", PARAM_TYPE_UINT32, (uint32_t *)&sbuf[16] },
{ NULL, 0, NULL }
};
***************
*** 501,504 ****
--- 541,546 ----
{ "write", &do_write },
{ "read", &do_read },
+ { "size", &do_size },
+ { "startdma", &do_dma },
{ "sdinit", &do_init },
{ 0, NULL }
More information about the Tinyos-contrib-commits
mailing list