/*
 * main.c
 */
int main(void) {
    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer
	
    gpio_port1_init();
    Timer0_init();
    Timer1_init();

	GPIO_PORT1.out = S2_BIT;					// Set S2 pin out register for pullup
	GPIO_PORT1.direction = ~S2_BIT;				// Set LED pin to output mode
	GPIO_PORT1.resistor_enable = S2_BIT;		// Enable S2 pin pullup
	GPIO_PORT1.select = LED2_BIT;				// Select TA0.1
	GPIO_PORT1.select_2 = 0;
	GPIO_PORT1.interrupt_edge_select = S2_BIT;	// Set for falling edge
	GPIO_PORT1.interrupt_flag = 0;				// Clear interrupt flags
	GPIO_PORT1.interrupt_enable = S2_BIT;		// Enable interrupt

	GPIO_PORT2.direction = BUZZER_BIT;			// Set buzzer pin to output mode
	GPIO_PORT2.select = BUZZER_BIT;				// Select TA1.0
	GPIO_PORT2.select_2 = 0;

	GPIO_PORT1_registerCallback(S2_PIN, &LED2_One_Shot);		// Should blink the LED when the button is pressed.
	Timer0_A1_registerCallback (1, &TA0CCR1_ISR_Handler);

    _EINT();
    LPM0;

	return 0;
}
Beispiel #2
0
void USB_Task()
{
	USB_On();//(JC)loop to wait 'n parse msdc scsi command, ret if usb unplugged (gbt_USB_Detected)

	if((!M_ChkFlag_USB) || (gb_cmd_timeout==1))  //080925chiayen modify
	{
		gbt_USB_Detected=0;
		GLOBAL_REG[0x10]&= 0xFE;	// Disable DSP clock, Jimi 080729 for pop noise as 1st time play
		GLOBAL_REG[0x02] &= 0xFE;	// Release DSP Reset, Jimi 080729 for pop noise as 1st time play

		Timer0_init();
		EA  = 1;

		gc_bCBWLUN=0;
		gc_LCM_Media=0xff;
		gc_DisplayEQIcon=0xFF;
		gw_DisplayBitRate=0xFFFF;
		gc_DisplayPlayMode=0xFF;
		gw_DispSongNum1=0xFFFF;
		gc_PseudoCard_Flag=0;

		gc_Task_Next=C_Task_Play;
		gw_init_needed |= (SET_BIT0 | SET_BIT7);
		gw_FileIndex[0]=0;
		gc_PhaseInx = 0;								
		gb_FindFlag = 0;	
	}

	gc_Task_Current=gc_Task_Next;
}
Beispiel #3
0
static UINT play (const char *fn)
{
	DWORD sz;
	FRESULT res;
	unsigned char read2;

	
	uint16_t size = 256;
	
	if ((res = pf_open(fn)) == FR_OK) {
	
		Timer0_init();
		Timer1_init();
		
		sz = load_header();			/* Load file header */
		if (sz < 256) return (UINT)sz;
		
		
		FifoCt = 0; FifoRi = 0; FifoWi = 0;		/* Reset FIFO */
		pf_read(Buff1, 512 - (Fs.fptr % 512), &rb);	/* Snip sector unaligned part */
		sz -= rb;

			
		res = pf_read(Buff1, size, &rb);
		if (res != FR_OK) { PORTC = 0x08; while (FifoCt) ; return res; }
		
		sync = 1;
				
		do {
				
			read2 = read1;
			
			if(read1 == 1)	
				res = pf_read(Buff2, size, &rb);
			else
				res = pf_read(Buff1, size, &rb);
				
			if (res != FR_OK) { PORTC = 0x08; break; }
			
			while(read2 == read1);
			
			if(!(PINB&(1<<PB1))) 
			{
				sync = 0;
				_delay_ms(500); 
				break;
			}
			
		
		} while (rb == size);	/* Repeat until all data read */
		
		sync = 0;
	}

	while (FifoCt) ;			/* Wait for FIFO empty */
	

	return res;
}
Beispiel #4
0
int main(void)
{
    DDRB |= _BV(PB5);

	Usart_init();

	Timer0_init();

    Twi_init();

    CircularBuffer_init(&twi_input);

	_enableInterrupts();

    while(1);
}
Beispiel #5
0
void main_init(){

	dashboard_state=DASHBOARD_STATE_STARTING;
	
	ports_init();
	
	Timer0_init(TMR0_PRESCALER);
	
	CANInit();

	#if HAS_50HZ|HAS_200HZ|HAS_50HZ
	Timer1_init(TMR1_PRESCALER,FALSE);
	#endif

	#if HAS_10HZ|HAS_5HZ|HAS_4HZ
	Timer3_init(TMR3_PRESCALER,FALSE);
	#endif

	#if HAS_50HZ
	TIMER_Timer1_OCR1A_on();
	#endif

	#if HAS_25HZ
	TIMER_Timer1_OCR1B_on();
	#endif

	#if HAS_200HZ
	TIMER_Timer1_OCR1C_on();
	#endif

	#if HAS_10HZ
	TIMER_Timer3_OCR3A_on();
	#endif

	#if HAS_BUZZER
	buzzer_init();
	TIMER_Timer3_OCR3C_on();
	#endif
	
	#if HAS_LEDS
	led_init();
	#endif
	
	#if HAS_BUTTONS
	button_init();
	#endif
	
	#if HAS_DISPLAY
	display_init();
	#endif
	
	#if HAS_RADIO
	radio_init();
	#endif
	
	InitWDT();
	
	EventAddEvent(EVENT_INIT);
	
		
}
Beispiel #6
0
void main(void)
{
//	XBYTE[0xB091]=0x01;	// 1.8v/3.3v regulator turn on
    XBYTE[0xB092]=0x78; // 3.2V & 2.0V
//	XBYTE[0xB093]=0x00;	// LVR=2.4V

    // DSP initial
    XBYTE[0xB010]&=0xFE;	// Disable DSP clock, Jimi 080729 for pop noise as 1st time play
    XBYTE[0xB002]&=0xFE;	// Release DSP Reset, Jimi 080729 for pop noise as 1st time play
    XBYTE[0xB08a]|=0x08; 	//(JC)MCU:audio DAC on
    XBYTE[0xB08a]|=0x10; 	//(JC)MCU:Headphone driver on
    XBYTE[0xB08a]|=0x20; 	//(JC)MCU:Headphone driver DD comm-mode bias o/p
    XBYTE[0xB0ED]|=0x02;	//(Jimi 091027)Audio DA zero cross reset bypass on
    XBYTE[0xB0C1]=0xB0;		//(Jimi 091027)Pre-mux , post-mux and internal XCK select
    XBYTE[0xB0C4]=2;		//(Jimi 091027)LCH speaker volume(i.e LCH OP Gain)
    XBYTE[0xB0C5]=2;		//(Jimi 091027)RCH speaker volume(i.e RCH OP Gain)

    //SAR ADC init
    XBYTE[0xB05E] = 0; // disable SAR FS clock
    XBYTE[0xB05F] = 0x5F; // SAR clock = 12MHz/16/6 = 125kHz = 8us

    //--------------------------------------------	//
    gbt_Force_USB_FullSpeed =FALSE;
    gbt_USB_Detected = 0;
    gc_CardDetect = 0x00 ;
    gc_CardExist  = 0x00 ;  			// bit 0  : Nand Flash  bit 1: SD_Card
    gc_CardType   = 0x01 ;				// default Flash Interface
    gc_CardChangeStage =0x00;           // bit 0 : Nand  bit 1 : SD_Card
    gw_FileSkipNumber=0;
    gb_TriggerFileSkip=0;
    gb_FindFile=0;
    gbt_Support_Dummy_Capacity =0;              // default disable dummy capacity function
    gc_bCBWLUN=0;
    gbt_enableCDROM =0;							//09/04/24,joyce
    gc_CDROM_Size=0 ;
    init_system();
    USB_PlugDetect();                               // Detect USB plug
    //----------------------------------------------// Initial Flash module
    Init_Flash_Reg();
    Init_Flash_Variable();
    //-------------- Need search Bank,Dsp ,hzk block info ,first---------//
    FDBP.cFDev = 0;
    XBYTE[0xB40F] = FDBP.cFDev;
    FlashReadID();
    Flash_State_Initial();
    Search_BankCode_Block();

    InitFlash();

    Timer0_init();
    XBYTE[0xB09F]|=0x06;//(JC)Vref Fast setup mode 'n Internal reference voltage power control
    gc_Vrefinit_Timer=60;
    XBYTE[0xB421]=0x13;
//	dbprintf("tftinit\n");
    TFT_init();
#ifdef CAR_48
    XBYTE[0xB102]|=0x3C;
#else
    XBYTE[0xB102] |= 0x01;
#endif
//	dbprintf("tftinit end\n");
    TFT_PowerOnlogo();
    if(gbt_USB_Detected)
    {
        USB_Task();
    }

    gb_Host_Exist=1;
    gb_SD_Exist=1;
    if(!Host_DetectDevice())
    {
        if(!Host_Initial())
        {
            gc_CurrentCard = CURRENT_MEDIA_HOST;
            gb_FindFlag = 0;
        }
        else
        {
            gc_CurrentCard=0;
        }
    }
    else
    {
        if(SD_Card_Detect())
        {
            if(SD_Identification_Flow())
            {
                gc_CardExist |=0x02;
                gc_CurrentCard=2;
            }
            else
            {
                gc_CurrentCard=0;
                gc_CardExist &=0xFD;
                gb_FindFlag = 0;
            }
        }
        else
        {
            gb_SD_Exist=0;
            gc_CurrentCard = 0;
        }
    }
    XBYTE[0xB400] =0x01;
    XBYTE[0xB010]&=0xFE;	// Disable DSP clock, Jimi 080729 for pop noise as 1st time play
    XBYTE[0xB002]&=0xFE;	// Release DSP Reset, Jimi 080729 for pop noise as 1st time play
    XBYTE[0xB08a]|=0x08;//(JC)MCU:audio DAC on
    XBYTE[0xB08a]|=0x10;//(JC)MCU:Headphone driver on
    XBYTE[0xB08a]|=0x20;//(JC)MCU:Headphone driver DD comm-mode bias o/p

    //SAR ADC init
    XBYTE[0xB05E] = 0; // disable SAR FS clock
    XBYTE[0xB05F] = 0x5f; // SAR clock = 12MHz/16/6 = 125kHz = 8us

    Get_LogData_PageIndex();  //chiayen0808
    USER_LogFile_ReadWrite(0);//use reserveblock for log
    if((gw_FM_frequency<875) || (gw_FM_frequency>1080))
    {
        gw_FM_frequency=875;
    }
    FM_initial();
    FM_drive();
    gc_SetNumber = gw_PagesPerBlock >> 2; //1set=4pages for dir management, Ching 080816  //20090107 chiayen add
    gc_SetIndex = 0; //Ching 080816  //20090107 chiayen add
    USER_GetUISetIndex();	//for DIR table	index  //20090107 chiayen add

    gb_FindFlag = 0;
    if (DOS_Initialize()) //20090803 chiayen modify
    {
        gdw_HOSTStartSectorRead=0xFFFFFFF0;
        if(gc_CurrentCard==CURRENT_MEDIA_HOST)
        {
            if(SD_Card_Detect())
            {
                gb_SD_Exist=1;
                if(SD_Identification_Flow())
                {
                    gc_CardExist |=0x02;
                    gc_CurrentCard=2;
                }
                else
                {
                    DEVICE_REG[0x00]= 0x01;
                    gc_CurrentCard=0;
                    gc_CardExist &=0xFD;
                    gb_FindFlag = 0;
                }
            }
            else
            {
                DEVICE_REG[0x00]= 0x01;
                gb_SD_Exist=0;
                gc_CurrentCard = 0;
            }
        }
        else
        {
            DEVICE_REG[0x00]= 0x01;  //20090730 chiayen add
            gc_CurrentCard=0;
            gc_CardExist &=0xFD;
            gb_FindFlag = 0;
            InitFlash();
        }
        DOS_Initialize();
    }
    gc_CurrentCard_backup=gc_CurrentCard; //20090803 chiayen move here
    gs_File_FCB[0].dw_FDB_StartCluster = gdw_DOS_RootDirClus;
    DOS_Search_File(C_File_All|C_Cnt_FileNo, C_MusicFileType, C_CmpExtName|C_Next);//(JC)count music file no. in root
    ir_init();
    EA  = 1;
    gc_Task_Current=C_Task_Play;
    gc_Task_Next=C_Task_Play;
    gc_PhaseInx=0;
    gw_init_needed=0xffff;
    Detect_USB();
    Polling_TaskEvents();
    if(gc_Task_Current!=gc_Task_Next)
    {
        gc_Task_Current=gc_Task_Next;
    }
    while(1)
    {
        switch(gc_Task_Current)
        {
        case C_Task_Play:
            Play_Task();
            break;

        case C_Task_USB:
            USB_Task();
            break;

        case C_Task_Dir:  //20090107 chiayen add
            Dir_Task();
            break;

        case C_Task_Jpeg:  //20090107 chiayen add
            Jpeg_Task();
            break;

        case C_Task_Mjpeg:  //20090107 chiayen add
            Mjpeg_Task();
            break;

        case C_Task_PlayMenu:  //20090107 chiayen add
//				PlayMenuProcess();
            break;

        case C_Task_PlayMenu_IR:  //20090107 chiayen add
//				PlayMenuProcess_IR();
            break;

        case C_Task_Setting:  //20090107 chiayen add
            SetupMenuProcess();
            break;

        case C_Task_Menu:
            MainMenuProcess();
            break;

        case C_Task_PowerOff:
            PowerOffProcess();
            break;
        }
    }
}