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); } }
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 } }
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); */ } }
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; } } }
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(); } }}