Compare commits

...

8 Commits

Author SHA1 Message Date
Joel Challis
88356c85c4 Prune out pure software pwm && custom driver && remove wrapping BACKLIGHT_PIN (#8041) 2020-03-01 20:22:13 +00:00
Andrew Kannan
3dc061ac78 Make a fix to savage65 and tmov2 for via (#8286) 2020-03-02 07:16:43 +11:00
QMK Bot
95124bf933 format code according to conventions [skip ci] 2020-03-01 19:20:09 +00:00
Joel Challis
e7fb873ee2 Short term fix for conflicting types for 'tfp_printf' (#8157) 2020-03-02 05:46:40 +11:00
Joel Challis
629950e51b Fix recent clang-format breaking quantum.c (#8282) 2020-03-01 17:55:43 +00:00
QMK Bot
1ec8a7205f format code according to conventions [skip ci] 2020-03-01 13:54:25 +00:00
Ryan
ce604e1629 Remove duplicate BRTG case (#8277) 2020-03-01 13:22:21 +00:00
Ryan
c9e3fa6f70 Clean up includes for glcdfont headers (#7745)
* Clean up includes for glcdfont headers

* Remove pragma once, most of these are not headers

* Missed these
2020-03-01 17:56:50 +11:00
34 changed files with 287 additions and 588 deletions

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else
# define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -31,4 +21,3 @@ static const unsigned char font[] PROGMEM = {
0x14, 0x14, 0x14, 0xF4, 0x14, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x00, 0xFC, 0x14, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x14, 0x14, 0x14, 0xFF, 0x14, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x38, 0x44, 0x44, 0x38, 0x44, 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta
0x7E, 0x02, 0x02, 0x06, 0x06, 0x02, 0x7E, 0x02, 0x7E, 0x02, 0x63, 0x55, 0x49, 0x41, 0x63, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x40, 0x7E, 0x20, 0x1E, 0x20, 0x06, 0x02, 0x7E, 0x02, 0x02, 0x99, 0xA5, 0xE7, 0xA5, 0x99, 0x1C, 0x2A, 0x49, 0x2A, 0x1C, 0x4C, 0x72, 0x01, 0x72, 0x4C, 0x30, 0x4A, 0x4D, 0x4D, 0x30, 0x30, 0x48, 0x78, 0x48, 0x30, 0xBC, 0x62, 0x5A, 0x46, 0x3D, 0x3E, 0x49, 0x49, 0x49, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x7E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x44, 0x44, 0x5F, 0x44, 0x44, 0x40, 0x51, 0x4A, 0x44, 0x40, 0x40, 0x44, 0x4A, 0x51, 0x40, 0x00, 0x00, 0xFF, 0x01, 0x03, 0xE0, 0x80, 0xFF, 0x00, 0x00, 0x08, 0x08, 0x6B, 0x6B, 0x08, 0x36, 0x12, 0x36, 0x24, 0x36, 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x30, 0x40, 0xFF, 0x01, 0x01, 0x00, 0x1F, 0x01, 0x01, 0x1E, 0x00, 0x19, 0x1D, 0x17, 0x12, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP
};
#endif // FONT5X7_H

View File

@@ -1,13 +1,4 @@
#pragma once
#ifdef __AVR__
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else
# define PROGMEM
#endif
#include "progmem.h"
// Helidox 8x6 font with QMK Firmware Logo
// Online editor: http://teripom.x0.com/

View File

@@ -22,15 +22,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <string.h>
#if defined(__AVR__)
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else // defined(ESP8266)
# define PROGMEM
#include "progmem.h"
#ifndef __AVR__
# define memcpy_P(des, src, len) memcpy(des, src, len)
#endif // defined(__AVR__)
#endif
// Used commands from spec sheet: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
// for SH1106: https://www.velleman.eu/downloads/29/infosheets/sh1106_datasheet.pdf

View File

@@ -1,5 +1,4 @@
# rules.mk overrides to enable VIA
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
VIA_ENABLE = yes

View File

@@ -1,5 +1,4 @@
# rules.mk overrides to enable VIA
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
VIA_ENABLE = yes

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -145,4 +135,3 @@ const unsigned char font[] PROGMEM = {
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00
};
#endif // FONT5X7_H

View File

@@ -1,11 +1,5 @@
#include <stdio.h>
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
#define NUM_USB_HID_KEYCODES 255
#define LEN_KEYCODE_STR 4

View File

@@ -1,13 +1,4 @@
#pragma once
#ifdef __AVR__
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else
# define PROGMEM
#endif
#include "progmem.h"
// Corne 8x6 font with QMK Firmware Logo
// Online editor: https://helixfonteditor.netlify.com/

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H

View File

@@ -1,13 +1,4 @@
#pragma once
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Helidox 8x6 font with QMK Firmware Logo
// Online editor: http://teripom.x0.com/

View File

@@ -1,13 +1,4 @@
#pragma once
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Corne 8x6 font with QMK Firmware Logo
// Online editor: https://helixfonteditor.netlify.com/

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H

View File

@@ -1,7 +1,6 @@
// 'loveLain', 128x32px
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "progmem.h"
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

View File

@@ -1,13 +1,4 @@
#pragma once
#ifdef __AVR__
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else
# define PROGMEM
#endif
#include "progmem.h"
// Helidox 8x6 font with QMK Firmware Logo
// Online editor: http://teripom.x0.com/

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -241,4 +231,3 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,9 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#pragma once
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -241,4 +233,3 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -273,4 +263,3 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x3C, 0x3C, 0x3C, 0x3C,
0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP
};
#endif // FONT5X7_H

View File

@@ -1,13 +1,4 @@
#pragma once
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Helidox 8x6 font with RGBKB SOL Logo
// Online editor: http://teripom.x0.com/

View File

@@ -1,15 +1,6 @@
// This is the SOL 6x8 font
#pragma once
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -241,4 +231,3 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
@@ -241,4 +231,3 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -272,4 +262,3 @@ const unsigned char font[] PROGMEM = {
0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F
};
#endif // FONT5X7_H

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif // FONT5X7_H

View File

@@ -2,7 +2,9 @@
#include "backlight.h"
#include "debug.h"
#if defined(BACKLIGHT_ENABLE) && (defined(BACKLIGHT_PIN) || defined(BACKLIGHT_PINS))
#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
# error "Backlight pin/pins not defined. Please configure."
#endif
// This logic is a bit complex, we support 3 setups:
//
@@ -12,262 +14,223 @@
// depends on the Audio setup (Audio wins over Backlight).
// 3. Full software PWM, driven by the matrix scan, if both timers are used by Audio.
# if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) && (BACKLIGHT_PIN == B5 || BACKLIGHT_PIN == B6 || BACKLIGHT_PIN == B7)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK1
# define TOIEx TOIE1
#if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) && (BACKLIGHT_PIN == B5 || BACKLIGHT_PIN == B6 || BACKLIGHT_PIN == B7)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK1
# define TOIEx TOIE1
# if BACKLIGHT_PIN == B5
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# elif BACKLIGHT_PIN == B6
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# elif BACKLIGHT_PIN == B7
# define COMxx0 COM1C0
# define COMxx1 COM1C1
# define OCRxx OCR1C
# endif
# elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) && (BACKLIGHT_PIN == C4 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
# define HARDWARE_PWM
# define ICRx ICR3
# define TCCRxA TCCR3A
# define TCCRxB TCCR3B
# define TIMERx_OVF_vect TIMER3_OVF_vect
# define TIMSKx TIMSK3
# define TOIEx TOIE3
# if BACKLIGHT_PIN == B5
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# elif BACKLIGHT_PIN == B6
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# elif BACKLIGHT_PIN == B7
# define COMxx0 COM1C0
# define COMxx1 COM1C1
# define OCRxx OCR1C
# endif
#elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) && (BACKLIGHT_PIN == C4 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
# define HARDWARE_PWM
# define ICRx ICR3
# define TCCRxA TCCR3A
# define TCCRxB TCCR3B
# define TIMERx_OVF_vect TIMER3_OVF_vect
# define TIMSKx TIMSK3
# define TOIEx TOIE3
# if BACKLIGHT_PIN == C4
# if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
# error This MCU has no C4 pin!
# else
# define COMxx0 COM3C0
# define COMxx1 COM3C1
# define OCRxx OCR3C
# endif
# elif BACKLIGHT_PIN == C5
# if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
# error This MCU has no C5 pin!
# else
# define COMxx0 COM3B0
# define COMxx1 COM3B1
# define OCRxx OCR3B
# endif
# elif BACKLIGHT_PIN == C6
# define COMxx0 COM3A0
# define COMxx1 COM3A1
# define OCRxx OCR3A
# endif
# elif (defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)) && (BACKLIGHT_PIN == B7 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK1
# define TOIEx TOIE1
# if BACKLIGHT_PIN == B7
# define COMxx0 COM1C0
# define COMxx1 COM1C1
# define OCRxx OCR1C
# elif BACKLIGHT_PIN == C5
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# elif BACKLIGHT_PIN == C6
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# endif
# elif defined(__AVR_ATmega32A__) && (BACKLIGHT_PIN == D4 || BACKLIGHT_PIN == D5)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK
# define TOIEx TOIE1
# if BACKLIGHT_PIN == D4
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# elif BACKLIGHT_PIN == D5
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# endif
# elif defined(__AVR_ATmega328P__) && (BACKLIGHT_PIN == B1 || BACKLIGHT_PIN == B2)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK1
# define TOIEx TOIE1
# if BACKLIGHT_PIN == B1
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# elif BACKLIGHT_PIN == B2
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# endif
# else
# if !defined(BACKLIGHT_CUSTOM_DRIVER)
# if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO)
// Timer 1 is not in use by Audio feature, Backlight can use it
# pragma message "Using hardware timer 1 with software PWM"
# define HARDWARE_PWM
# define BACKLIGHT_PWM_TIMER
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_COMPA_vect TIMER1_COMPA_vect
# define TIMERx_OVF_vect TIMER1_OVF_vect
# if defined(__AVR_ATmega32A__) // This MCU has only one TIMSK register
# define TIMSKx TIMSK
# else
# define TIMSKx TIMSK1
# endif
# define TOIEx TOIE1
# define OCIExA OCIE1A
# define OCRxx OCR1A
# elif !defined(C6_AUDIO) && !defined(C5_AUDIO) && !defined(C4_AUDIO)
# pragma message "Using hardware timer 3 with software PWM"
// Timer 3 is not in use by Audio feature, Backlight can use it
# define HARDWARE_PWM
# define BACKLIGHT_PWM_TIMER
# define ICRx ICR1
# define TCCRxA TCCR3A
# define TCCRxB TCCR3B
# define TIMERx_COMPA_vect TIMER3_COMPA_vect
# define TIMERx_OVF_vect TIMER3_OVF_vect
# define TIMSKx TIMSK3
# define TOIEx TOIE3
# define OCIExA OCIE3A
# define OCRxx OCR3A
# else
# pragma message "Audio in use - using pure software PWM"
# define NO_HARDWARE_PWM
# endif
# if BACKLIGHT_PIN == C4
# if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
# error This MCU has no C4 pin!
# else
# pragma message "Custom driver defined - using pure software PWM"
# define NO_HARDWARE_PWM
# define COMxx0 COM3C0
# define COMxx1 COM3C1
# define OCRxx OCR3C
# endif
# elif BACKLIGHT_PIN == C5
# if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
# error This MCU has no C5 pin!
# else
# define COMxx0 COM3B0
# define COMxx1 COM3B1
# define OCRxx OCR3B
# endif
# elif BACKLIGHT_PIN == C6
# define COMxx0 COM3A0
# define COMxx1 COM3A1
# define OCRxx OCR3A
# endif
#elif (defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)) && (BACKLIGHT_PIN == B7 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK1
# define TOIEx TOIE1
# ifndef BACKLIGHT_ON_STATE
# define BACKLIGHT_ON_STATE 1
# if BACKLIGHT_PIN == B7
# define COMxx0 COM1C0
# define COMxx1 COM1C1
# define OCRxx OCR1C
# elif BACKLIGHT_PIN == C5
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# elif BACKLIGHT_PIN == C6
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# endif
#elif defined(__AVR_ATmega32A__) && (BACKLIGHT_PIN == D4 || BACKLIGHT_PIN == D5)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK
# define TOIEx TOIE1
# if BACKLIGHT_PIN == D4
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# elif BACKLIGHT_PIN == D5
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# endif
#elif defined(__AVR_ATmega328P__) && (BACKLIGHT_PIN == B1 || BACKLIGHT_PIN == B2)
# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TIMSKx TIMSK1
# define TOIEx TOIE1
# if BACKLIGHT_PIN == B1
# define COMxx0 COM1A0
# define COMxx1 COM1A1
# define OCRxx OCR1A
# elif BACKLIGHT_PIN == B2
# define COMxx0 COM1B0
# define COMxx1 COM1B1
# define OCRxx OCR1B
# endif
#elif !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO)
// Timer 1 is not in use by Audio feature, Backlight can use it
# pragma message "Using hardware timer 1 with software PWM"
# define HARDWARE_PWM
# define BACKLIGHT_PWM_TIMER
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
# define TIMERx_COMPA_vect TIMER1_COMPA_vect
# define TIMERx_OVF_vect TIMER1_OVF_vect
# if defined(__AVR_ATmega32A__) // This MCU has only one TIMSK register
# define TIMSKx TIMSK
# else
# define TIMSKx TIMSK1
# endif
# define TOIEx TOIE1
# define OCIExA OCIE1A
# define OCRxx OCR1A
#elif !defined(C6_AUDIO) && !defined(C5_AUDIO) && !defined(C4_AUDIO)
# pragma message "Using hardware timer 3 with software PWM"
// Timer 3 is not in use by Audio feature, Backlight can use it
# define HARDWARE_PWM
# define BACKLIGHT_PWM_TIMER
# define ICRx ICR1
# define TCCRxA TCCR3A
# define TCCRxB TCCR3B
# define TIMERx_COMPA_vect TIMER3_COMPA_vect
# define TIMERx_OVF_vect TIMER3_OVF_vect
# define TIMSKx TIMSK3
# define TOIEx TOIE3
# define OCIExA OCIE3A
# define OCRxx OCR3A
#elif defined(BACKLIGHT_CUSTOM_DRIVER)
error("Please set 'BACKLIGHT_DRIVER = custom' within rules.mk")
#else
error("Please set 'BACKLIGHT_DRIVER = software' within rules.mk")
#endif
#ifndef BACKLIGHT_ON_STATE
# define BACKLIGHT_ON_STATE 1
#endif
void backlight_on(pin_t backlight_pin) {
# if BACKLIGHT_ON_STATE == 1
#if BACKLIGHT_ON_STATE == 1
writePinHigh(backlight_pin);
# else
#else
writePinLow(backlight_pin);
# endif
#endif
}
void backlight_off(pin_t backlight_pin) {
# if BACKLIGHT_ON_STATE == 1
#if BACKLIGHT_ON_STATE == 1
writePinLow(backlight_pin);
# else
#else
writePinHigh(backlight_pin);
# endif
#endif
}
# if defined(NO_HARDWARE_PWM) || defined(BACKLIGHT_PWM_TIMER) // pwm through software
#ifdef BACKLIGHT_PWM_TIMER // pwm through software
// we support multiple backlight pins
# ifndef BACKLIGHT_LED_COUNT
# define BACKLIGHT_LED_COUNT 1
# endif
# ifndef BACKLIGHT_LED_COUNT
# define BACKLIGHT_LED_COUNT 1
# endif
# if BACKLIGHT_LED_COUNT == 1
# define BACKLIGHT_PIN_INIT \
{ BACKLIGHT_PIN }
# else
# define BACKLIGHT_PIN_INIT BACKLIGHT_PINS
# endif
# if BACKLIGHT_LED_COUNT == 1
# define BACKLIGHT_PIN_INIT \
{ BACKLIGHT_PIN }
# else
# define BACKLIGHT_PIN_INIT BACKLIGHT_PINS
# endif
# define FOR_EACH_LED(x) \
for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
pin_t backlight_pin = backlight_pins[i]; \
{ x } \
}
# define FOR_EACH_LED(x) \
for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
pin_t backlight_pin = backlight_pins[i]; \
{ x } \
}
static const pin_t backlight_pins[BACKLIGHT_LED_COUNT] = BACKLIGHT_PIN_INIT;
# else // full hardware PWM
#else // full hardware PWM
static inline void enable_pwm(void) {
# if BACKLIGHT_ON_STATE == 1
# if BACKLIGHT_ON_STATE == 1
TCCRxA |= _BV(COMxx1);
# else
# else
TCCRxA |= _BV(COMxx1) | _BV(COMxx0);
# endif
# endif
}
static inline void disable_pwm(void) {
# if BACKLIGHT_ON_STATE == 1
# if BACKLIGHT_ON_STATE == 1
TCCRxA &= ~(_BV(COMxx1));
# else
# else
TCCRxA &= ~(_BV(COMxx1) | _BV(COMxx0));
# endif
# endif
}
// we support only one backlight pin
static const pin_t backlight_pin = BACKLIGHT_PIN;
# define FOR_EACH_LED(x) x
# define FOR_EACH_LED(x) x
# endif
#endif
# ifdef NO_HARDWARE_PWM
void backlight_init_ports(void) {
// Setup backlight pin as output and output to on state.
FOR_EACH_LED(setPinOutput(backlight_pin); backlight_on(backlight_pin);)
# ifdef BACKLIGHT_BREATHING
if (is_backlight_breathing()) {
breathing_enable();
}
# endif
}
uint8_t backlight_tick = 0;
# ifndef BACKLIGHT_CUSTOM_DRIVER
void backlight_task(void) {
if ((0xFFFF >> ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) {
FOR_EACH_LED(backlight_on(backlight_pin);)
} else {
FOR_EACH_LED(backlight_off(backlight_pin);)
}
backlight_tick = (backlight_tick + 1) % 16;
}
# endif
# ifdef BACKLIGHT_BREATHING
# ifndef BACKLIGHT_CUSTOM_DRIVER
# error "Backlight breathing only available with hardware PWM. Please disable."
# endif
# endif
# else // hardware pwm through timer
# ifdef BACKLIGHT_PWM_TIMER
#ifdef BACKLIGHT_PWM_TIMER
// The idea of software PWM assisted by hardware timers is the following
// we use the hardware timer in fast PWM mode like for hardware PWM, but
@@ -288,11 +251,11 @@ ISR(TIMERx_COMPA_vect) { FOR_EACH_LED(backlight_off(backlight_pin);) }
// Triggered when the counter reaches the TOP value
// this one triggers at F_CPU/65536 =~ 244 Hz
ISR(TIMERx_OVF_vect) {
# ifdef BACKLIGHT_BREATHING
# ifdef BACKLIGHT_BREATHING
if (is_breathing()) {
breathing_task();
}
# endif
# endif
// for very small values of OCRxx (or backlight level)
// we can't guarantee this whole code won't execute
// at the same time as the compare match interrupt
@@ -306,9 +269,9 @@ ISR(TIMERx_OVF_vect) {
}
}
# endif
#endif
# define TIMER_TOP 0xFFFFU
#define TIMER_TOP 0xFFFFU
// See http://jared.geek.nz/2013/feb/linear-led-pwm
static uint16_t cie_lightness(uint16_t v) {
@@ -329,88 +292,86 @@ static uint16_t cie_lightness(uint16_t v) {
// range for val is [0..TIMER_TOP]. PWM pin is high while the timer count is below val.
static inline void set_pwm(uint16_t val) { OCRxx = val; }
# ifndef BACKLIGHT_CUSTOM_DRIVER
void backlight_set(uint8_t level) {
if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS;
if (level == 0) {
# ifdef BACKLIGHT_PWM_TIMER
#ifdef BACKLIGHT_PWM_TIMER
if (OCRxx) {
TIMSKx &= ~(_BV(OCIExA));
TIMSKx &= ~(_BV(TOIEx));
}
# else
#else
// Turn off PWM control on backlight pin
disable_pwm();
# endif
#endif
FOR_EACH_LED(backlight_off(backlight_pin);)
} else {
# ifdef BACKLIGHT_PWM_TIMER
#ifdef BACKLIGHT_PWM_TIMER
if (!OCRxx) {
TIMSKx |= _BV(OCIExA);
TIMSKx |= _BV(TOIEx);
}
# else
#else
// Turn on PWM control of backlight pin
enable_pwm();
# endif
#endif
}
// Set the brightness
set_pwm(cie_lightness(TIMER_TOP * (uint32_t)level / BACKLIGHT_LEVELS));
}
void backlight_task(void) {}
# endif // BACKLIGHT_CUSTOM_DRIVER
# ifdef BACKLIGHT_BREATHING
#ifdef BACKLIGHT_BREATHING
# define BREATHING_NO_HALT 0
# define BREATHING_HALT_OFF 1
# define BREATHING_HALT_ON 2
# define BREATHING_STEPS 128
# define BREATHING_NO_HALT 0
# define BREATHING_HALT_OFF 1
# define BREATHING_HALT_ON 2
# define BREATHING_STEPS 128
static uint8_t breathing_halt = BREATHING_NO_HALT;
static uint8_t breathing_halt = BREATHING_NO_HALT;
static uint16_t breathing_counter = 0;
# ifdef BACKLIGHT_PWM_TIMER
# ifdef BACKLIGHT_PWM_TIMER
static bool breathing = false;
bool is_breathing(void) { return breathing; }
# define breathing_interrupt_enable() \
do { \
breathing = true; \
} while (0)
# define breathing_interrupt_disable() \
do { \
breathing = false; \
} while (0)
# else
# define breathing_interrupt_enable() \
do { \
breathing = true; \
} while (0)
# define breathing_interrupt_disable() \
do { \
breathing = false; \
} while (0)
# else
bool is_breathing(void) { return !!(TIMSKx & _BV(TOIEx)); }
# define breathing_interrupt_enable() \
do { \
TIMSKx |= _BV(TOIEx); \
} while (0)
# define breathing_interrupt_disable() \
do { \
TIMSKx &= ~_BV(TOIEx); \
} while (0)
# endif
# define breathing_interrupt_enable() \
do { \
TIMSKx |= _BV(TOIEx); \
} while (0)
# define breathing_interrupt_disable() \
do { \
TIMSKx &= ~_BV(TOIEx); \
} while (0)
# endif
# define breathing_min() \
do { \
breathing_counter = 0; \
} while (0)
# define breathing_max() \
do { \
breathing_counter = get_breathing_period() * 244 / 2; \
} while (0)
# define breathing_min() \
do { \
breathing_counter = 0; \
} while (0)
# define breathing_max() \
do { \
breathing_counter = get_breathing_period() * 244 / 2; \
} while (0)
void breathing_enable(void) {
breathing_counter = 0;
breathing_halt = BREATHING_NO_HALT;
breathing_halt = BREATHING_NO_HALT;
breathing_interrupt_enable();
}
@@ -451,20 +412,20 @@ static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0,
// Use this before the cie_lightness function.
static inline uint16_t scale_backlight(uint16_t v) { return v / BACKLIGHT_LEVELS * get_backlight_level(); }
# ifdef BACKLIGHT_PWM_TIMER
# ifdef BACKLIGHT_PWM_TIMER
void breathing_task(void)
# else
# else
/* Assuming a 16MHz CPU clock and a timer that resets at 64k (ICR1), the following interrupt handler will run
* about 244 times per second.
*/
ISR(TIMERx_OVF_vect)
# endif
# endif
{
uint8_t breathing_period = get_breathing_period();
uint16_t interval = (uint16_t)breathing_period * 244 / BREATHING_STEPS;
uint8_t breathing_period = get_breathing_period();
uint16_t interval = (uint16_t)breathing_period * 244 / BREATHING_STEPS;
// resetting after one period to prevent ugly reset at overflow.
breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
uint8_t index = breathing_counter / interval % BREATHING_STEPS;
uint8_t index = breathing_counter / interval % BREATHING_STEPS;
if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) || ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1))) {
breathing_interrupt_disable();
@@ -473,7 +434,7 @@ ISR(TIMERx_OVF_vect)
set_pwm(cie_lightness(scale_backlight((uint16_t)pgm_read_byte(&breathing_table[index]) * 0x0101U)));
}
# endif // BACKLIGHT_BREATHING
#endif // BACKLIGHT_BREATHING
void backlight_init_ports(void) {
// Setup backlight pin as output and output to on state.
@@ -483,12 +444,12 @@ void backlight_init_ports(void) {
// Go read the ATmega32u4 datasheet.
// And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
# ifdef BACKLIGHT_PWM_TIMER
#ifdef BACKLIGHT_PWM_TIMER
// TimerX setup, Fast PWM mode count to TOP set in ICRx
TCCRxA = _BV(WGM11); // = 0b00000010;
// clock select clk/1
TCCRxB = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
# else // hardware PWM
#else // hardware PWM
// Pin PB7 = OCR1C (Timer 1, Channel C)
// Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
// (i.e. start high, go low when counter matches.)
@@ -500,25 +461,21 @@ void backlight_init_ports(void) {
"In fast PWM mode, the compare units allow generation of PWM waveforms on the OCnx pins. Setting the COMnx1:0 bits to two will produce a non-inverted PWM [..]."
"In fast PWM mode the counter is incremented until the counter value matches either one of the fixed values 0x00FF, 0x01FF, or 0x03FF (WGMn3:0 = 5, 6, or 7), the value in ICRn (WGMn3:0 = 14), or the value in OCRnA (WGMn3:0 = 15)."
*/
# if BACKLIGHT_ON_STATE == 1
# if BACKLIGHT_ON_STATE == 1
TCCRxA = _BV(COMxx1) | _BV(WGM11);
# else
# else
TCCRxA = _BV(COMxx1) | _BV(COMxx0) | _BV(WGM11);
# endif
# endif
TCCRxB = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
# endif
#endif
// Use full 16-bit resolution. Counter counts to ICR1 before reset to 0.
ICRx = TIMER_TOP;
backlight_init();
# ifdef BACKLIGHT_BREATHING
#ifdef BACKLIGHT_BREATHING
if (is_backlight_breathing()) {
breathing_enable();
}
# endif
#endif
}
# endif // hardware backlight
#endif // backlight

View File

@@ -314,11 +314,6 @@ bool process_record_quantum(keyrecord_t *record) {
case OUT_BT:
set_output(OUTPUT_BLUETOOTH);
return false;
#endif
#if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING)
case BL_BRTG:
backlight_toggle_breathing();
return false;
#endif
}
}
@@ -647,7 +642,7 @@ void matrix_scan_quantum() {
// Functions for spitting out values
//
void send_dword(uint32_t number) { // this might not actually work
void send_dword(uint32_t number) {
uint16_t word = (number >> 16);
send_word(word);
send_word(number & 0xFFFFUL);

View File

@@ -96,10 +96,10 @@ static int a2d(char ch) {
return -1;
}
static char a2i(char ch, char** src, int base, int* nump) {
char* p = *src;
int num = 0;
int digit;
static char a2i(char ch, const char** src, int base, int* nump) {
const char* p = *src;
int num = 0;
int digit;
while ((digit = a2d(ch)) >= 0) {
if (digit > base) break;
num = num * base + digit;
@@ -119,7 +119,7 @@ static void putchw(void* putp, putcf putf, int n, char z, char* bf) {
while ((ch = *bf++)) putf(putp, ch);
}
void tfp_format(void* putp, putcf putf, char* fmt, va_list va) {
void tfp_format(void* putp, putcf putf, const char* fmt, va_list va) {
// This used to handle max of 12, but binary support jumps this to at least 32
char bf[36];
@@ -211,19 +211,23 @@ void init_printf(void* putp, void (*putf)(void*, char)) {
stdout_putp = putp;
}
void tfp_printf(char* fmt, ...) {
int tfp_printf(const char* fmt, ...) {
va_list va;
va_start(va, fmt);
tfp_format(stdout_putp, stdout_putf, fmt, va);
va_end(va);
return 1;
}
static void putcp(void* p, char c) { *(*((char**)p))++ = c; }
void tfp_sprintf(char* s, char* fmt, ...) {
int tfp_sprintf(char* s, const char* fmt, ...) {
va_list va;
va_start(va, fmt);
tfp_format(&s, putcp, fmt, va);
putcp(&s, 0);
va_end(va);
return 1;
}

View File

@@ -99,10 +99,10 @@ regs Kusti, 23.10.2004
void init_printf(void* putp, void (*putf)(void*, char));
void tfp_printf(char* fmt, ...);
void tfp_sprintf(char* s, char* fmt, ...);
int tfp_printf(const char* fmt, ...);
int tfp_sprintf(char* s, const char* fmt, ...);
void tfp_format(void* putp, void (*putf)(void*, char), char* fmt, va_list va);
void tfp_format(void* putp, void (*putf)(void*, char), const char* fmt, va_list va);
#define printf tfp_printf
#define sprintf tfp_sprintf

View File

@@ -1,5 +1,4 @@
#ifndef PROGMEM_H
#define PROGMEM_H 1
#pragma once
#if defined(__AVR__)
# include <avr/pgmspace.h>
@@ -9,5 +8,3 @@
# define pgm_read_word(p) *((uint16_t*)(p))
# define pgm_read_dword(p) *((uint32_t*)(p))
#endif
#endif

View File

@@ -1,13 +1,6 @@
#pragma once
#ifdef __AVR__
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else
# define PROGMEM
#endif
#include "progmem.h"
// Corne 8x6 font with QMK Firmware Logo
// Online editor: https://helixfonteditor.netlify.com/

View File

@@ -1,13 +1,6 @@
#pragma once
#ifdef __AVR__
# include <avr/io.h>
# include <avr/pgmspace.h>
#elif defined(ESP8266)
# include <pgmspace.h>
#else
# define PROGMEM
#endif
#include "progmem.h"
// Corne 8x6 font with QMK Firmware Logo
// Online editor: https://helixfonteditor.netlify.com/

View File

@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
#include "progmem.h"
// Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#endif // FONT5X7_H