diff options
author | tmk <nobody@nowhere> | 2014-11-24 15:36:53 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2014-11-24 15:36:53 +0900 |
commit | ed52ebb9870a26496b13a0565c1aaca8ded3465b (patch) | |
tree | cddad806a3408e05bc29310254c564ee94e3e710 /protocol/ps2_io_avr.c | |
parent | eb90ed6238426db9367e294abfaefb5de07564f5 (diff) | |
parent | e2077cad45f1736e878e317c43bd94117c61b5e0 (diff) | |
download | qmk_firmware-ed52ebb9870a26496b13a0565c1aaca8ded3465b.tar.gz qmk_firmware-ed52ebb9870a26496b13a0565c1aaca8ded3465b.zip |
Merge branch 'merge_rn42'
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 0000000000..be13d6696a --- /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); +} |