示例#1
0
int main(void)
{
  unsigned char write_data=0x75, recv_data;
  int testn=0;
  USART_init();
  print_UART(" This is the test for TWI ");

  _delay_ms(1000);
  PORTD |= 0x80; ///turn led on
  _delay_ms(100);
  TWI_init_master();
  sei();
  print_UART(" Sending Start condition ");
  TWI_start();
  print_UART(" address= %x ", ((address<<1)|write));
  TWI_write_address((address<<1)|write);
  print_UART(" writing register = %x ", write_data);
  TWI_write_byte(write_data); //write register
  print_UART(" Repeat Start ");
  TWI_start(); //repeated start
  print_UART(" address read= %x ", ((address<<1)|read));
  TWI_write_address((address<<1)|read);
   print_UART(" read Data ");
  recv_data=TWI_read_byte(1); ///read byte and nack
  TWI_stop();
  print_UART(" This is the value of the register= %x  ", recv_data);
  PORTD &= 0x7F;
    
 
  return 0;
}
int main(void)
{
	_delay_ms(2000);
	DDRB=0xff;
	TWI_init_master();  // Function to initialize TWI
	while(1)
	{
		if(write_data==0x00)
		write_data=1;
		
		TWI_start(); // Function to send start condition
		TWI_write_address(address+write); // Function to write address and data direction bit(write) on SDA
		TWI_write_data(255);      // Function to write data in slave
		TWI_stop(); // Function to send stop condition
		
		
		_delay_ms(100); // Delay of 10 mili second
		
		PORTB=0xff;
		TWI_start();
		TWI_read_address(address+read); // Function to write address and data direction bit(read) on SDA
		TWI_read_data(); // Function to read data from slave
		TWI_stop();
		
		_delay_ms(2000);
	}
	
	
}
示例#3
0
int main(void)
{
	
	TWI_init_master();		// Initialize TWI (I2C) communication
	
			
	DDRD &= ~(1<<DDD2);		// Set SWITCH1 on PD2 as input
	DDRD &= ~(1<<DDD3);		// Set SWITCH2 on PD3 as input
	
	
	PCICR |= (1<<PCIE2);					// Enable interrupt requests on pins PCINT23..16
	PCMSK2 |= (1<<PCINT18)|(1<<PCINT19);	// Enable interrupt on PB2 (PCINT18) and PB3 (PCINT19)
	
	sei();
	
	while(1)
	{
		// Do nothing
	}
	
}
示例#4
0
int main(void)
{
	PORTG=255;
	_delay_ms(2000);
	
	#define F_CPU 16000000UL
	unsigned char temp;
	//Init_LED();  
	uart_1_ini();
	
	while (temp=='P')
	{
	temp=USART1_Recieve();	
	}
	temp=0;
	while (temp<5)
	{
		uart_1_Transmit('o');
	temp++;
	 }
	
	
		
		UCSR1B=((1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1));
	PORTG=0;	
	TWI_init_master(); 
	//kalmaninit();
	PORTG=255;
	uart_1_Transmit('B');
	_delay_ms(200);     
	cli();                //Initialize Gyro
	InitHMC();
	PORTG=0;    //Enable Global Interrupt
	DDRA=0;
	DDRD=0b00001011;
	PORTA=255;
	DDRF=0;
	//ADCSRA=(1<<ADEN);//|(1<<ADFR);	
	_delay_ms(5);	
	cleargyro(); 
	zero_error(); 	
	sei();
	
	PORTG=0;
	//uart_1_Transmit('C');

	//uart_1_Transmit('L');	
    //init_timer();
	//_delay_ms(500);
	
	/*_delay_ms(2000);
	
	setspeed(front,100);
	setspeed(left,0);
	setspeed(right,0);
	setspeed(back,0);
	
	_delay_ms(500);
	
	setspeed(front,0);
	setspeed(left,100);
	setspeed(right,0);
	setspeed(back,0);
	
	_delay_ms(1000);
	
	setspeed(front,0);
	setspeed(left,0);
	setspeed(right,100);
	setspeed(back,0);
	
	_delay_ms(1000);
	
	setspeed(front,0);
	setspeed(left,0);
	setspeed(right,0);
	setspeed(back,100);
	
	_delay_ms(2000);
	
	setspeed(front,0);
	setspeed(left,0);
	setspeed(right,0);
	setspeed(back,0);
	*/
	//OCR0=18;
	int i,countera=0;
	
	
	//
	//while(1)
	//{
			//PORTG=255;
			//_delay_ms(1000);
		//	PORTG=0;
			//_delay_ms(1000);
	//}
	while(1)
	{
		
	
		
		/*	  PORTG=!(PORTG);
				frontmotor=ontime_1;
				backmotor=ontime_1;
				rightmotor=ontime_1;
				leftmotor=ontime_1;
		*/
				
		 //if (X_angle>4 || X_angle < (-4))
		//{
		//
		//leftmotor=leftmotor-Y_angle*0.3;
		//rightmotor=rightmotor+Y_angle*0.3;
		//} 
		
		
		
				if(X_angle>X_angle_prev)
				X_error=X_angle-X_angle_prev;
				else
				X_error=X_angle_prev-X_angle;
				
				X_integ =X_integ+Xangle;
				if (X_integ>=5000)
					X_integ=5000;
				if (X_integ<=-5000)
				X_integ=-5000;
				countera++;
				
				
		if (X_angle>2)
		{
		float kp=0.8;
		float kd=0.6;
		float ki=0.005;
		leftmotor=ontime_1+kp*X_angle+kd*X_error+ki*X_integ;
		if(leftmotor<0)
			leftmotor=0;
		rightmotor=ontime_1-kp*X_angle-kd*X_error-ki*X_integ;	
		if(rightmotor<0)
			rightmotor=0;
		X_angle_prev=X_angle;
		}
		else if (X_angle<-2)
		{
		float kp=0.8;
		float kd=0.6;
		float ki=0.005;  // 0.0012
		leftmotor=ontime_1+kp*X_angle-kd*X_error+ki*X_integ;
		if(leftmotor<0)
			leftmotor=0;
		rightmotor=ontime_1-kp*X_angle+kd*X_error-ki*X_integ;	
		if(rightmotor<0)
			rightmotor=0;
		X_angle_prev=X_angle;
		}
		else
		{
			rightmotor=ontime_1;
			leftmotor=ontime_1;
		}			
				
			leftmotor=ontime_1;
			rightmotor=ontime_1;
		//setspeed(front,frontmotor);
		setspeed(left,leftmotor);
		setspeed(right,rightmotor);
		////setspeed(back,backmotor);	
		//
		
		//uart_1_Transmit('Y');
		//uartWriteInt(Y_angle,4);
		//uart_1_Transmit('y');
		//uartWriteInt(Yangle,4);
		//uart_1_Transmit('X');
		//uartWriteInt(Xangle,4);
		uart_1_Transmit('X');
		uartWriteInt(Xangle,4);
		uart_1_Transmit('x');
		uartWriteInt(yangle,4);
		
		//uart_1_Transmit('Y');
		//uartWriteInt(Yangle,4);
		uart_1_Transmit('Y');
		uartWriteInt(Yangle,4);
		uart_1_Transmit('y');
		uartWriteInt(xangle,4);
		//uart_1_Transmit('Z');
		//uartWriteInt(zacc*100,4);
		//uart_1_Transmit('I');
        //uartWriteInt(X_integ,6);
		//uart_1_Transmit('C');
        //uartWriteInt(countera,6);
		
		uart_1_Transmit(13);
		//uart_1_Transmit('Y');
		//uartWriteInt(yacc*100,4);
		//uart_1_Transmit('X');
		//uartWriteInt(xacc*100,4);
		
	////	*/
        /*uart_1_Transmit('F');
	    uartWriteInt(frontmotor,4);
		uart_1_Transmit('B');
	    uartWriteInt(backmotor,4);
		uart_1_Transmit('R');
		uartWriteInt(load,1);
////		*/
		/*
		uart_1_Transmit('L');
		uartWriteInt(load,1);
		uart_1_Transmit('L');
		uart_1_Transmit('&');
		uartWriteInt(mean_1,3);
		uart_1_Transmit('&');
		uartWriteInt(mean_2,3);	
		uart_1_Transmit('&');
		uartWriteInt(ontime_1,4);
		uart_1_Transmit('&');
		uartWriteInt(ontime_2,4);
		uart_1_Transmit('&');
		uartWriteInt(ontime_3,4);
		*/
		
	}
}
示例#5
0
int main()
{
    int16_t length=0,adc_value1,adc_value2;
    uint8_t i;
    DELAY_ms(100);
    ADC_Init();
    TIMSK = 0x00;
    DDRB= 0xff;
    DDRC = 0xff;
    DDRD = 0xff;
    PORTC = 0xff;



    while(1)
    {

        switch(state)
        {
        case E_Init:
            DELAY_ms(200);
            ADC_Init();
            adc_value1 = ADC_GetAdcValue(6);
            adc_value2 = ADC_GetAdcValue(7);

           // UART_Init(BAUD_RATE);
          //  sw_uart_init();
            StartDisplayTimer();

            sei();
          //  GetFont('1',pattern);

            while(1);
            MsgLength = strlen(inputBuffer);


            if( (adc_value1 >= 600) && (adc_value2 >= 600) )
            {
                deviceType = MASTER;
            }
            else
            {
                deviceType = SLAVE;
            }

            state = E_StartArbitration;
            break;

        case E_StartArbitration:

            GetFont(((MyDeviceId-0x30)/2)+0x30,pattern);
            if(deviceType == MASTER)
            {
                DELAY_ms(500);

                TCCR2 = 0x00;
                TIMSK = 0x01;
                TWI_init_master();
                state = E_MasterDisp;
            }
            else
            {
                if(IdConfirmed == 1)
                {
                    DELAY_ms(250);

                    TCCR2 = 0x00;
                    TIMSK = 0x01;
                    DisableHwUartComm();
                    TWI_init_slave(MyDeviceId);
                    state = E_SlaveDisp;
                }
            }
            break;


        case E_MasterDisp:

            if(NewMsgReceived!=0)
            {

                MsgLength = NewMsgLength;
                NewMsgReceived = 0;
                NewMsgLength = 0;
            }

            strcpy(msgBuffer,inputBuffer);

            if(MsgLength > NumberOfSegments)
            {
                ScrollString(msgBuffer);
            }
            else
            {

                DisplayString(msgBuffer);
            }

            break;

        case E_SlaveDisp:

            TWI_Receive_Frame(FrameBuffer);
            for(i=0;i<8;i++)
                pattern[i] = FrameBuffer[i];

            break;
        }
    }
}
示例#6
0
int main(void)
{
	//int flag;
	
	TWI_init_master();
	_delay_ms(100);
	//sei();
	//_delay_ms(1000);
	InitLCD(0);
	_delay_ms(50);
	LCDClear();
	_delay_ms(10);
    uart_0_ini();
	uart_1_ini();
        Init_LED();
		sei();
		_delay_ms(50);
		
		LCD(0,0,"VIT");
		_delay_ms(500);
		LCDClear();
		_delay_ms(10);
		LCD(0,0,"SURACSHA");
		_delay_ms(100);
		LCDClear();
		_delay_ms(100);
	
	
		while (1)
		{
LCDvar(0,0,Y_Data,5);
 		if (Y_Data > 2000 || Y_Data < -2000 ||X_Data > 2000 || X_Data < -2000||Z_Data > 2000 || Z_Data < -2000)
 		{
				_delay_ms(50);
 					LCDClear();
 					_delay_ms(70);
 				LCD(0,1,"accident Happned");
 				//flag=1;
 				glow3();
 				glow4();

 				 LCDGotoXY(0,0);
			LCDWriteString("Waiting for GPS");
 			while(valid!='A');
 			 LCDClear();
				 _delay_ms(100);
			 LCDGotoXY(0,0);
 			LCDWriteString("Fix Available");
 				_delay_ms(2000);
				 LCDClear();
				 _delay_ms(100);
 				 sendlocation("9503139115");
 				//break;
 		}		
 		else
 		{_delay_ms(70);
 		 LCDGotoXY(0,1);
	LCDWriteString("Normal");
 		glow2();
 		glow3();
 		_delay_ms(50);
 		off2();
 		off3();
 
	}

			
		 }}