Esempio n. 1
0
void main(void)
{
#if defined(MAX_UART_RX_BUF_CNT) || defined(MAX_UART_TX_BUF_CNT)
    #error "Comment out MAX_UART_RX_BUF_CNT and MAX_UART_TX_BUF_CNT in config.h for this example"
#endif

    WD_STOP();
    ClockConfig(16);
    HardwareInit();
    // init uart at 115k
    UartInit(115200);

    _EINT();
    printf("\n\nEnter your name: ");
    static uint8_t buf[20];
    uint8_t* cur_char = &buf[0];
    while(1)
    {
        // The code will stop here and wait for a character to be received
        while((*cur_char++ = getchar()) == '\r')
        {
            printf("\nHello %s",buf);
        }
    }
}
Esempio n. 2
0
void main(void)
{
#if !defined(MAX_UART_RX_BUF_CNT)
    #error "Define MAX_UART_RX_BUF_CNT > 0 in config.h for this example"
#endif

    WD_STOP();
    ClockConfig(16);
    HardwareInit();
    // init uart at 115k
    UartInit(115200);

    _EINT();

    printf("\n\nEnter your name: ");
    static uint8_t buf[30];
    uint8_t* cur_char = &buf[0];
    while(1)
    {
        // poll the rx buffer for new data
        if (!UartBufEmpty())
        {
            // pull the data out one byte at a time
            *cur_char = getchar();
            // was the last character a carriage return?
            if (*(cur_char - 1) == '\r')
            {
                printf("\nHello %s",buf);
            }
        }
    }
}
Esempio n. 3
0
void
CmtSdCard::InitSetup( OMAP_MMCHS_REGS *mmc ) {
  uint32 reg_val;

  cmtDebug1( 4, 1, "InitSetup SoftReset", 0 );
  BoardInit( mmc );

  mmc->MMCHS_SYSCONFIG |= MMC_SOFTRESET;
  while( (__raw_readl( &(mmc->MMCHS_SYSSTATUS) ) & RESETDONE) == 0 );

  cmtDebug1( 4, 2, "...done. InitSetup AllReset", 0 );
  mmc->MMCHS_SYSCTL |= SOFTRESETALL;
  while( (__raw_readl( &(mmc->MMCHS_SYSCTL) ) & SOFTRESETALL) != 0x0 );

  cmtDebug1( 4, 3, "...done. InitSetup Clock Config", 0 );
  mmc->MMCHS_HCTL = DTW_1_BITMODE | SDBP_PWROFF | SDVS_3V0;
  mmc->MMCHS_CAPA |= VS30_3V0SUP | VS18_1V8SUP;

  reg_val = mmc->MMCHS_CON & RESERVED_MASK;

  mmc->MMCHS_CON = CTPL_MMC_SD | reg_val | WPP_ACTIVEHIGH |
      CDP_ACTIVEHIGH | MIT_CTO | DW8_1_4BITMODE | MODE_FUNC |
      STR_BLOCK | HR_NOHOSTRESP | INIT_NOINIT | NOOPENDRAIN;

  ClockConfig( mmc, CLK_INITSEQ, 0 );
  mmc->MMCHS_HCTL |= SDBP_PWRON;

  mmc->MMCHS_IE = 0x307f0033;
  cmtDebug1( 4, 4, "...done.", 0 );

  InitStream( mmc );
  }
Esempio n. 4
0
void main(void)
{
    WD_STOP();
    ClockConfig(1);
    HardwareInit();

    ScheduleTimerInit();
    BlinkLed1();
    _EINT();
    LPM0;
}
Esempio n. 5
0
void main(void)
{
    WD_STOP();
    ClockConfig(16);
    ScheduleTimerInit();
    HardwareInit();

    // call ToggleLed2 and it will continue to reschedule itself forever
    ToggleLed2();
    _EINT();
    LPM0;
}
Esempio n. 6
0
void main(void)
{
    WD_STOP();
    ClockConfig(16);
    ScheduleTimerInit();
    HardwareInit();

    // attach function to SW1 falling edge interrupt
    InterruptAttach(GPIO(SW1), QueueButton, FALLING);
    _EINT();
    LPM0;
}
Esempio n. 7
0
void BlinkLed1(void)
{
    static int i = 0;
    switch (i++)
    {
        case 1:
            ClockConfig(1);
            break;
        case 10:
            ClockConfig(8);
            break;
        case 20:
            ClockConfig(12);
            break;
        case 30:
            ClockConfig(16);
            break;
        case 40:
            i = 0;
            break;
    }
    LED1_TOGGLE();
    CalloutRegister(BlinkLed1, 1000);
}
Esempio n. 8
0
void main(void)
{
    WD_STOP();
    ClockConfig(16);
    HardwareInit();

    // Init the timer
    ScheduleTimerInit();
    // register a function and define its period
    CallbackRegister(BlinkLed1, 100ul * _MILLISECOND);
    // attach function to SW1 falling edge interrupt
    InterruptAttach(GPIO(SW1),ToggleEnable,FALLING);

    _EINT();
    LPM0;
}
Esempio n. 9
0
void main(void)
{
    WD_STOP();
    ClockConfig(16);
    HardwareInit();

    // Init the timer
    ScheduleTimerInit();
    // register functions and define their period
    CallbackRegister(BlinkLed1, 100ul * _MILLISECOND);
    CallbackRegister(BlinkLed2, 101ul * _MILLISECOND);
    // callbacks are disabled by default, so enable them
    CallbackMode(BlinkLed1, ENABLED);
    CallbackMode(BlinkLed2, ENABLED);

    _EINT();
    LPM0;
}
Esempio n. 10
0
void main(void)
{
#if !defined(MAX_UART_TX_BUF_CNT)
    #error "Define MAX_UART_TX_BUF_CNT > 0 in config.h for this example"
#endif
    WD_STOP();
    ClockConfig(16);
    HardwareInit();
    // init uart at 115k
    UartInit(115200);

    _EINT();

    printf("\n\nThis is %s\n",        "a string");
    printf("Hex number(16): 0x%x\n",  60);
    printf("Hex number(32): 0x%lx\n", 100000);
    printf("Char: %c\n",              'x');
    printf("Unsigned short: %u\n",    100);
    printf("Signed short: %i\n",     -100);
    printf("Unsigned long: %lu\n",    250000);
    printf("Signed long: %li\n",     -250000);
    LPM0;
}
Esempio n. 11
0
void main() {
	WDTStop();
	ClockConfig();					// Config System as 16MHz
	P1Init();
}
Esempio n. 12
0
CmtSdCard*
CmtSdCard::CreateCard( OMAP_MMCHS_REGS *mmc, CmtSdIsConnect  isConnect ) {
#endif
  uint8 MMCCmd[16];
  
  if( isConnect() != CMTE_OK ) return 0; //Карта не подключена

  bool   ret_val;
  bool   sdCardType;
  uint32 factor;
  uint32 RCA = 1;
  uint32 argument;
  uint32 resp[4];
  unsigned int trans_fact, trans_unit, retries = 2;
  unsigned int max_dtr;
  int dsor;
  volatile mmc_csd_reg_t Card_CSD;
  unsigned char trans_speed;

  cmtDebug1( 10, 1, "CreateCard init setup", 0 );
  InitSetup( mmc );

  do {
    cmtDebug1( 10, 2, "CreateCard detect card", 0 );
    ret_val = DetectCard( mmc, &sdCardType, &factor, &RCA );
    retries--;
    } 
  while( (retries > 0) && !ret_val );

  cmtDebug1( 10, 3, "CreateCard CMD9 RCA=%1", RCA );
  argument = RCA << 16;
  if( !SendCommand( mmc, MMC_CMD9, argument, resp ) ) {
    cmtDebug1( 10, 3, "CreateCard CMD9 fail", 0 );
    return 0;
    }

  memcpy( MMCCmd, resp, 16 );
  ((unsigned int *)&Card_CSD)[3] = resp[3];
  ((unsigned int *)&Card_CSD)[2] = resp[2];
  ((unsigned int *)&Card_CSD)[1] = resp[1];
  ((unsigned int *)&Card_CSD)[0] = resp[0];

//  if (mmc_card_cur->card_type == MMC_CARD)
//     mmc_card_cur->version = Card_CSD.spec_vers;

  trans_speed = Card_CSD.tran_speed;

  cmtDebug1( 10, 5, "CreateCard trans_speed %1", trans_speed );

  cmtDebug1( 10, 5, "CreateCard CMD4", 0 );
  if( !SendCommand( mmc, MMC_CMD4, MMC_DSR_DEFAULT << 16, resp ) ) {
    cmtDebug1( 10, 6, "CreateCard CMD4 fail", 0 );
    return 0;
    }
#if 1

  trans_unit = trans_speed & MMC_CSD_TRAN_SPEED_UNIT_MASK;
  trans_fact = trans_speed & MMC_CSD_TRAN_SPEED_FACTOR_MASK;

  if( trans_unit > MMC_CSD_TRAN_SPEED_UNIT_100MHZ )
    return 0;

  if( (trans_fact < MMC_CSD_TRAN_SPEED_FACTOR_1_0) ||
      (trans_fact > MMC_CSD_TRAN_SPEED_FACTOR_8_0) )
    return 0;

  trans_unit >>= 0;
  trans_fact >>= 3;

  max_dtr = tran_exp[trans_unit] * tran_mant[trans_fact];
  dsor = 96000000 / max_dtr;

  if( dsor == 4 )
    dsor = 5;
  if( dsor == 3 )
    dsor = 4;

  cmtDebug1( 10, 10, "CreateCard config dsor = %1", dsor );
  ClockConfig( mmc, CLK_MISC, 7 ); //dsor );
#endif

  cmtDebug1( 10, 11, "CreateCard CMD7", 0 );
  argument = RCA << 16;
  if( !SendCommand( mmc, MMC_CMD7_SELECT, argument, resp ) ) {
    cmtDebug1( 10, 12, "CreateCard CMD7 fail", 0 );
    return 0;
    }

  /* Configure the block length to 512 bytes */
  cmtDebug1( 10, 14, "CreateCard CMD16", 0 );
  if( !SendCommand( mmc, MMC_CMD16, 512, resp ) ) {
    cmtDebug1( 10, 15, "CreateCard CMD16 fail", 0 );
    return 0;
    }

  //Анализ размера карты (определение количества блоков)
  uint32 blockCount; //Количество блоков по 512 байт
  if( factor == 0 ) { //mmc_dev_data->mode == SECTOR_MODE
    if( sdCardType ) { //mmc_dev_data->card_type == SD_CARD
      blockCount = (((mmc_sd2_csd_reg_t *) &Card_CSD)->c_size_lsb & MMC_SD2_CSD_C_SIZE_LSB_MASK) |
            ((((mmc_sd2_csd_reg_t *) &Card_CSD)->c_size_msb & MMC_SD2_CSD_C_SIZE_MSB_MASK) << MMC_SD2_CSD_C_SIZE_MSB_OFFSET);
      blockCount *= 1024;
      } 
    else {
      mmc_extended_csd_reg_t ext_csd;
      argument = 0x00000000;
      cmtDebug1( 10, 16, "CreateCard CMD8", 0 );
      if( !SendCommand( mmc, MMC_CMD8, argument, resp ) ) {
        cmtDebug1( 10, 15, "CreateCard CMD8 fail", 0 );
        return 0;
        }
      if( !GetData( mmc, (uint32*)(&ext_csd) ) ) {
        cmtDebug1( 10, 16, "CreateCard CMD8 GetData fail", 0 );
        return 0;
        }
      blockCount = ext_csd.sectorcount;
      if( blockCount == 0 ) blockCount = 8388608;
      }
    }
  else {
    if( Card_CSD.c_size_mult >= 8 )
      return 0;

    if( Card_CSD.read_bl_len >= 12 )
      return 0;

     /* Compute size */
     uint32 count = 1 << (Card_CSD.c_size_mult + 2);
     uint32 card_size = (Card_CSD.c_size_lsb & MMC_CSD_C_SIZE_LSB_MASK) |
         ((Card_CSD.c_size_msb & MMC_CSD_C_SIZE_MSB_MASK) << MMC_CSD_C_SIZE_MSB_OFFSET);

     uint32 blk_no = (card_size + 1) * count;
     uint32 blk_len = 1 << Card_CSD.read_bl_len;
     uint32 size = blk_no * blk_len;

     blockCount = size >> 9;
     }

  cmtDebug1( 10, 21, "card blocks %1", blockCount );
  cmtDebug1( 10, 22, "card factor %1", factor );
  
  //Построить объект карты
#ifdef CMT_DMA
  return new CmtSdCard( mmc, isConnect, factor, 512, blockCount, dmaRx, dmaTx );
#else
  return new CmtSdCard( mmc, isConnect, factor, 512, blockCount );
#endif
  }
Esempio n. 13
0
bool
CmtSdCard::DetectCard( OMAP_MMCHS_REGS *mmc, bool *sdCardType, uint32 *factor, uint32 *RCA ) {
  uint32 argument = 0;
  uint32 ocr_value, ocr_recvd, ret_cmd41, hcs_val;
  uint32 resp[4];
  uint32 retry_cnt = 2000;

  /* Set to Initialization Clock */
  ClockConfig( mmc, CLK_400KHZ, 0 );

  argument = 0x00000000;

  ocr_value = (0x1FF << 15);
  cmtDebug1( 8, 1, "DetectCard CMD0", 0 );
  if( !SendCommand( mmc, MMC_CMD0, argument, resp ) ) {
    cmtDebug1( 8, 2, "DetectCard CMD0 fail", 0 );
    return false;
    }

  cmtDebug1( 8, 3, "DetectCard CMD8", 0 );
  argument = SD_CMD8_CHECK_PATTERN | SD_CMD8_2_7_3_6_V_RANGE;
  if( SendCommand( mmc,MMC_SDCMD8, argument, resp) ) {
    cmtDebug1( 8, 4, "DetectCard CMD8 success", 0 );
    *factor = 0;
    hcs_val = MMC_OCR_REG_HOST_CAPACITY_SUPPORT_SECTOR;
    }
  else {
    cmtDebug1( 8, 5, "DetectCard CMD8 fail", 0 );
    *factor = 9;
    hcs_val = MMC_OCR_REG_HOST_CAPACITY_SUPPORT_BYTE;
    }

  argument = 0x0000 << 16;
  cmtDebug1( 8, 7, "DetectCard CMD55", 0 );
  if( SendCommand( mmc, MMC_CMD55, argument, resp) ) {
    cmtDebug1( 8, 8, "DetectCard CMD55 success (SD)", 0 );
    *sdCardType = true;    //mmc_card_cur->card_type = SD_CARD;
    ocr_value |= hcs_val;
    ret_cmd41 = MMC_ACMD41;
    } 
  else {
    cmtDebug1( 8, 9, "DetectCard CMD55 fail (MMC)", 0 );
    *sdCardType = false; //mmc_card_cur->card_type = MMC_CARD;
    ocr_value |= MMC_OCR_REG_ACCESS_MODE_SECTOR;
    ret_cmd41 = MMC_CMD1;
    mmc->MMCHS_CON &= ~OD;
    mmc->MMCHS_CON |= OPENDRAIN;
    }

  argument = ocr_value;
  cmtDebug1( 8, 11, "DetectCard cmd41 (ACMD41 for SD, CMD1 for MMC)", 0 );
  if( !SendCommand( mmc, ret_cmd41, argument, resp ) ) {
    cmtDebug1( 8, 12, "DetectCard cmd41 fail", 0 );
    return false;
    }

  cmtDebug1( 8, 11, "DetectCard cmd41 success", 0 );
  
  ocr_recvd = ((mmc_resp_r3 *) resp)->ocr;

  while( !(ocr_recvd & MBIT31) && (retry_cnt > 0) ) {
    retry_cnt--;
    if( *sdCardType ) {
      argument = 0x0000 << 16;
      SendCommand( mmc, MMC_CMD55, argument, resp );
      }

    argument = ocr_value;
    if( !SendCommand( mmc, ret_cmd41, argument, resp ) ) {
      cmtDebug1( 8, 12, "DetectCard Loop cmd41 fail", 0 );
      return false;
      }
    ocr_recvd = ((mmc_resp_r3 *) resp)->ocr;
    }

  if( !(ocr_recvd & MBIT31) ) {
    cmtDebug1( 8, 14, "DetectCard ocr_recvd bit 31", 0 );
    return false;
    }

  if( !*sdCardType ) { //MMC_CARD
    if( (ocr_recvd & MMC_OCR_REG_ACCESS_MODE_MASK) == MMC_OCR_REG_ACCESS_MODE_SECTOR) {
      *factor = 0; //mmc_card_cur->mode = SECTOR_MODE;
      } 
    else {
      *factor = 9; //mmc_card_cur->mode = BYTE_MODE;
      }

    ocr_recvd &= ~MMC_OCR_REG_ACCESS_MODE_MASK;
    } 
  else {
    if( (ocr_recvd & MMC_OCR_REG_HOST_CAPACITY_SUPPORT_MASK) == MMC_OCR_REG_HOST_CAPACITY_SUPPORT_SECTOR ) {
      *factor = 0; //mmc_card_cur->mode = SECTOR_MODE;
      } 
    else {
      *factor = 9; //mmc_card_cur->mode = BYTE_MODE;
      }
    ocr_recvd &= ~MMC_OCR_REG_HOST_CAPACITY_SUPPORT_MASK;
    }

  ocr_recvd &= ~(0x1 << 31);
  if( !(ocr_recvd & ocr_value) ) {
    cmtDebug1( 8, 15, "DetectCard ocr_recvd bit ocr_value", 0 );
    return false;
    }

  cmtDebug1( 8, 16, "DetectCard CMD2", 0 );
  if( !SendCommand( mmc, MMC_CMD2, argument, resp ) ) {
    cmtDebug1( 8, 17, "DetectCard CMD2 fail", 0 );
    return false;
    }

  if( !*sdCardType ) { //mmc_card_cur->card_type == MMC_CARD
    argument = *RCA << 16;
    cmtDebug1( 8, 20, "DetectCard CMD3", 0 );
    if( !SendCommand( mmc, MMC_CMD3, argument, resp ) ) {
      cmtDebug1( 8, 21, "DetectCard CMD3 fail", 0 );
      return false;
      }
    } 
  else {
    argument = 0x00000000;
    cmtDebug1( 8, 22, "DetectCard SDCMD3", 0 );
    if( !SendCommand( mmc, MMC_SDCMD3, argument, resp ) ) {
      cmtDebug1( 8, 23, "DetectCard SDCMD3 fail", 0 );
      return false;
      }
    *RCA = ((mmc_resp_r6 *) resp)->newpublishedrca;
    }

  mmc->MMCHS_CON &= ~OD;
  mmc->MMCHS_CON |= NOOPENDRAIN;
  return true;
  }