config.h (1270B)
1 #pragma once 2 3 4 #ifdef PS2_DRIVER_USART 5 #define PS2_CLOCK_PIN D5 6 #define PS2_DATA_PIN D2 7 8 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ 9 /* set DDR of CLOCK as input to be slave */ 10 #define PS2_USART_INIT() do { \ 11 PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \ 12 PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \ 13 UCSR1C = ((1 << UMSEL10) | \ 14 (3 << UPM10) | \ 15 (0 << USBS1) | \ 16 (3 << UCSZ10) | \ 17 (0 << UCPOL1)); \ 18 UCSR1A = 0; \ 19 UBRR1H = 0; \ 20 UBRR1L = 0; \ 21 } while (0) 22 #define PS2_USART_RX_INT_ON() do { \ 23 UCSR1B = ((1 << RXCIE1) | \ 24 (1 << RXEN1)); \ 25 } while (0) 26 #define PS2_USART_RX_POLL_ON() do { \ 27 UCSR1B = (1 << RXEN1); \ 28 } while (0) 29 #define PS2_USART_OFF() do { \ 30 UCSR1C = 0; \ 31 UCSR1B &= ~((1 << RXEN1) | \ 32 (1 << TXEN1)); \ 33 } while (0) 34 #define PS2_USART_RX_READY (UCSR1A & (1<<RXC1)) 35 #define PS2_USART_RX_DATA UDR1 36 #define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1))) 37 #define PS2_USART_RX_VECT USART1_RX_vect 38 #endif