/* * DriveFeedback.cpp * * Created: 4/23/2014 2:37:57 AM * Author: corwin */ #define AVG_DIN0 PC0 #define AVG_DIN0_INIT() (DDRC &= ~(1 << AVG_DIN0)) #define AVG_DIN0_READ() (PINC & (1 << AVG_DIN0)) #define AVG_DIN1 PC1 #define AVG_DIN1_INIT() (DDRC &= ~(1 << AVG_DIN1)) #define AVG_DIN1_READ() (PINC & (1 << AVG_DIN1)) #define AVG_DIN2 PC2 #define AVG_DIN2_INIT() (DDRC &= ~(1 << AVG_DIN2)) #define AVG_DIN2_READ() (PINC & (1 << AVG_DIN2)) #define AVG_DIN3 PC3 #define AVG_DIN3_INIT() (DDRC &= ~(1 << AVG_DIN3)) #define AVG_DIN3_READ() (PINC & (1 << AVG_DIN3)) #define AVG_DIN4 PC4 #define AVG_DIN4_INIT() (DDRC &= ~(1 << AVG_DIN4)) #define AVG_DIN4_READ() (PINC & (1 << AVG_DIN4)) #define AVG_DIN5 PC5 #define AVG_DIN5_INIT() (DDRC &= ~(1 << AVG_DIN5)) #define AVG_DIN5_READ() (PINC & (1 << AVG_DIN5)) #define AVG_DIN6 PD2 //Note change to PORTD #define AVG_DIN6_INIT() (DDRD &= ~(1 << AVG_DIN6)) #define AVG_DIN6_READ() (PIND & (1 << AVG_DIN6)) #define AVG_DIN7 PD3 #define AVG_DIN7_INIT() (DDRD &= ~(1 << AVG_DIN7)) #define AVG_DIN7_READ() (PIND & (1 << AVG_DIN7)) #define AVG_OE PD4 #define AVG_OE_INIT() (DDRD |= (1 << AVG_OE)) #define AVG_OE_SET() (PORTD |= (1 << AVG_OE)) #define AVG_OE_CLR() (PORTD &= ~(1 << AVG_OE)) #define AVG_SEL1 PD5 #define AVG_SEL1_INIT() (DDRD |= (1 << AVG_SEL1)) #define AVG_SEL1_SET() (PORTD |= (1 << AVG_SEL1)) #define AVG_SEL1_CLR() (PORTD &= ~(1 << AVG_SEL1)) #define AVG_SEL2 PD6 #define AVG_SEL2_INIT() (DDRD |= (1 << AVG_SEL2)) #define AVG_SEL2_SET() (PORTD |= (1 << AVG_SEL2)) #define AVG_SEL2_CLR() (PORTD &= ~(1 << AVG_SEL2)) #define AVG_RSTY PD7 #define AVG_RSTY_INIT() (DDRD |= (1 << AVG_RSTY)) #define AVG_RSTY_SET() (PORTD |= (1 << AVG_RSTY)) #define AVG_RSTY_CLR() (PORTD &= ~(1 << AVG_RSTY)) #define AVG_RSTX PB1 #define AVG_RSTX_INIT() (DDRB |= (1 << AVG_RSTX)) #define AVG_RSTX_SET() (PORTB |= (1 << AVG_RSTX)) #define AVG_RSTX_CLR() (PORTB &= ~(1 << AVG_RSTX)) #define AVG_XYSEL PB2 #define AVG_XYSEL_INIT() (DDRB |= (1 << AVG_XYSEL)) #define AVG_XYSEL_SET() (PORTB |= (1 << AVG_XYSEL)) #define AVG_XYSEL_CLR() (PORTB &= ~(1 << AVG_XYSEL)) #define SERIALTX PD1 #define SERIALTX_INIT() (DDRD |= (1 << SERIALTX)) #define SERIALRX PD0 #define SERIALRX_INIT() (DDRD &= ~(1 << SERIALRX)) #define F_CPU 16000000UL #include #include #include unsigned long LeftValBuffer = 0UL; unsigned long RightValBuffer = 0UL; char SendBuffer[100]; void PinsInit(){ AVG_DIN0_INIT(); AVG_DIN1_INIT(); AVG_DIN2_INIT(); AVG_DIN3_INIT(); AVG_DIN4_INIT(); AVG_DIN5_INIT(); AVG_DIN6_INIT(); AVG_DIN7_INIT(); AVG_OE_INIT(); AVG_SEL1_INIT(); AVG_SEL2_INIT(); AVG_RSTY_INIT(); AVG_RSTX_INIT(); AVG_XYSEL_INIT(); AVG_RSTX_SET(); AVG_RSTY_SET(); AVG_XYSEL_CLR(); SERIALTX_INIT(); SERIALRX_INIT(); } void SerialInit(double newbaud){ int baud_prescaller = ((F_CPU / (newbaud * 16UL)) - 1); UBRR0H = (baud_prescaller >> 8); UBRR0L = baud_prescaller; // Enable transmitter and receiver UCSR0B = (1 << TXEN0 | 1 << RXEN0 | 1 << RXCIE0); // Set frame format: 8data, 1stop bit UCSR0C = ((1<