Ejemplo n.º 1
0
void oledRefresh()
{
	static uint8_t s[3] = {OLED_SETLOWCOLUMN | 0x00, OLED_SETHIGHCOLUMN | 0x00, OLED_SETSTARTLINE | 0x00};

	// draw triangle in upper right corner
	if (is_debug_mode) {
		OLED_BUFTGL(OLED_WIDTH - 5, 0); OLED_BUFTGL(OLED_WIDTH - 4, 0); OLED_BUFTGL(OLED_WIDTH - 3, 0); OLED_BUFTGL(OLED_WIDTH - 2, 0); OLED_BUFTGL(OLED_WIDTH - 1, 0);
		OLED_BUFTGL(OLED_WIDTH - 4, 1); OLED_BUFTGL(OLED_WIDTH - 3, 1); OLED_BUFTGL(OLED_WIDTH - 2, 1); OLED_BUFTGL(OLED_WIDTH - 1, 1); 
		OLED_BUFTGL(OLED_WIDTH - 3, 2); OLED_BUFTGL(OLED_WIDTH - 2, 2); OLED_BUFTGL(OLED_WIDTH - 1, 2);
		OLED_BUFTGL(OLED_WIDTH - 2, 3); OLED_BUFTGL(OLED_WIDTH - 1, 3);
		OLED_BUFTGL(OLED_WIDTH - 1, 4);
	}

	gpio_clear(OLED_CS_PORT, OLED_CS_PIN);		// SPI select
	SPISend(SPI_BASE, s, 3);
	gpio_set(OLED_CS_PORT, OLED_CS_PIN);		// SPI deselect

	gpio_set(OLED_DC_PORT, OLED_DC_PIN);		// set to DATA
	gpio_clear(OLED_CS_PORT, OLED_CS_PIN);		// SPI select
	SPISend(SPI_BASE, _oledbuffer, sizeof(_oledbuffer));
	gpio_set(OLED_CS_PORT, OLED_CS_PIN);		// SPI deselect
	gpio_clear(OLED_DC_PORT, OLED_DC_PIN);		// set to CMD

	// return it back
	if (is_debug_mode) {
		OLED_BUFTGL(OLED_WIDTH - 5, 0); OLED_BUFTGL(OLED_WIDTH - 4, 0); OLED_BUFTGL(OLED_WIDTH - 3, 0); OLED_BUFTGL(OLED_WIDTH - 2, 0); OLED_BUFTGL(OLED_WIDTH - 1, 0);
		OLED_BUFTGL(OLED_WIDTH - 4, 1); OLED_BUFTGL(OLED_WIDTH - 3, 1); OLED_BUFTGL(OLED_WIDTH - 2, 1); OLED_BUFTGL(OLED_WIDTH - 1, 1); 
		OLED_BUFTGL(OLED_WIDTH - 3, 2); OLED_BUFTGL(OLED_WIDTH - 2, 2); OLED_BUFTGL(OLED_WIDTH - 1, 2);
		OLED_BUFTGL(OLED_WIDTH - 2, 3); OLED_BUFTGL(OLED_WIDTH - 1, 3);
		OLED_BUFTGL(OLED_WIDTH - 1, 4);
	}
}
Ejemplo n.º 2
0
/* ****************************************************************************
 calculates size of card from CSD
 (extension by Martin Thomas, inspired by code from Holger Klabunde)
 CSD version 2.0 code by Magnus Karlsson
 */
int BlockDevGetSize(U32 *pdwDriveSize)
{
    U8 cardresp, i, by;
    U8 iob[16];
    U32 c_size, blocks; 
    U16 c_size_mult, read_bl_len;

    Command(CMD_READCSD, 0);
    do
    {
        cardresp = Resp8b();
    }
    while (cardresp != 0xFE);

    rprintf("CSD:");
    for (i = 0; i < 16; i++)
    {
        iob[i] = SPISend(0xFF);
        rprintf(" %02x", iob[i]);
    }
    rprintf("\n");

    SPISend(0xff);
    SPISend(0xff);

    if ((iob[0] & 0x80) == 0x80)
    {
        return -1; // Illegal CSD version data
    }
    else if ((iob[0] & 0x40) == 0) // CSD version 1.0
    {
        c_size = iob[6] & 0x03;     // bits 1..0
        c_size <<= 10;
        c_size += (U16) iob[7] << 2;
        c_size += iob[8] >> 6;

        by = iob[5] & 0x0F;
        read_bl_len = 1 << by;

        by = iob[9] & 0x03;
        by <<= 1;
        by += iob[10] >> 7;

        c_size_mult = 1 << (2 + by);
        blocks = ((c_size + 1) * (U32) c_size_mult *(U32) read_bl_len) / 512;
    }
Ejemplo n.º 3
0
void cuto(int chn)
{
	//SPI output = 0
	MST_Data = 0;
    MST_Data |= 0x8000;
	SPISend(MST_Data);
	//cut IO
	P3OUT &= ~BIT6;
	P3OUT &= ~BIT5;

	P1OUT |= BIT5+BIT4;
	P1OUT &= ~BIT3;
	P1OUT &= ~BIT2;

	//connecti IO
	switch(chn)
	{
		case 1:
		{
			P3OUT &= ~BIT6;
			P3OUT |= BIT5;
			P1OUT &= ~BIT3;
			P1OUT |= BIT2;
			P1OUT &= ~BIT5;
			P1OUT &= ~BIT4;
		}
		break;

		case 2:
		{
			P3OUT |= BIT6;
			P3OUT &= ~BIT5;
			P1OUT |= BIT3;
			P1OUT &= ~BIT2;
			P1OUT &= ~BIT5;
			P1OUT &= ~BIT4;
		}
		break;

		case 3:
		{
			P3OUT |= BIT6;
			P3OUT |= BIT5;
			P1OUT |= BIT3;
			P1OUT |= BIT2;
			P1OUT &= ~BIT5;
			P1OUT &= ~BIT4;
		}
		break;

		default:
		break;
	}
	//OLED


}
Ejemplo n.º 4
0
void oledRefresh() {
  static const uint8_t s[3] = {OLED_SETLOWCOLUMN | 0x00,
                               OLED_SETHIGHCOLUMN | 0x00,
                               OLED_SETSTARTLINE | 0x00};

  // draw triangle in upper right corner
  oledInvertDebugLink();

  gpio_clear(OLED_CS_PORT, OLED_CS_PIN);  // SPI select
  SPISend(SPI_BASE, s, 3);
  gpio_set(OLED_CS_PORT, OLED_CS_PIN);  // SPI deselect

  gpio_set(OLED_DC_PORT, OLED_DC_PIN);    // set to DATA
  gpio_clear(OLED_CS_PORT, OLED_CS_PIN);  // SPI select
  SPISend(SPI_BASE, _oledbuffer, sizeof(_oledbuffer));
  gpio_set(OLED_CS_PORT, OLED_CS_PIN);    // SPI deselect
  gpio_clear(OLED_DC_PORT, OLED_DC_PIN);  // set to CMD

  // return it back
  oledInvertDebugLink();
}
Ejemplo n.º 5
0
void oledInit()
{
	static uint8_t s[25] = {
		OLED_DISPLAYOFF,
		OLED_SETDISPLAYCLOCKDIV,
		0x80,
		OLED_SETMULTIPLEX,
		0x3F, // 128x64
		OLED_SETDISPLAYOFFSET,
		0x00,
		OLED_SETSTARTLINE | 0x00,
		OLED_CHARGEPUMP,
		0x14,
		OLED_MEMORYMODE,
		0x00,
		OLED_SEGREMAP | 0x01,
		OLED_COMSCANDEC,
		OLED_SETCOMPINS,
		0x12, // 128x64
		OLED_SETCONTRAST,
		0xCF,
		OLED_SETPRECHARGE,
		0xF1,
		OLED_SETVCOMDETECT,
		0x40,
		OLED_DISPLAYALLON_RESUME,
		OLED_NORMALDISPLAY,
		OLED_DISPLAYON
	};

	gpio_clear(OLED_DC_PORT, OLED_DC_PIN);		// set to CMD
	gpio_set(OLED_CS_PORT, OLED_CS_PIN);		// SPI deselect

	// Reset the LCD
	gpio_set(OLED_RST_PORT, OLED_RST_PIN);
	delay(40);
	gpio_clear(OLED_RST_PORT, OLED_RST_PIN);
	delay(400);
	gpio_set(OLED_RST_PORT, OLED_RST_PIN);

	// init
	gpio_clear(OLED_CS_PORT, OLED_CS_PIN);		// SPI select
	SPISend(SPI_BASE, s, 25);
	gpio_set(OLED_CS_PORT, OLED_CS_PIN);		// SPI deselect

	oledClear();
	oledRefresh();
}
Ejemplo n.º 6
0
static U8 Resp8b(void)
{
    U8 i;
    U8 resp;

    /* Respone will come after 1 - 8 pings */
    for (i = 0; i < 8; i++)
    {
        resp = SPISend(0xff);
        if (resp != 0xff)
        {
            return resp;
        }
    }

    return resp;
}
Ejemplo n.º 7
0
int main(void)
{
//    double Datav=123.4;

    str = a;
    int i;

//    char *str_1 = "abc" ;


  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT


  //Timer0
  TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA0CCR0 = 5000;
  TA0CTL = TASSEL_2 + MC_1 + TACLR;         // SMCLK, upmode, clear TAR

  //GPIO
  P4DIR |= BIT7;                            // Set P4.7 to output direction
  P1DIR |= BIT0;                            // Set P1.0 to output direction
  P1DIR |= 0x3C;
  P3DIR |= BIT5+BIT6;
  P1OUT |= BIT5+BIT4;

  //buttom
  P2REN |= BIT1;
  P2OUT |= BIT1;
  P2IES |= BIT1;
  P2IFG &= ~BIT1;
  P2IE |= BIT1;

  P1REN |= BIT1;
  P1OUT |= BIT1;
  P1IES |= BIT1;
  P1IFG &= ~BIT1;
  P1IE |= BIT1;

  //IIC
  OLED_Init();
  OLED_ShowStr(0,2,"Please Set:",99,2);
//  Delay_ms(100);
//  OLED_Clear(0x00);
//end of IIC

  DMAInit();
  ADCInit();   //启动需要在增加 enable

  //UART
  UART_Init(UARTA0); //bluetooth
  UART_Init(UARTB0); //SPI

  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt
  //  UCB0IE |= UCRXIE;                         // Enable USCI_B0 RX interrupt

  //SPI
    P2OUT |= BIT5;                            // reset slave
    P2OUT &= ~BIT5;                           // Now with SPI signals initialized,
    for(i=50;i>0;i--);                        // Wait for slave to initialize

    MST_Data = 0x8FFF;                          // Initialize data values
    SLV_Data = 0x00;                          //
    while (!(UCB0IFG&UCTXIFG));               // USCI_B0 TX buffer ready?
  //end of SPI


  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM0, enable interrupts
  while(1)
  {
//    OLED_ShowStr(12,2,(unsigned char *)F2S(Datav,tstr),6,1); //6*8
//    UartTX_Send("Done!\r\n",7);

      if(buttom_fct_flag != 0)
      {
    	  buttom_fct_stc_opt();
    	  buttom_fct_flag = 0;
      }

      if(buttom_fct_flags != 0)
      {
    	  buttom_fct_stcs_opt();
    	  buttom_fct_flags = 0;
      }


//    OLED_ShowStr(0,0,(unsigned char *)F2S(DMA_A1,tstr),8,1); //6*8
      if(fct_stc_flag != 0)
      {
          fct_stc_flag = 0;
          fct_stc_opt();
      }

      if(function!=0) // not off
      {
          ADC12CTL0 |= ADC12SC;   // Start sampling/conversion
      }

      switch(function)
      {
          case 0:
          {
//            OLED_OFF();
              __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled;
          }
          break;

          case 1:
          {
              if(mode == 0)
              {
                    if(set_ack_flag == 1)
                    {
//                      OLED_ON();
//                      OLED_Clear(0x00);
                        set_ack_flag = 0;
                        MST_Data = (u16)(Datavin);
                        MST_Data |= 0x8000;
                        SPISend(MST_Data);
                        OLED_ShowStr(0,1,"I:",2,1); //6*8
                        OLED_ShowStr(16,1,(unsigned char *)F2S(Datai,tstr),8,1); //6*8
                        OLED_ShowStr(0,2,"stalls:",7,1); //6*8
                        OLED_ShowStr(42,2,(unsigned char *)I2S(stalls,tstr),6,1); //6*8
                    }
              }
              else   // current_pot
              {
                  Datavin = (double)DMA_A1*4/3.3;
                  MST_Data = (u16)(Datavin*4095/4);
                  MST_Data |= 0x8000;
                  SPISend(MST_Data);
                  I_out = (double)DMA_A2*3.3/4095*10;
                  OLED_ShowStr(0,2,"stalls:",7,1); //6*8
				  OLED_ShowStr(42,2,(unsigned char *)I2S(stalls,tstr),6,1); //6*8
//                OLED_ShowStr(0,2,"I_out:",6,1); //6*8
//                OLED_ShowStr(36,2,(unsigned char *)F2S(I_out,tstr),6,1); //6*8
                  if(!((Pre_A3 - ADC12MEM3)<40 | (ADC12MEM3 - Pre_A3)<40))
                  {
                      OLED_ShowStr(24,6,(unsigned char *)F2S(ADC12MEM3,tstr),4,1); //6*8
                  }
                  Pre_A3 = ADC12MEM3;

              }

          }
          break;

          case 2:
          {
            if(set_ack_flag == 1)
            {
                OLED_ON();
                set_ack_flag = 0;
            }
          }
          break;

          case 3:   //off
          {
//            OLED_OFF();
              //shutdown the circuit
              __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled;
          }
          break;

      }//end of function switch;
      OLED_ShowStr(0,4,(unsigned char *)F2S(DMA_A0,tstr),4,1); //6*8
      OLED_ShowStr(0,5,(unsigned char *)F2S(DMA_A1,tstr),4,1); //6*8
      OLED_ShowStr(0,6,(unsigned char *)F2S(DMA_A2,tstr),4,1); //6*8
      OLED_ShowStr(0,7,(unsigned char *)F2S(ADC12MEM3,tstr),4,1); //6*8

//      Delay_ms(200);
      // if(strcmp(str_1,str)==0)
      // {
      //     P1OUT |= BIT0;
      //     UartTX_Send("Great!\r\n",8);
      //     Delay_ms(200);
      // }
      // else P1OUT &= ~BIT0;
  } //end of while

}
Ejemplo n.º 8
0
// Function Name: main
// Author: Drew Schuster
// Called by: runs on powerup
// Purpose: Initializes registers and peripherals.  Handles volume changes
     // And updates to the display
// Calling convention: is not called by any other function
// Conditions at exit: No exit, infinite while loop
// Date Started: March 14th
// Update History: 	See Github repository at https://github.com/dr3wster/We-are-Wireless-Audio
int main (void) {
#ifdef BASE
int lastVolume=-1;
#endif
SCS |= 1;  //Enable fast GPIO
#ifdef BASE
  volume=5;
   /* Enable and setup timer interrupt, start timer                            */
  T0MR0         = 99;                       /* 0.025msec = 100-1 at 4.0 MHz*/
  T0MCR         = 3;                           /* Interrupt and Reset on MR0  */
  T0TCR         = 0;                           /* Timer0 Enable             */
  VICVectAddr4  = (unsigned long)T0_IRQHandler;/* Set Interrupt Vector        */
  VICVectCntl4  = 15;                          /* use it for Timer0 Interrupt */
  VICIntEnable  |= (1  << 4);                   /* Enable Timer0 Interrupt     */

  /* Enable and setup timer interrupt (useful for communicating with display)*/
  T1MR0         = 3999;                       /* 1msec = 4000-1 at 4.0 MHz*/
  T1MCR         = 3;                           /* Interrupt and Reset on MR0  */
  T1TCR         = 1;                           /* Timer1 Enable            */
  VICVectAddr5  = (unsigned long)T0_IRQHandler2;/* Set Interrupt Vector        */
  VICVectCntl5  = 16;                          /* use it for Timer1 Interrupt */
  VICIntEnable  |= (1  << 5);                   /* Enable Timer1 Interrupt     */ 
#endif
		
  /* Power enable, Setup pin, enable and setup AD converter interrupt         */
  PCONP        |= (1 << 12);                   /* Enable power to AD block    */
  PINSEL1       = 0x00204000;                      /* AD0.0 pin function select   */
  AD0INTEN      = (1 <<  0);                   /* CH0 enable interrupt        */
  AD0CR         = 0x00200301;                  /* Power up, PCLK/4, sel AD0.0 */
#ifdef BASE
  VICVectAddr18 = (unsigned long)ADC_IRQHandler;/* Set Interrupt Vector       */
  VICVectCntl18 = 14;                          /* use it for ADC Interrupt    */
  VICIntEnable  |= (1  << 18);                  /* Enable ADC Interrupt        */
#endif
  init_serial();                               /* Init UART                   */
 


#ifdef BASE
  /*Initialize the display*/
  #ifdef DEVBOARD
  // development board doesn't have display connected
  #else
  display_init();
  #endif
#endif  

#ifdef BASE  
  /* Let's initialize the voice recognition pins: p1.20-24	 */
#ifdef DEVBOARD
  PINSEL4 &=  0xFFFC03FF;
#else
  //p1[20-24]
  PINSEL3 &=   0xFFFC00FF;
  FIO3DIR = 0;

  //Pushbuttons	p1[15-17]
  PINSEL2 &= 0x3FFFFFFF;
  PINSEL3 &= 0xFFFFFFF0; 
  FIO1DIR &= 0xFFFC7FFF;

#endif

  T0TCR         = 1;                           /* Timer0 Enable (Start A-D conversions!)              */
#endif

 		   
#ifdef REMOTE
//Set pin P3[26] to high (for amplifier)
PINSEL4 &= 0x0;
FIO3DIR = 1 << 26 ; //pin configured as output
FIO3SET = 1 << 26;


#endif  
#ifdef BASE
 		 
//Initialize the potentiometer 	 
  SPIWRData[0]=0x24;  
  SPIWRData[1]=0x00;
  FIO0CLR = 1 << 16;
  SPISend(SPIWRData, 0x2);
  FIO0SET = 1 << 16; 
  
  SPIWRData[0]=0x1C;  	
  SPIWRData[1]=0x03;
  FIO0CLR = 1 << 16;
  SPISend(SPIWRData, 0x2);
  FIO0SET = 1 << 16;
   
  SPIWRData[0]=0x05;
  SPIWRData[1]=0x40;
  FIO0CLR = 1 << 16;
  SPISend(SPIWRData, 0x2);
  FIO0SET = 1 << 16;

#endif
  while (1) {                           /* Loop forever                       */

#ifdef BASE   	   
   /* Audio Code*/

   if (volume == 5)
   {
    out = AD_last>>2;
   }
   else if (volume == 4)