예제 #1
0
파일: main.cpp 프로젝트: uriahjb/symphotron
int main( void )
{
    mInit();
    mUSBInit();
    mBusInit();

    // Set up usb interface
    bQueue in_q;
    bQueue out_q;
    usbIface usb( &in_q, &out_q );
    
//    picker_setup();
    stepper_setup();
//    set_timer5 (60000,30000,1200);
    
    setMode( STEP_8TH);
    setSpeedLimits( 65, 500 );
    set_speed(m_speed_min);
    setAccelerationLimit(100); //5000 is good
    
    uint8_t cmd; 
    uint16_t pos = 0;
    while(1)
    {
        usb.readBytes();

        // Handle bytes 
        if (!in_q.isempty() ) {
          mBlueTOGGLE;
          in_q.dequeue(&cmd);
          if ( cmd == 'l' ) {
            pos += 10;
          } else if ( cmd == 'h' ) {
            pos -= 10;
          }
        }
        update(pos);
    }
    return(0);
}
예제 #2
0
int main()
{
	
    TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);
    printf("-- USB Device CDC Serial Project %s --\n\r", SOFTPACK_VERSION);
    printf("-- %s\n\r", BOARD_NAME);
    printf("-- Compiled: %s %s --\n\r", __DATE__, __TIME__);

    // If they are present, configure Vbus & Wake-up pins
    //PIO_InitializeInterrupts(0);
	
	//-------- Init parameters --------------
	printf("INIT Parameters\n\r");
	init_parameters();
	
	//-------- Load parameters from Flash --------------
	printf("Load parameters from Flash\n\r");
	FLASH_LoadSettings();
	
    //-------- Init UART --------------
	printf("USB Seriel INIT\n\r");
	samserial_init();
	
	//-------- Init ADC without Autostart --------------
	printf("Init ADC\n\r");
    initadc(0);
	
	//-------- On USB recived byte call this function --------------
	printf("Init Callback for USB\n\r");
    samserial_setcallback(&usb_characterhandler);
	
	//-------- Init Motor driver --------------
	printf("Init Motors\n\r");
    motor_setup();
	
	//-------- Init Heater I/O  --------------
	printf("Init Heaters\n\r");
    heaters_setup();
	
    //-------- Start SYSTICK (1ms) --------------
	printf("Configuring systick.\n\r");
	SysTick_Configure(1, BOARD_MCK/1000, SysTick_Handler);
	
	//-------- Timer 0 for Stepper --------------
	printf("Init Stepper IO\n\r");
    stepper_setup();	//Timer for Stepper


	//-------- Timer 0 for Stepper --------------
	printf("Configuring Timer 0 Stepper\n\r");
    ConfigureTc0_Stepper();	//Timer for Stepper
	
	//-------- Timer 1 for heater PWM --------------
	printf("Configuring Timer 1 PWM.\n\r");
	ConfigureTc_1();

	//-------- Init Planner Values --------------
	printf("Plan Init\n\r");
	plan_init();
	
	//-------- Check for SD card presence -------
//	sdcard_handle_state();
	
	//motor_enaxis(0,1);
    //motor_enaxis(1,1);
	while (1)
	{
  		//uncomment to use//sprinter_mainloop();
    	//main loop events go here

		do_periodic();
    	
		if(buflen < (BUFSIZE-1))
			get_command();

    	if(buflen > 0)
		{
			
			//-------- Check and execute G-CODE --------------
			process_commands();

			//-------- Increment G-Code FIFO  --------------
			buflen = (buflen-1);
			bufindr++;
			if(bufindr == BUFSIZE) bufindr = 0;
			
		}
		  
    }
}
예제 #3
0
파일: main.c 프로젝트: uriahjb/symphotron
int main( void )
{
    mInit();
    mUSBInit();
    //mBusInit();
    
    bQueue in_q;
    bQueue out_q;
    bQueueInit( &in_q );
    bQueueInit( &out_q );
    usbIface usb;
    usbIfaceInit( &usb, &in_q, &out_q );
    
    // Set up midi parser
    midiParser parser;
    midiParserInit( &parser, &in_q );
    midiMsg msg;
    
    picker_setup();
    stepper_setup();
    set_timer5 (60000,30000,1200);
   
    setMode( STEP_HALF );
    setSpeedLimits( 65, 200 );
    set_speed(m_speed_min);
    setAccelerationLimit(200);
    
    int test=0;
    
    //    uint16_t pos[]={0,-180,0,-360,0,-540,0,-720,-900,0};
    //    uint16_t dur[]={1000,1000,1000,1000};
    
    uint16_t pos=0;
    /*
    //set_speed(m_speed_min);
    int i=0;
    update(0);
    //    TIM_Cmd(TIM5, DISABLE);
    accStop();
    setPosition(0);
    */
    int Sflag=0;
    
    
    //strum_delay(1);
    while(1)
    {
        //        test = update(pos);
        //        if(test==1){
        //            if(Sflag==1){
        //                strum();
        //                Sflag=0;
        //            }
        //        }
        update(pos);    
        
        usbIfaceReadBytes(&usb);
        if(midiParserHasMsg(&parser,&msg)){
            mGreenTOGGLE;
            usbIfacePrintf(&usb, "status  %02x\n",msg.status);
            usbIfacePrintf(&usb, "channel %02x\n",msg.channel);
            usbIfacePrintf(&usb, "data[0] %02x\n",msg.data[0]);
            usbIfacePrintf(&usb, "data[1] %02x\n\n",msg.data[1]);
            if(msg.channel == INSTRUMENT_CHANNEL || msg.channel == BOTH_CHANNEL) {
              if(msg.status==NOTE_ON){
                  strum();
                  Sflag=1;
                  switch(msg.data[0]){
                      case 40:
                        pos = E2;
                        break;
                      case 41:
                        pos = F2;
                        break;
                      case 42:
                        pos = FS2;
                        break;
                      case 43:
                        pos = G2;
                        break;
                      case 44:
                        pos = GS2;
                        break;
                      case 45:
                        pos = A2;
                        break;
                      case 46:
                        pos = AS2;
                        break;
                      case 47:
                        pos = B2;
                        break;
                      case 48:
                        pos = C3;
                        break;
                      case 49:
                        pos = CS3;
                        break;
                      case 50:
                        pos = D3;
                        break;
                      case 51:
                        pos = DS3;
                        break;
                      case 52:
                        pos = E3;
                        break;
                      case 53:
                        pos = F3;
                        break;
                      case 54:
                        pos = FS3;
                        break;
                      case 55:
                        pos = G3;
                        break;
                      case 56:
                        pos = GS3;
                        break;
                      case 57:
                        pos = A3;
                        break;
                      case 58:
                        pos = AS3;
                        break;
                      case 59:
                        pos = B3;
                        break;
                      case 60:
                        pos = C4;
                        break;
                      default:
                        break;

                    /*
                    case 57:
                        pos=A3;
                        break;
                    case 59:
                        pos=B3;
                        break;
                    case 60:
                        pos=C4;
                        break;
                    case 62:
                        pos=D4;
                        break;
                    case 64:
                        pos=E4;
                        break;
                        pos=F4;
                        break;
                    case 67:
                        pos=G4;
                        break;
                    case 69:
                        pos=A4;
                        break;
                    case 71:
                        pos=B4;
                        break;
                    case 72:
                        pos=C5;
                        break;
                    default:
                        break;
                    */
                  }
               }
            }
        }
        usbIfaceWriteBytes(&usb);
    }
}