mirror of
https://github.com/openstenoproject/qmk
synced 2024-11-10 18:49:08 +00:00
Add LED support to x68k
This commit is contained in:
parent
1f7461578d
commit
42c962412b
5 changed files with 62 additions and 12 deletions
|
@ -16,7 +16,8 @@ TARGET_DIR = .
|
|||
SRC = keymap.c \
|
||||
matrix.c \
|
||||
led.c \
|
||||
x68k.c
|
||||
protocol/x68k.c
|
||||
# protocol/serial_uart.c
|
||||
|
||||
CONFIG_H = config_pjrc.h
|
||||
|
||||
|
@ -37,12 +38,23 @@ MCU = atmega32u4 # Teensy 2.0
|
|||
F_CPU = 16000000
|
||||
|
||||
|
||||
# Boot Section Size in bytes
|
||||
# Teensy halfKay 512
|
||||
# Atmel DFU loader 4096
|
||||
# LUFA bootloader 4096
|
||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||
|
||||
|
||||
# Build Options
|
||||
# *Comment out* to disable the options.
|
||||
#
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -40,11 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
/* legacy keymap support */
|
||||
#define USE_LEGACY_KEYMAP
|
||||
|
||||
/* mouse keys */
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
# define MOUSEKEY_DELAY_TIME 255
|
||||
#endif
|
||||
|
||||
|
||||
/* USART configuration
|
||||
* asynchronous, 2400baud, 8-data bit, non parity, 1-stop bit, no flow control
|
||||
|
@ -57,7 +52,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
# define KBD_RX_INIT() do { \
|
||||
UBRR1L = (uint8_t) KBD_RX_UBBR; \
|
||||
UBRR1H = (uint8_t) (KBD_RX_UBBR>>8); \
|
||||
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); \
|
||||
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1) | (1<<TXEN1); \
|
||||
} while(0)
|
||||
|
||||
|
||||
#define SERIAL_UART_BAUD 2400
|
||||
#define SERIAL_UART_DATA UDR1
|
||||
#define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
|
||||
#define SERIAL_UART_RXD_VECT USART1_RX_vect
|
||||
#define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
|
||||
#define SERIAL_UART_INIT() do { \
|
||||
UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
|
||||
UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \
|
||||
UCSR1B = (1<<RXCIE1) | (1<<RXEN1) | /* RX: interrupt, RX: enable */ \
|
||||
(1<<TXEN1); /* TX: enable */ \
|
||||
UCSR1C = (1<<UPM11) | (1<<UPM10) | /* parity: none(00), even(01), odd(11) */ \
|
||||
(0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10); /* 8bit-data(011) */ \
|
||||
sei(); \
|
||||
} while(0)
|
||||
#else
|
||||
# error "USART configuration is needed."
|
||||
|
|
|
@ -16,11 +16,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/
|
||||
|
||||
#include "stdint.h"
|
||||
#include "x68k.h"
|
||||
#include "serial.h"
|
||||
#include "led.h"
|
||||
#include "debug.h"
|
||||
#include "x68k.h"
|
||||
|
||||
|
||||
void led_set(uint8_t usb_led)
|
||||
{
|
||||
// not supported now
|
||||
/* X68000 LED bits 0: on, 1: off
|
||||
* bit 7 1(fixed)
|
||||
* bit 6 全角
|
||||
* bit 5 ひらがな
|
||||
* bit 4 INS
|
||||
* bit 3 CAPS
|
||||
* bit 2 コード入力
|
||||
* bit 1 ローマ字
|
||||
* bit 0 かな
|
||||
*/
|
||||
uint8_t led = 0xFF;
|
||||
xprintf("usb_led: %02X\n", usb_led);
|
||||
if (usb_led&(1<<USB_LED_NUM_LOCK)) led &= ~(1<<2);
|
||||
if (usb_led&(1<<USB_LED_CAPS_LOCK)) led &= ~(1<<3);
|
||||
if (usb_led&(1<<USB_LED_SCROLL_LOCK)) led &= ~(1<<1);
|
||||
if (usb_led&(1<<USB_LED_COMPOSE)) led &= ~(1<<4);
|
||||
if (usb_led&(1<<USB_LED_KANA)) led &= ~(1<<0);
|
||||
xprintf("led: %02X\n", led);
|
||||
x68k_send(led);
|
||||
}
|
||||
|
|
|
@ -64,6 +64,12 @@ uint8_t x68k_recv(void)
|
|||
return data;
|
||||
}
|
||||
|
||||
void x68k_send(uint8_t d)
|
||||
{
|
||||
while (!(UCSR1A&(1<<UDRE1)));
|
||||
UDR1 = d;
|
||||
}
|
||||
|
||||
// USART RX complete interrupt
|
||||
ISR(KBD_RX_VECT)
|
||||
{
|
||||
|
|
|
@ -41,6 +41,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
/* host role */
|
||||
void x68k_init(void);
|
||||
uint8_t x68k_recv(void);
|
||||
void x68k_send(uint8_t d);
|
||||
|
||||
/* device role */
|
||||
|
||||
|
|
Loading…
Reference in a new issue