Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
530dd446cb | ||
|
22215a0e92 | ||
|
5319667c55 | ||
|
f10a0ae547 | ||
|
3d3716bbf7 |
@@ -61,10 +61,18 @@ This is a C header file that is one of the first things included, and will persi
|
||||
* COL2ROW or ROW2COL - how your matrix is configured. COL2ROW means the black mark on your diode is facing to the rows, and between the switch and the rows.
|
||||
* `#define AUDIO_VOICES`
|
||||
* turns on the alternate audio voices (to cycle through)
|
||||
* `#define C4_AUDIO`
|
||||
* enables audio on pin C4
|
||||
* `#define C5_AUDIO`
|
||||
* enables audio on pin C5
|
||||
* `#define C6_AUDIO`
|
||||
* enables audio on pin C6
|
||||
* `#define B5_AUDIO`
|
||||
* enables audio on pin B5 (duophony is enable if both are enabled)
|
||||
* enables audio on pin B5 (duophony is enables if one of B[5-7]_AUDIO is enabled along with one of C[4-6]_AUDIO)
|
||||
* `#define B6_AUDIO`
|
||||
* enables audio on pin B6 (duophony is enables if one of B[5-7]_AUDIO is enabled along with one of C[4-6]_AUDIO)
|
||||
* `#define B7_AUDIO`
|
||||
* enables audio on pin B7 (duophony is enables if one of B[5-7]_AUDIO is enabled along with one of C[4-6]_AUDIO)
|
||||
* `#define BACKLIGHT_PIN B7`
|
||||
* pin of the backlight - B5, B6, B7 use PWM, others use softPWM
|
||||
* `#define BACKLIGHT_LEVELS 3`
|
||||
|
@@ -1,6 +1,17 @@
|
||||
# Audio
|
||||
|
||||
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any AVR keyboard that allows access to the C6 or B5 port (`#define C6_AUDIO` and/or `#define B5_AUDIO`), you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
|
||||
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any AVR keyboard that allows access to certain PWM-capable pins, you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
|
||||
|
||||
Up to two simultaneous audio voices are supported, one driven by timer 1 and another driven by timer 3. The following pins can be defined as audio outputs in config.h:
|
||||
Timer 1:
|
||||
`#define B5_AUDIO`
|
||||
`#define B6_AUDIO`
|
||||
`#define B7_AUDIO`
|
||||
|
||||
Timer 3:
|
||||
`#define C4_AUDIO`
|
||||
`#define C5_AUDIO`
|
||||
`#define C6_AUDIO`
|
||||
|
||||
If you add `AUDIO_ENABLE = yes` to your `rules.mk`, there's a couple different sounds that will automatically be enabled without any other configuration:
|
||||
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "1up60rgb",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "AMJ96",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 19,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
|
@@ -1,8 +1,5 @@
|
||||
{
|
||||
"keyboard_name": "",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "",
|
||||
"width": 15.5,
|
||||
"height": 4.25,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Christmas Tree",
|
||||
"keyboard_folder": "christmas_tree",
|
||||
"url": "https://www.reddit.com/r/MechanicalKeyboards/comments/7cqxpf/gb_christmas_tree_pcb_gb_now_live/",
|
||||
"bootloader": "catarina",
|
||||
"maintainer": "That-Canadian",
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "CB 2x1800",
|
||||
"url": "",
|
||||
"maintainer": "skullydazed",
|
||||
"bootloader": "teensy",
|
||||
"width": 24,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "clueboard/60",
|
||||
"maintainer": "skullydazed",
|
||||
"url": "",
|
||||
"bootloader": "stm32-dfu-util",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"keyboard_name": "Clueboard 66%",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"keyboard_name": "Clueboard 66% HotSwap",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Contra",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "caterina",
|
||||
"width": 12,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
|
@@ -22,7 +22,7 @@
|
||||
// The following is an example using the Planck MIT layout
|
||||
// The first section contains all of the arguments
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KEYMAP( \
|
||||
#define LAYOUT_grid( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, k13, \
|
||||
k20, k21, k22, k23, \
|
||||
@@ -39,4 +39,23 @@
|
||||
{ k50, k51, k52, k53 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_numpad( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, k13, \
|
||||
k20, k21, k22, k23, \
|
||||
k30, k31, k32, \
|
||||
k40, k41, k42, k43, \
|
||||
k51, k52 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03 }, \
|
||||
{ k10, k11, k12, k13 }, \
|
||||
{ k20, k21, k22, k23 }, \
|
||||
{ k30, k31, k32, KC_NO }, \
|
||||
{ k40, k41, k42, k43 }, \
|
||||
{ KC_NO, k51, k52, KC_NO } \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
16
keyboards/cu24/info.json
Normal file
16
keyboards/cu24/info.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"keyboard_name": "cu24",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 4,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT_grid": {
|
||||
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"x":1, "y":4}, {"label":".", "x":2, "y":4}, {"x":3, "y":4}, {"x":0, "y":5}, {"x":1, "y":5}, {"x":2, "y":5}, {"x":3, "y":5}]
|
||||
},
|
||||
|
||||
"LAYOUT_numpad": {
|
||||
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"x":3, "y":2, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4}, {"x":1, "y":4}, {"label":".", "x":2, "y":4}, {"x":3, "y":4, "h":2}, {"x":0, "y":5, "w":2}, {"x":2, "y":5}]
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,7 +16,7 @@
|
||||
#include "cu24.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = KEYMAP( /* Base */
|
||||
[0] = LAYOUT_grid( /* Base */
|
||||
KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, \
|
||||
MO(1) , KC_PSLS, KC_PAST, KC_PMNS, \
|
||||
KC_P7 , KC_P8 , KC_P9 , KC_PPLS, \
|
||||
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_P0 , KC_P0 , KC_PDOT, KC_PENT
|
||||
),
|
||||
|
||||
[1] = KEYMAP( /* FN */
|
||||
[1] = LAYOUT_grid( /* FN */
|
||||
RGB_TOG, RGB_MOD, BL_STEP, BL_BRTG, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, \
|
||||
|
@@ -75,13 +75,13 @@ void click(uint16_t freq, uint16_t duration);
|
||||
*/
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KEYMAP( \
|
||||
#define LAYOUT( \
|
||||
k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
|
||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
|
||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
|
||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
|
||||
k41, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
|
||||
k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
|
||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
|
||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
|
||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
|
||||
k41, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
|
||||
k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
|
||||
) { \
|
||||
{k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
|
||||
{k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO, k1G}, \
|
||||
@@ -91,7 +91,23 @@ void click(uint16_t freq, uint16_t duration);
|
||||
{k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
|
||||
}
|
||||
|
||||
#define ISO_KEYMAP( \
|
||||
#define LAYOUT_all( \
|
||||
k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
|
||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
|
||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
|
||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||
k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
|
||||
k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
|
||||
) { \
|
||||
{k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
|
||||
{k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G}, \
|
||||
{k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
|
||||
{k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, KC_NO}, \
|
||||
{k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
|
||||
{k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
|
||||
}
|
||||
|
||||
#define LAYOUT_iso( \
|
||||
k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
|
||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
|
||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k3D, k2F, \
|
||||
|
16
keyboards/cu75/info.json
Normal file
16
keyboards/cu75/info.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"keyboard_name": "cu75",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 16,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5}, {"x":7.5, "y":5, "w":2.5}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
|
||||
},
|
||||
|
||||
"LAYOUT_all": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":1.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5}, {"x":7.5, "y":5, "w":2.5}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
|
||||
}
|
||||
}
|
||||
}
|
@@ -12,7 +12,7 @@ enum keymap_layout {
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[VANILLA] = KEYMAP(
|
||||
[VANILLA] = LAYOUT(
|
||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
||||
* ,------------------------------------------------------------.----.
|
||||
* |Esc | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|F13|F14| F15|
|
||||
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT,KC_SPC, KC_SPC, KC_SPC,KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[FUNC] = KEYMAP(
|
||||
[FUNC] = LAYOUT(
|
||||
/* Keymap VANILLA: Function Layer
|
||||
* ,-------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | | |
|
||||
|
@@ -12,7 +12,7 @@ enum keymap_layout {
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[VANILLA] = ISO_KEYMAP(
|
||||
[VANILLA] = LAYOUT_iso(
|
||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
||||
* ,------------------------------------------------------------.----.
|
||||
* |Esc | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|F13|F14| F15|
|
||||
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT,KC_SPC, KC_SPC, KC_SPC,KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[FUNC] = KEYMAP(
|
||||
[FUNC] = LAYOUT(
|
||||
/* Keymap VANILLA: Function Layer
|
||||
* ,-------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | | |
|
||||
|
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "DeltaSplit75",
|
||||
"maintainer": "xyxjj & itsaferbie",
|
||||
"bootloader": "n/a",
|
||||
"width": 17,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "DZ60",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "E6-V2",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"keyboard_name": "Eagle/Viper",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "ErgoDox EZ",
|
||||
"url": "ergodox-ez.com",
|
||||
"maintainer": "erez",
|
||||
"bootloader": "halfkay",
|
||||
"width": 19.5,
|
||||
"height": 9.375,
|
||||
"layouts": {
|
||||
|
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"keyboard_name": "Infinity Ergodox",
|
||||
"bootloader": "KIIBOHD_BOOTLOADER",
|
||||
"width": 19.5,
|
||||
"height": 9.375,
|
||||
"layouts": {
|
||||
|
@@ -20,7 +20,6 @@
|
||||
"maintainer": "qmk",
|
||||
"keyboard_folder": "gh60",
|
||||
"width": 15,
|
||||
"bootloader": "atmel-dfu",
|
||||
"processor": "atmega32u4",
|
||||
"height": 5,
|
||||
"url": "http://qmk.fm/keyboards/gh60",
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Iris",
|
||||
"url": "Keeb.io",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "",
|
||||
"width": 14.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "jc65",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "jc65",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "KBD75",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "KC60",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Octagon V1",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Octagon V2",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
|
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "Monkeebs Orthodox Rev.1",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "caterina",
|
||||
"width": 17,
|
||||
"height": 17.24,
|
||||
"layouts": {
|
||||
|
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "Monkeebs Orthodox Rev.3",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "caterina",
|
||||
"width": 17,
|
||||
"height": 17.24,
|
||||
"layouts": {
|
||||
|
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "Monkeebs Orthodox Rev.3",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "halfkay",
|
||||
"width": 17,
|
||||
"height": 17.24,
|
||||
"layouts": {
|
||||
|
@@ -31,6 +31,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 12
|
||||
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 13
|
||||
|
||||
|
88
keyboards/pearl/keymaps/phil/keymap.c
Executable file
88
keyboards/pearl/keymaps/phil/keymap.c
Executable file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// Layer shorthand
|
||||
#define COLEMAK 0
|
||||
#define QWERTY 1
|
||||
#define WIN 2
|
||||
#define _FN1 3
|
||||
#define _FN2 4
|
||||
#define LIGHT 5
|
||||
|
||||
#include "pearl.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[COLEMAK] = KEYMAP(
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_NO, KC_BSPC,
|
||||
LGUI_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
LSFT_T(KC_DEL), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, LT(_FN1, KC_SPC), KC_NO, LT(_FN2, KC_SPC), TG(QWERTY), TG(WIN)
|
||||
),
|
||||
[QWERTY] = KEYMAP(
|
||||
KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_TRNS,
|
||||
KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[WIN] = KEYMAP(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS,
|
||||
LCTL_T(KC_ESC), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_LGUI, KC_LALT, KC_LCTL, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[_FN1] = KEYMAP(
|
||||
KC_GRV, KC_MNXT, KC_NO, KC_PIPE, KC_PLUS, KC_LBRC, KC_RBRC, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_MPLY, KC_SPC, KC_UNDS, KC_EQUAL, KC_LPRN, KC_RPRN, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDOWN, KC_TRNS,
|
||||
KC_TRNS, KC_MPRV, KC_NO, KC_BSLS, KC_MINUS, KC_LCBR, KC_RCBR, KC_NO, KC_MUTE, KC_VOLU, KC_VOLD, KC_CAPS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[_FN2] = KEYMAP(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_CAPS,
|
||||
TG(LIGHT), KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[LIGHT] = KEYMAP(
|
||||
RESET, KC_NO, BL_ON, BL_INC, BL_BRTG, RGB_M_P, RGB_M_B, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, BL_TOGG, BL_STEP, KC_NO, RGB_M_SN, RGB_M_K, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO,
|
||||
KC_NO, KC_NO, BL_OFF, BL_DEC, KC_NO, KC_NO, KC_NO, RGB_RMOD, RGB_M_SW, RGB_M_R, RGB_M_G, KC_NO,
|
||||
TG(LIGHT), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
};
|
||||
|
||||
uint32_t layer_state_set_kb(uint32_t state) {
|
||||
if (state & (1<<QWERTY)){
|
||||
PORTD &= ~(1 << PD0);
|
||||
} else {
|
||||
PORTD |= (1 << PD0);
|
||||
}
|
||||
|
||||
if (state & (1<<WIN)){
|
||||
PORTD &= ~(1 << PD1);
|
||||
}
|
||||
else{
|
||||
PORTD |= (1 << PD1);
|
||||
}
|
||||
|
||||
if (state & (1<<LIGHT)){
|
||||
PORTD &= ~(1 << PD6);
|
||||
}
|
||||
else{
|
||||
PORTD |= (1 << PD6);
|
||||
}
|
||||
return state;
|
||||
}
|
@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "pearl.h"
|
||||
#include "rgblight.h"
|
||||
#include "backlight.h"
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
@@ -39,6 +40,19 @@ void rgblight_set(void) {
|
||||
i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM);
|
||||
}
|
||||
|
||||
void backlight_init_ports(void) {
|
||||
DDRD |= (1<<4);
|
||||
PORTD &= ~(1<<4);
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
if (level > 0) {
|
||||
PORTD |= (1<<4);
|
||||
} else {
|
||||
PORTD &= ~(1<<4);
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
rgblight_task();
|
||||
|
@@ -36,7 +36,7 @@ MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = no
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
RGBLIGHT_CUSTOM_DRIVER = yes
|
||||
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Phantom",
|
||||
"url": "https://deskthority.net/wiki/Phantom",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "halfkay",
|
||||
"width": 18.25,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
|
@@ -3,7 +3,6 @@
|
||||
"keyboard_folder": "planck",
|
||||
"url": "https://olkb.com/planck",
|
||||
"maintainer": "jackhumbert",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 12,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
|
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"keyboard_name": "Planck Light",
|
||||
"keyboard_folder": "planck/light",
|
||||
"bootloader": "qmk-dfu"
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@
|
||||
"keyboard_folder": "preonic",
|
||||
"url": "https://olkb.com/preonic",
|
||||
"maintainer": "jackhumbert",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 12,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Sweet 16",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "Tada68",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "TKC1800",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 19.5,
|
||||
"height": 7,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "tv44",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 12.75,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
"keyboard_name": "V60 Type R",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "Whitefox",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "XD60",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
|
@@ -35,44 +35,81 @@
|
||||
// Timer Abstractions
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
// TIMSK3 - Timer/Counter #3 Interrupt Mask Register
|
||||
// Turn on/off 3A interputs, stopping/enabling the ISR calls
|
||||
#ifdef C6_AUDIO
|
||||
//Currently we support timers 1 and 3 used at the sime time, channels A-C,
|
||||
//pins PB5, PB6, PB7, PC4, PC5, and PC6
|
||||
#if defined(C6_AUDIO)
|
||||
#define CPIN_AUDIO
|
||||
#define CPIN_SET_DIRECTION DDRC |= _BV(PORTC6);
|
||||
#define INIT_AUDIO_COUNTER_3 TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
|
||||
#define ENABLE_AUDIO_COUNTER_3_ISR TIMSK3 |= _BV(OCIE3A)
|
||||
#define DISABLE_AUDIO_COUNTER_3_ISR TIMSK3 &= ~_BV(OCIE3A)
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
#define ENABLE_AUDIO_COUNTER_1_ISR TIMSK1 |= _BV(OCIE1A)
|
||||
#define DISABLE_AUDIO_COUNTER_1_ISR TIMSK1 &= ~_BV(OCIE1A)
|
||||
#endif
|
||||
|
||||
// TCCR3A: Timer/Counter #3 Control Register
|
||||
// Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
#define ENABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A |= _BV(COM3A1);
|
||||
#define DISABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A &= ~(_BV(COM3A1) | _BV(COM3A0));
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
#define ENABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A |= _BV(COM1A1);
|
||||
#define DISABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A &= ~(_BV(COM1A1) | _BV(COM1A0));
|
||||
#endif
|
||||
|
||||
// Fast PWM Mode Controls
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
#define TIMER_3_PERIOD ICR3
|
||||
#define TIMER_3_DUTY_CYCLE OCR3A
|
||||
#define TIMER3_AUDIO_vect TIMER3_COMPA_vect
|
||||
#endif
|
||||
#if defined(C5_AUDIO)
|
||||
#define CPIN_AUDIO
|
||||
#define CPIN_SET_DIRECTION DDRC |= _BV(PORTC5);
|
||||
#define INIT_AUDIO_COUNTER_3 TCCR3A = (0 << COM3B1) | (0 << COM3B0) | (1 << WGM31) | (0 << WGM30);
|
||||
#define ENABLE_AUDIO_COUNTER_3_ISR TIMSK3 |= _BV(OCIE3B)
|
||||
#define DISABLE_AUDIO_COUNTER_3_ISR TIMSK3 &= ~_BV(OCIE3B)
|
||||
#define ENABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A |= _BV(COM3B1);
|
||||
#define DISABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A &= ~(_BV(COM3B1) | _BV(COM3B0));
|
||||
#define TIMER_3_PERIOD ICR3
|
||||
#define TIMER_3_DUTY_CYCLE OCR3B
|
||||
#define TIMER3_AUDIO_vect TIMER3_COMPB_vect
|
||||
#endif
|
||||
#if defined(C4_AUDIO)
|
||||
#define CPIN_AUDIO
|
||||
#define CPIN_SET_DIRECTION DDRC |= _BV(PORTC4);
|
||||
#define INIT_AUDIO_COUNTER_3 TCCR3A = (0 << COM3C1) | (0 << COM3C0) | (1 << WGM31) | (0 << WGM30);
|
||||
#define ENABLE_AUDIO_COUNTER_3_ISR TIMSK3 |= _BV(OCIE3C)
|
||||
#define DISABLE_AUDIO_COUNTER_3_ISR TIMSK3 &= ~_BV(OCIE3C)
|
||||
#define ENABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A |= _BV(COM3C1);
|
||||
#define DISABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A &= ~(_BV(COM3C1) | _BV(COM3C0));
|
||||
#define TIMER_3_PERIOD ICR3
|
||||
#define TIMER_3_DUTY_CYCLE OCR3C
|
||||
#define TIMER3_AUDIO_vect TIMER3_COMPC_vect
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
#if defined(B5_AUDIO)
|
||||
#define BPIN_AUDIO
|
||||
#define BPIN_SET_DIRECTION DDRB |= _BV(PORTB5);
|
||||
#define INIT_AUDIO_COUNTER_1 TCCR1A = (0 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10);
|
||||
#define ENABLE_AUDIO_COUNTER_1_ISR TIMSK1 |= _BV(OCIE1A)
|
||||
#define DISABLE_AUDIO_COUNTER_1_ISR TIMSK1 &= ~_BV(OCIE1A)
|
||||
#define ENABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A |= _BV(COM1A1);
|
||||
#define DISABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A &= ~(_BV(COM1A1) | _BV(COM1A0));
|
||||
#define TIMER_1_PERIOD ICR1
|
||||
#define TIMER_1_DUTY_CYCLE OCR1A
|
||||
#define TIMER1_AUDIO_vect TIMER1_COMPA_vect
|
||||
#endif
|
||||
#if defined(B6_AUDIO)
|
||||
#define BPIN_AUDIO
|
||||
#define BPIN_SET_DIRECTION DDRB |= _BV(PORTB6);
|
||||
#define INIT_AUDIO_COUNTER_1 TCCR1A = (0 << COM1B1) | (0 << COM1B0) | (1 << WGM11) | (0 << WGM10);
|
||||
#define ENABLE_AUDIO_COUNTER_1_ISR TIMSK1 |= _BV(OCIE1B)
|
||||
#define DISABLE_AUDIO_COUNTER_1_ISR TIMSK1 &= ~_BV(OCIE1B)
|
||||
#define ENABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A |= _BV(COM1B1);
|
||||
#define DISABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A &= ~(_BV(COM1B1) | _BV(COM1B0));
|
||||
#define TIMER_1_PERIOD ICR1
|
||||
#define TIMER_1_DUTY_CYCLE OCR1B
|
||||
#define TIMER1_AUDIO_vect TIMER1_COMPB_vect
|
||||
#endif
|
||||
#if defined(B7_AUDIO)
|
||||
#define BPIN_AUDIO
|
||||
#define BPIN_SET_DIRECTION DDRB |= _BV(PORTB7);
|
||||
#define INIT_AUDIO_COUNTER_1 TCCR1A = (0 << COM1C1) | (0 << COM1C0) | (1 << WGM11) | (0 << WGM10);
|
||||
#define ENABLE_AUDIO_COUNTER_1_ISR TIMSK1 |= _BV(OCIE1C)
|
||||
#define DISABLE_AUDIO_COUNTER_1_ISR TIMSK1 &= ~_BV(OCIE1C)
|
||||
#define ENABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A |= _BV(COM1C1);
|
||||
#define DISABLE_AUDIO_COUNTER_1_OUTPUT TCCR1A &= ~(_BV(COM1C1) | _BV(COM1C0));
|
||||
#define TIMER_1_PERIOD ICR1
|
||||
#define TIMER_1_DUTY_CYCLE OCR1C
|
||||
#define TIMER1_AUDIO_vect TIMER1_COMPC_vect
|
||||
#endif
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -147,47 +184,46 @@ void audio_init()
|
||||
|
||||
if (!audio_initialized) {
|
||||
|
||||
// Set port PC6 (OC3A and /OC4A) as output
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
DDRC |= _BV(PORTC6);
|
||||
//#else
|
||||
// DDRC |= _BV(PORTC6); // Why is PC6 being set as output low, if C6_audio isn't defined?
|
||||
// PORTC &= ~_BV(PORTC6);
|
||||
// Set audio ports as output
|
||||
#ifdef CPIN_AUDIO
|
||||
CPIN_SET_DIRECTION
|
||||
DISABLE_AUDIO_COUNTER_3_ISR;
|
||||
#endif
|
||||
#ifdef BPIN_AUDIO
|
||||
BPIN_SET_DIRECTION
|
||||
DISABLE_AUDIO_COUNTER_1_ISR;
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
DDRB |= _BV(PORTB5);
|
||||
//#else
|
||||
// DDRB |= _BV(PORTB5); // Same as with PC6
|
||||
// PORTB &= ~_BV(PORTB5);
|
||||
#endif
|
||||
// TCCR3A / TCCR3B: Timer/Counter #3 Control Registers TCCR3A/TCCR3B, TCCR1A/TCCR1B
|
||||
// Compare Output Mode (COM3An and COM1An) = 0b00 = Normal port operation
|
||||
// OC3A -- PC6
|
||||
// OC3B -- PC5
|
||||
// OC3C -- PC4
|
||||
// OC1A -- PB5
|
||||
// OC1B -- PB6
|
||||
// OC1C -- PB7
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_3_ISR;
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_1_ISR;
|
||||
#endif
|
||||
// Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14. Period = ICR3, Duty Cycle OCR3A)
|
||||
// OCR3A - PC6
|
||||
// OCR3B - PC5
|
||||
// OCR3C - PC4
|
||||
// OCR1A - PB5
|
||||
// OCR1B - PB6
|
||||
// OCR1C - PB7
|
||||
|
||||
// TCCR3A / TCCR3B: Timer/Counter #3 Control Registers
|
||||
// Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6
|
||||
// Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A)
|
||||
// Clock Select (CS3n) = 0b010 = Clock / 8
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
|
||||
#ifdef CPIN_AUDIO
|
||||
INIT_AUDIO_COUNTER_3
|
||||
TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30);
|
||||
TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (440 * CPU_PRESCALER));
|
||||
TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (440 * CPU_PRESCALER)) * note_timbre);
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
TCCR1A = (0 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10);
|
||||
#ifdef BPIN_AUDIO
|
||||
INIT_AUDIO_COUNTER_1
|
||||
TCCR1B = (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (1 << CS11) | (0 << CS10);
|
||||
|
||||
TIMER_1_PERIOD = (uint16_t)(((float)F_CPU) / (440 * CPU_PRESCALER));
|
||||
TIMER_1_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (440 * CPU_PRESCALER)) * note_timbre);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
audio_initialized = true;
|
||||
}
|
||||
@@ -207,13 +243,12 @@ void stop_all_notes()
|
||||
}
|
||||
voices = 0;
|
||||
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_3_ISR;
|
||||
DISABLE_AUDIO_COUNTER_3_OUTPUT;
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_1_ISR;
|
||||
DISABLE_AUDIO_COUNTER_1_OUTPUT;
|
||||
#endif
|
||||
@@ -259,11 +294,11 @@ void stop_note(float freq)
|
||||
voice_place = 0;
|
||||
}
|
||||
if (voices == 0) {
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_3_ISR;
|
||||
DISABLE_AUDIO_COUNTER_3_OUTPUT;
|
||||
#endif
|
||||
#ifdef B5_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_1_ISR;
|
||||
DISABLE_AUDIO_COUNTER_1_OUTPUT;
|
||||
#endif
|
||||
@@ -295,15 +330,15 @@ float vibrato(float average_freq) {
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
ISR(TIMER3_COMPA_vect)
|
||||
#ifdef CPIN_AUDIO
|
||||
ISR(TIMER3_AUDIO_vect)
|
||||
{
|
||||
float freq;
|
||||
|
||||
if (playing_note) {
|
||||
if (voices > 0) {
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
float freq_alt = 0;
|
||||
if (voices > 1) {
|
||||
if (polyphony_rate == 0) {
|
||||
@@ -477,10 +512,10 @@ ISR(TIMER3_COMPA_vect)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef B5_AUDIO
|
||||
ISR(TIMER1_COMPA_vect)
|
||||
#ifdef BPIN_AUDIO
|
||||
ISR(TIMER1_AUDIO_vect)
|
||||
{
|
||||
#if defined(B5_AUDIO) && !defined(C6_AUDIO)
|
||||
#if defined(BPIN_AUDIO) && !defined(CPIN_AUDIO)
|
||||
float freq = 0;
|
||||
|
||||
if (playing_note) {
|
||||
@@ -627,10 +662,10 @@ void play_note(float freq, int vol) {
|
||||
}
|
||||
|
||||
if (audio_config.enable && voices < 8) {
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_3_ISR;
|
||||
#endif
|
||||
#ifdef B5_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_1_ISR;
|
||||
#endif
|
||||
|
||||
@@ -648,12 +683,12 @@ void play_note(float freq, int vol) {
|
||||
voices++;
|
||||
}
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
ENABLE_AUDIO_COUNTER_3_ISR;
|
||||
ENABLE_AUDIO_COUNTER_3_OUTPUT;
|
||||
#endif
|
||||
#ifdef B5_AUDIO
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
if (voices > 1) {
|
||||
ENABLE_AUDIO_COUNTER_1_ISR;
|
||||
ENABLE_AUDIO_COUNTER_1_OUTPUT;
|
||||
@@ -676,10 +711,10 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat)
|
||||
|
||||
if (audio_config.enable) {
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_3_ISR;
|
||||
#endif
|
||||
#ifdef B5_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
DISABLE_AUDIO_COUNTER_1_ISR;
|
||||
#endif
|
||||
|
||||
@@ -701,12 +736,12 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat)
|
||||
note_position = 0;
|
||||
|
||||
|
||||
#ifdef C6_AUDIO
|
||||
#ifdef CPIN_AUDIO
|
||||
ENABLE_AUDIO_COUNTER_3_ISR;
|
||||
ENABLE_AUDIO_COUNTER_3_OUTPUT;
|
||||
#endif
|
||||
#ifdef B5_AUDIO
|
||||
#ifndef C6_AUDIO
|
||||
#ifdef BPIN_AUDIO
|
||||
#ifndef CPIN_AUDIO
|
||||
ENABLE_AUDIO_COUNTER_1_ISR;
|
||||
ENABLE_AUDIO_COUNTER_1_OUTPUT;
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user