diff options
author | tmk <nobody@nowhere> | 2014-07-30 14:37:05 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2014-07-30 14:37:05 +0900 |
commit | adbb86b1ec8b07e86ae7425374e95b82122e48a7 (patch) | |
tree | 0a02e89376f69ef975096af9490034725d8eb751 /protocol/ps2_io_avr.c | |
parent | 79840c678e13f9a737f80048bc3b9c9c55e3fc77 (diff) | |
parent | a9f5f201ad6b009675fdf16c4447033cc2ac0995 (diff) | |
download | firmware-adbb86b1ec8b07e86ae7425374e95b82122e48a7.tar.gz firmware-adbb86b1ec8b07e86ae7425374e95b82122e48a7.tar.bz2 firmware-adbb86b1ec8b07e86ae7425374e95b82122e48a7.zip |
Merge branch 'mbed' into dev
Diffstat (limited to 'protocol/ps2_io_avr.c')
-rw-r--r-- | protocol/ps2_io_avr.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/protocol/ps2_io_avr.c b/protocol/ps2_io_avr.c new file mode 100644 index 000000000..be13d6696 --- /dev/null +++ b/protocol/ps2_io_avr.c @@ -0,0 +1,74 @@ +#include <stdbool.h> +#include <util/delay.h> + +/* Check port settings for clock and data line */ +#if !(defined(PS2_CLOCK_PORT) && \ + defined(PS2_CLOCK_PIN) && \ + defined(PS2_CLOCK_DDR) && \ + defined(PS2_CLOCK_BIT)) +# error "PS/2 clock port setting is required in config.h" +#endif + +#if !(defined(PS2_DATA_PORT) && \ + defined(PS2_DATA_PIN) && \ + defined(PS2_DATA_DDR) && \ + defined(PS2_DATA_BIT)) +# error "PS/2 data port setting is required in config.h" +#endif + + +/* + * Clock + */ +void clock_init(void) +{ +} + +void clock_lo(void) +{ + PS2_CLOCK_PORT &= ~(1<<PS2_CLOCK_BIT); + PS2_CLOCK_DDR |= (1<<PS2_CLOCK_BIT); +} + +void clock_hi(void) +{ + /* input with pull up */ + PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); + PS2_CLOCK_PORT |= (1<<PS2_CLOCK_BIT); +} + +bool clock_in(void) +{ + PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); + PS2_CLOCK_PORT |= (1<<PS2_CLOCK_BIT); + _delay_us(1); + return PS2_CLOCK_PIN&(1<<PS2_CLOCK_BIT); +} + +/* + * Data + */ +void data_init(void) +{ +} + +void data_lo(void) +{ + PS2_DATA_PORT &= ~(1<<PS2_DATA_BIT); + PS2_DATA_DDR |= (1<<PS2_DATA_BIT); +} + +void data_hi(void) +{ + /* input with pull up */ + PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); + PS2_DATA_PORT |= (1<<PS2_DATA_BIT); +} + +bool data_in(void) +{ + PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); + PS2_DATA_PORT |= (1<<PS2_DATA_BIT); + _delay_us(1); + return PS2_DATA_PIN&(1<<PS2_DATA_BIT); +} |