Convert some AVR GPIO operations to macros (#23424)

This commit is contained in:
Ryan 2024-05-02 19:48:49 +10:00 committed by GitHub
parent 7220715dd1
commit 61c7c1f74c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
71 changed files with 877 additions and 840 deletions

View file

@ -65,8 +65,8 @@ void matrix_init(void)
#endif
// 85 REST
DDRD |= _BV(PD7);
PORTD |= _BV(PD7);
gpio_set_pin_output(D7);
gpio_write_pin_high(D7);
// initialize row and col
init_rows();
@ -143,36 +143,35 @@ static void init_cols(void)
DDRD &= 0b00011100;
PORTD |= 0b11100011;
DDRB &= ~(_BV(PB6) | _BV(PB7)| _BV(PB0));
PORTB |= (_BV(PB6) | _BV(PB7)| _BV(PB0));
gpio_set_pin_input_high(B0);
gpio_set_pin_input_high(B6);
gpio_set_pin_input_high(B7);
DDRE &= ~_BV(PE6);
PORTE |= _BV(PE6);
gpio_set_pin_input_high(E6);
DDRC &= ~_BV(PC7);
PORTC |= _BV(PC7);
gpio_set_pin_input_high(C7);
}
static matrix_row_t read_cols(void)
{
return (PINF&_BV(PF7) ? 0 : (1<<0)) |
(PINF&_BV(PF6) ? 0 : (1<<1)) |
(PINF&_BV(PF5) ? 0 : (1<<2)) |
(PINF&_BV(PF4) ? 0 : (1<<3)) |
(PINF&_BV(PF1) ? 0 : (1<<4)) |
(PINF&_BV(PF0) ? 0 : (1<<5)) |
(PINE&_BV(PE6) ? 0 : (1<<6)) |
(PIND&_BV(PD7) ? 0 : (1<<7)) |
(PIND&_BV(PD6) ? 0 : (1<<8)) |
(PIND&_BV(PD5) ? 0 : (1<<9)) |
(PIND&_BV(PD1) ? 0 : (1<<10)) |
(PIND&_BV(PD0) ? 0 : (1<<11)) |
(PINB&_BV(PB7) ? 0 : (1<<12)) |
(PINB&_BV(PB6) ? 0 : (1<<13)) |
(PINB&_BV(PB0) ? 0 : (1<<14)) |
(PINC&_BV(PC7) ? 0 : (1<<15));
return (gpio_read_pin(F7) ? 0 : (1<<0)) |
(gpio_read_pin(F6) ? 0 : (1<<1)) |
(gpio_read_pin(F5) ? 0 : (1<<2)) |
(gpio_read_pin(F4) ? 0 : (1<<3)) |
(gpio_read_pin(F1) ? 0 : (1<<4)) |
(gpio_read_pin(F0) ? 0 : (1<<5)) |
(gpio_read_pin(E6) ? 0 : (1<<6)) |
(gpio_read_pin(D7) ? 0 : (1<<7)) |
(gpio_read_pin(D6) ? 0 : (1<<8)) |
(gpio_read_pin(D5) ? 0 : (1<<9)) |
(gpio_read_pin(D1) ? 0 : (1<<10)) |
(gpio_read_pin(D0) ? 0 : (1<<11)) |
(gpio_read_pin(B7) ? 0 : (1<<12)) |
(gpio_read_pin(B6) ? 0 : (1<<13)) |
(gpio_read_pin(B0) ? 0 : (1<<14)) |
(gpio_read_pin(C7) ? 0 : (1<<15));
}
/* Row pin configuration
@ -184,21 +183,23 @@ static matrix_row_t read_cols(void)
static void init_rows(void)
{
DDRB |= (1<<PB1 | 1<<PB2 | 1<<PB3);
gpio_set_pin_input(B1);
gpio_set_pin_input(B2);
gpio_set_pin_input(B3);
}
static void unselect_rows(void)
{
// Hi-Z(DDR:0, PORT:0) to unselect
PORTB |= (1<<PB1);
PORTB |= (1<<PB2);
PORTB |= (1<<PB3);
gpio_write_pin_high(B1);
gpio_write_pin_high(B2);
gpio_write_pin_high(B3);
}
static void select_row(uint8_t row)
{
// Output low(DDR:1, PORT:0) to select
(row & (1<<0)) ? (PORTB |= (1<<PB3)) : (PORTB &= ~(1<<PB3));
(row & (1<<1)) ? (PORTB |= (1<<PB2)) : (PORTB &= ~(1<<PB2));
(row & (1<<2)) ? (PORTB |= (1<<PB1)) : (PORTB &= ~(1<<PB1));
gpio_write_pin(B3, row & (1<<0));
gpio_write_pin(B2, row & (1<<1));
gpio_write_pin(B1, row & (1<<2));
}