news_usb: Add TMK converter support
authortmk <hasu@tmk-kbd.com>
Fri, 29 Apr 2016 05:54:52 +0000 (14:54 +0900)
committertmk <hasu@tmk-kbd.com>
Fri, 29 Apr 2016 05:54:52 +0000 (14:54 +0900)
converter/news_usb/Makefile [new file with mode: 0644]
converter/news_usb/Makefile.pjrc
converter/news_usb/config.h [new file with mode: 0644]
converter/news_usb/config_pjrc.h

diff --git a/converter/news_usb/Makefile b/converter/news_usb/Makefile
new file mode 100644 (file)
index 0000000..e94a4f6
--- /dev/null
@@ -0,0 +1,93 @@
+# Target file name (without extension).
+TARGET = news_usb
+
+# Directory common source filess exist
+TMK_DIR = ../../tmk_core
+
+# Directory keyboard dependent files exist
+TARGET_DIR = .
+
+# keyboard dependent files
+SRC =  keymap.c \
+       matrix.c \
+       led.c \
+       news.c
+
+CONFIG_H = config.h
+
+
+# MCU name, you MUST set this to match the board you are using
+# type "make clean" after changing this, so all files will be rebuilt
+#MCU = at90usb162       # Teensy 1.0
+#MCU = atmega32u4       # Teensy 2.0
+#MCU = at90usb646       # Teensy++ 1.0
+#MCU = at90usb1286      # Teensy++ 2.0
+MCU ?= atmega32u2       # TMK Converter Rev.2
+
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+#   Teensy halfKay   512
+#   Teensy++ halfKay 1024
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+#   USBaspLoader     2048
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+#   *Comment out* to disable the options.
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes  # Mouse keys(+5000)
+EXTRAKEY_ENABLE = yes  # Audio control and System control(+600)
+CONSOLE_ENABLE = yes    # Console for debug
+COMMAND_ENABLE = yes    # Commands for debug and configuration
+#NKRO_ENABLE = yes     # USB Nkey Rollover(+500)
+
+
+# Search Path
+VPATH += $(TARGET_DIR)
+VPATH += $(TMK_DIR)
+
+
+include $(TMK_DIR)/protocol.mk
+include $(TMK_DIR)/protocol/lufa.mk
+include $(TMK_DIR)/common.mk
+include $(TMK_DIR)/rules.mk
index 80cadcc730286b3d819af4f93f362603aaf52540..be7dd92ec531b43826672f15168f7f9e715cd9e3 100644 (file)
@@ -24,9 +24,10 @@ CONFIG_H = config_pjrc.h
 # MCU name, you MUST set this to match the board you are using
 # type "make clean" after changing this, so all files will be rebuilt
 #MCU = at90usb162       # Teensy 1.0
-MCU = atmega32u4       # Teensy 2.0
+#MCU = atmega32u4       # Teensy 2.0
 #MCU = at90usb646       # Teensy++ 1.0
 #MCU = at90usb1286      # Teensy++ 2.0
+MCU = atmega32u2       # TMK Converter Rev.2
 
 
 # Processor frequency.
diff --git a/converter/news_usb/config.h b/converter/news_usb/config.h
new file mode 100644 (file)
index 0000000..c444941
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+Copyright 2016 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x5021
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    t.m.k.
+#define PRODUCT         SONY NEWS keyboard converter
+#define DESCRIPTION     converts SONY NEWS protocol into USB
+
+
+/* matrix size */
+#define MATRIX_ROWS 16  // keycode bit: 3-0
+#define MATRIX_COLS 8   // keycode bit: 6-4
+
+
+/* legacy keymap support */
+#define USE_LEGACY_KEYMAP
+
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
+)
+
+
+/* Asynchronous USART
+ * 8-data bit, non parity, 1-stop bit, no flow control
+ */
+#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__)
+#   define NEWS_KBD_RX_VECT        USART1_RX_vect
+#   define NEWS_KBD_RX_DATA        UDR1
+#   define NEWS_KBD_RX_BAUD        9600
+#   define NEWS_KBD_RX_UBBR        ((F_CPU/(16UL*NEWS_KBD_RX_BAUD))-1)
+#   define NEWS_KBD_RX_INIT()      do { \
+        UBRR1L = (uint8_t) NEWS_KBD_RX_UBBR; \
+        UBRR1H = (uint8_t) (NEWS_KBD_RX_UBBR>>8); \
+        UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); \
+    } while(0)
+#else
+#   error "USART configuration is needed."
+#endif
+
+#endif
index adce014c9e408ddc9b457feb3812541fdc2775b6..3cad3a1fcb4c13c4209cc6ce295e46fb1b6bad62 100644 (file)
@@ -45,7 +45,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* Asynchronous USART
  * 8-data bit, non parity, 1-stop bit, no flow control
  */
-#ifdef __AVR_ATmega32U4__
+#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__)
 #   define NEWS_KBD_RX_VECT        USART1_RX_vect
 #   define NEWS_KBD_RX_DATA        UDR1
 #   define NEWS_KBD_RX_BAUD        9600
Imprint / Impressum