[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