diff options
| author | Jack Humbert <jack.humb@gmail.com> | 2018-11-02 12:31:40 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-02 12:31:40 -0400 |
| commit | 15f6278aa623ceda4c220daee1cbedb9e38e6a97 (patch) | |
| tree | be1f80786f810c75d0f914899d299c530664d324 /quantum/config_common.h | |
| parent | 5909d8aef1126357899b687155bfe377914891df (diff) | |
| download | qmk_firmware-15f6278aa623ceda4c220daee1cbedb9e38e6a97.tar.gz qmk_firmware-15f6278aa623ceda4c220daee1cbedb9e38e6a97.zip | |
Add support for Atmega32A to pin declarations and universal matrix (#4015)
* add computed pins from mcu type
* update for atmega32a
* doc typo
* add atmega16 chips, link to references
* remove avr include from config
* exclude assembler in config.h includes
* consolodate options, add 646
* fix typo in pindef
Diffstat (limited to 'quantum/config_common.h')
| -rw-r--r-- | quantum/config_common.h | 156 |
1 files changed, 102 insertions, 54 deletions
diff --git a/quantum/config_common.h b/quantum/config_common.h index 288617255..cbff372ea 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* Copyright 2015-2017 Jack Humbert | 1 | /* Copyright 2015-2018 Jack Humbert |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| @@ -14,8 +14,7 @@ | |||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | #ifndef CONFIG_DEFINITIONS_H | 17 | #pragma once |
| 18 | #define CONFIG_DEFINITIONS_H | ||
| 19 | 18 | ||
| 20 | /* diode directions */ | 19 | /* diode directions */ |
| 21 | #define COL2ROW 0 | 20 | #define COL2ROW 0 |
| @@ -23,57 +22,108 @@ | |||
| 23 | #define CUSTOM_MATRIX 2 /* Disables built-in matrix scanning code */ | 22 | #define CUSTOM_MATRIX 2 /* Disables built-in matrix scanning code */ |
| 24 | 23 | ||
| 25 | #ifdef __AVR__ | 24 | #ifdef __AVR__ |
| 25 | #ifndef __ASSEMBLER__ | ||
| 26 | #include <avr/io.h> | ||
| 27 | #endif | ||
| 28 | #define PORT_SHIFTER 4 // this may be 4 for all AVR chips | ||
| 29 | |||
| 30 | // If you want to add more to this list, reference the PINx definitions in these header | ||
| 31 | // files: https://github.com/vancegroup-mirrors/avr-libc/tree/master/avr-libc/include/avr | ||
| 32 | |||
| 33 | #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__) | ||
| 34 | #define ADDRESS_BASE 0x00 | ||
| 35 | #define PINB_ADDRESS 0x3 | ||
| 36 | #define PINC_ADDRESS 0x6 | ||
| 37 | #define PIND_ADDRESS 0x9 | ||
| 38 | #define PINE_ADDRESS 0xC | ||
| 39 | #define PINF_ADDRESS 0xF | ||
| 40 | #elif defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) | ||
| 41 | #define ADDRESS_BASE 0x00 | ||
| 42 | #define PINB_ADDRESS 0x3 | ||
| 43 | #define PINC_ADDRESS 0x6 | ||
| 44 | #define PIND_ADDRESS 0x9 | ||
| 45 | #elif defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) | ||
| 46 | #define ADDRESS_BASE 0x00 | ||
| 47 | #define PINA_ADDRESS 0x0 | ||
| 48 | #define PINB_ADDRESS 0x3 | ||
| 49 | #define PINC_ADDRESS 0x6 | ||
| 50 | #define PIND_ADDRESS 0x9 | ||
| 51 | #define PINE_ADDRESS 0xC | ||
| 52 | #define PINF_ADDRESS 0xF | ||
| 53 | #elif defined(__AVR_ATmega32A__) | ||
| 54 | #define ADDRESS_BASE 0x10 | ||
| 55 | #define PIND_ADDRESS 0x0 | ||
| 56 | #define PINC_ADDRESS 0x3 | ||
| 57 | #define PINB_ADDRESS 0x6 | ||
| 58 | #define PINA_ADDRESS 0x9 | ||
| 59 | #else | ||
| 60 | #error "Pins are not defined" | ||
| 61 | #endif | ||
| 62 | |||
| 26 | /* I/O pins */ | 63 | /* I/O pins */ |
| 27 | #ifndef F0 | 64 | #define PINDEF(port, pin) ((PIN##port##_ADDRESS << PORT_SHIFTER) | pin) |
| 28 | #define B0 0x30 | 65 | |
| 29 | #define B1 0x31 | 66 | #ifdef PORTA |
| 30 | #define B2 0x32 | 67 | #define A0 PINDEF(A, 0) |
| 31 | #define B3 0x33 | 68 | #define A1 PINDEF(A, 1) |
| 32 | #define B4 0x34 | 69 | #define A2 PINDEF(A, 2) |
| 33 | #define B5 0x35 | 70 | #define A3 PINDEF(A, 3) |
| 34 | #define B6 0x36 | 71 | #define A4 PINDEF(A, 4) |
| 35 | #define B7 0x37 | 72 | #define A5 PINDEF(A, 5) |
| 36 | #define C0 0x60 | 73 | #define A6 PINDEF(A, 6) |
| 37 | #define C1 0x61 | 74 | #define A7 PINDEF(A, 7) |
| 38 | #define C2 0x62 | 75 | #endif |
| 39 | #define C3 0x63 | 76 | #ifdef PORTB |
| 40 | #define C4 0x64 | 77 | #define B0 PINDEF(B, 0) |
| 41 | #define C5 0x65 | 78 | #define B1 PINDEF(B, 1) |
| 42 | #define C6 0x66 | 79 | #define B2 PINDEF(B, 2) |
| 43 | #define C7 0x67 | 80 | #define B3 PINDEF(B, 3) |
| 44 | #define D0 0x90 | 81 | #define B4 PINDEF(B, 4) |
| 45 | #define D1 0x91 | 82 | #define B5 PINDEF(B, 5) |
| 46 | #define D2 0x92 | 83 | #define B6 PINDEF(B, 6) |
| 47 | #define D3 0x93 | 84 | #define B7 PINDEF(B, 7) |
| 48 | #define D4 0x94 | ||
| 49 | #define D5 0x95 | ||
| 50 | #define D6 0x96 | ||
| 51 | #define D7 0x97 | ||
| 52 | #define E0 0xC0 | ||
| 53 | #define E1 0xC1 | ||
| 54 | #define E2 0xC2 | ||
| 55 | #define E3 0xC3 | ||
| 56 | #define E4 0xC4 | ||
| 57 | #define E5 0xC5 | ||
| 58 | #define E6 0xC6 | ||
| 59 | #define E7 0xC7 | ||
| 60 | #define F0 0xF0 | ||
| 61 | #define F1 0xF1 | ||
| 62 | #define F2 0xF2 | ||
| 63 | #define F3 0xF3 | ||
| 64 | #define F4 0xF4 | ||
| 65 | #define F5 0xF5 | ||
| 66 | #define F6 0xF6 | ||
| 67 | #define F7 0xF7 | ||
| 68 | #define A0 0x00 | ||
| 69 | #define A1 0x01 | ||
| 70 | #define A2 0x02 | ||
| 71 | #define A3 0x03 | ||
| 72 | #define A4 0x04 | ||
| 73 | #define A5 0x05 | ||
| 74 | #define A6 0x06 | ||
| 75 | #define A7 0x07 | ||
| 76 | #endif | 85 | #endif |
| 86 | #ifdef PORTC | ||
| 87 | #define C0 PINDEF(C, 0) | ||
| 88 | #define C1 PINDEF(C, 1) | ||
| 89 | #define C2 PINDEF(C, 2) | ||
| 90 | #define C3 PINDEF(C, 3) | ||
| 91 | #define C4 PINDEF(C, 4) | ||
| 92 | #define C5 PINDEF(C, 5) | ||
| 93 | #define C6 PINDEF(C, 6) | ||
| 94 | #define C7 PINDEF(C, 7) | ||
| 95 | #endif | ||
| 96 | #ifdef PORTD | ||
| 97 | #define D0 PINDEF(D, 0) | ||
| 98 | #define D1 PINDEF(D, 1) | ||
| 99 | #define D2 PINDEF(D, 2) | ||
| 100 | #define D3 PINDEF(D, 3) | ||
| 101 | #define D4 PINDEF(D, 4) | ||
| 102 | #define D5 PINDEF(D, 5) | ||
| 103 | #define D6 PINDEF(D, 6) | ||
| 104 | #define D7 PINDEF(D, 7) | ||
| 105 | #endif | ||
| 106 | #ifdef PORTE | ||
| 107 | #define E0 PINDEF(E, 0) | ||
| 108 | #define E1 PINDEF(E, 1) | ||
| 109 | #define E2 PINDEF(E, 2) | ||
| 110 | #define E3 PINDEF(E, 3) | ||
| 111 | #define E4 PINDEF(E, 4) | ||
| 112 | #define E5 PINDEF(E, 5) | ||
| 113 | #define E6 PINDEF(E, 6) | ||
| 114 | #define E7 PINDEF(E, 7) | ||
| 115 | #endif | ||
| 116 | #ifdef PORTF | ||
| 117 | #define F0 PINDEF(F, 0) | ||
| 118 | #define F1 PINDEF(F, 1) | ||
| 119 | #define F2 PINDEF(F, 2) | ||
| 120 | #define F3 PINDEF(F, 3) | ||
| 121 | #define F4 PINDEF(F, 4) | ||
| 122 | #define F5 PINDEF(F, 5) | ||
| 123 | #define F6 PINDEF(F, 6) | ||
| 124 | #define F7 PINDEF(F, 7) | ||
| 125 | #endif | ||
| 126 | |||
| 77 | #elif defined(PROTOCOL_CHIBIOS) | 127 | #elif defined(PROTOCOL_CHIBIOS) |
| 78 | #define A0 PAL_LINE(GPIOA, 0) | 128 | #define A0 PAL_LINE(GPIOA, 0) |
| 79 | #define A1 PAL_LINE(GPIOA, 1) | 129 | #define A1 PAL_LINE(GPIOA, 1) |
| @@ -200,5 +250,3 @@ | |||
| 200 | #define API_SYSEX_MAX_SIZE 32 | 250 | #define API_SYSEX_MAX_SIZE 32 |
| 201 | 251 | ||
| 202 | #include "song_list.h" | 252 | #include "song_list.h" |
| 203 | |||
| 204 | #endif | ||
