diff --git a/converter/m0110_usb/Makefile b/converter/m0110_usb/Makefile index d98e6855..66eae880 100644 --- a/converter/m0110_usb/Makefile +++ b/converter/m0110_usb/Makefile @@ -1,5 +1,5 @@ # Target file name (without extension). -TARGET = m0110 +TARGET = m0110_lufa # Directory common source filess exist TOP_DIR = ../.. @@ -8,11 +8,17 @@ TOP_DIR = ../.. TARGET_DIR = . # keyboard dependent files -SRC = keymap.c \ - matrix.c \ +SRC = matrix.c \ led.c \ m0110.c +# To use own keymap file run make like: make keymap=hasu +ifdef keymap + SRC += keymap_$(keymap).c +else + SRC += keymap.c +endif + CONFIG_H = config.h @@ -32,6 +38,29 @@ MCU = atmega32u4 # Teensy 2.0 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 +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + # Boot Section Size in bytes # Teensy halfKay 512 # Atmel DFU loader 4096 @@ -61,7 +90,7 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) -include $(TOP_DIR)/protocol/pjrc.mk +include $(TOP_DIR)/protocol/lufa.mk include $(TOP_DIR)/protocol.mk include $(TOP_DIR)/common.mk include $(TOP_DIR)/rules.mk diff --git a/converter/m0110_usb/Makefile.lufa b/converter/m0110_usb/Makefile.lufa deleted file mode 100644 index 8266409c..00000000 --- a/converter/m0110_usb/Makefile.lufa +++ /dev/null @@ -1,90 +0,0 @@ -# Target file name (without extension). -TARGET = m0110_lufa - -# Directory common source filess exist -TOP_DIR = ../.. - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# keyboard dependent files -SRC = keymap.c \ - matrix.c \ - led.c \ - m0110.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 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -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 -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# 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. -# -#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 - - - -#---------------- Programming Options -------------------------- -PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TOP_DIR) - - -include $(TOP_DIR)/protocol/lufa.mk -include $(TOP_DIR)/protocol.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk diff --git a/converter/m0110_usb/Makefile.hasu b/converter/m0110_usb/Makefile.pjrc similarity index 63% rename from converter/m0110_usb/Makefile.hasu rename to converter/m0110_usb/Makefile.pjrc index b35b3cce..37977a38 100644 --- a/converter/m0110_usb/Makefile.hasu +++ b/converter/m0110_usb/Makefile.pjrc @@ -1,5 +1,5 @@ # Target file name (without extension). -TARGET = m0110 +TARGET = m0110_pjrc # Directory common source filess exist TOP_DIR = ../.. @@ -8,11 +8,17 @@ TOP_DIR = ../.. TARGET_DIR = . # keyboard dependent files -SRC = keymap_hasu.c \ - matrix.c \ +SRC = matrix.c \ led.c \ m0110.c +# To use own keymap file run make like: make keymap=hasu +ifdef keymap + SRC += keymap_$(keymap).c +else + SRC += keymap.c +endif + CONFIG_H = config.h @@ -32,13 +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 -#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support -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 diff --git a/converter/m0110_usb/README.md b/converter/m0110_usb/README.md index 80503e87..bd8bef9f 100644 --- a/converter/m0110_usb/README.md +++ b/converter/m0110_usb/README.md @@ -11,10 +11,16 @@ you can use other board with USB AVR like `ATmega32U4` and `AT90USB`. +Update +------ +- 2013/08 Change port for signals PF to PD + + + Connection ---------- You need 4P4C plug and cable to connect Teensy or other AVR dev board into the keyboard. -Teensy port `PF0` is assigned for `CLOCK` line and `PF1` for `DATA` by default, +Teensy port `PD0` is assigned for `CLOCK` line and `PD1` for `DATA` by default, you can change pin configuration with editing *config.h*. You can find 4P4C plugs on telephone handset cable. Note that it is *crossover* connection @@ -53,8 +59,8 @@ You can edit *Makefile* and *config.h* to change compile options and pin configu $ git clone git://github.com/tmk/tmk_keyboard.git (or download source) $ cd m0110_usb - $ make -f Makefile.lufa clean - $ make -f Makefile.lufa + $ make -f Makefile clean + $ make -f Makefile and program your Teensy with [PJRC Teensy loader](http://www.pjrc.com/teensy/loader.html). diff --git a/converter/m0110_usb/config.h b/converter/m0110_usb/config.h index dc446414..2f63a3a4 100644 --- a/converter/m0110_usb/config.h +++ b/converter/m0110_usb/config.h @@ -21,7 +21,7 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0110 -#define DEVICE_VER 0x0100 +#define DEVICE_VER 0x0101 #define MANUFACTURER t.m.k. #define PRODUCT M0110 keyboard converter #define DESCRIPTION convert M0110 keyboard to USB @@ -50,13 +50,13 @@ along with this program. If not, see . /* ports */ -#define M0110_CLOCK_PORT PORTF -#define M0110_CLOCK_PIN PINF -#define M0110_CLOCK_DDR DDRF +#define M0110_CLOCK_PORT PORTD +#define M0110_CLOCK_PIN PIND +#define M0110_CLOCK_DDR DDRD #define M0110_CLOCK_BIT 0 -#define M0110_DATA_PORT PORTF -#define M0110_DATA_PIN PINF -#define M0110_DATA_DDR DDRF +#define M0110_DATA_PORT PORTD +#define M0110_DATA_PIN PIND +#define M0110_DATA_DDR DDRD #define M0110_DATA_BIT 1 #endif diff --git a/converter/m0110_usb/keymap_hasu.c b/converter/m0110_usb/keymap_hasu.c index e3bdb5ee..3608dac9 100644 --- a/converter/m0110_usb/keymap_hasu.c +++ b/converter/m0110_usb/keymap_hasu.c @@ -19,7 +19,6 @@ along with this program. If not, see . #include #include #include -#include "usb_keyboard.h" #include "keycode.h" #include "print.h" #include "debug.h" @@ -153,7 +152,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------' `---------------' */ KEYMAP( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,EQL, PSLS,PAST, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,EQL, PSLS,PAST, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, P7, P8, P9, PMNS, LCTL,A, S, D, F, G, H, J, K, L, FN1, QUOT, FN0, P4, P5, P6, PPLS, LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, FN3, P1, P2, P3, PENT, @@ -161,7 +160,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // HHKB & WASD KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, P7, P8, P9, PMNS, LCTL,VOLD,VOLU,MUTE,NO, NO, NO, NO, HOME,PGUP,LEFT,RGHT, FN0, P4, P5, P6, PPLS, LSFT,NO, NO, NO, NO, NO, NO, NO, END, PGDN,DOWN, FN3, P1, P2, P3, PENT, @@ -169,7 +168,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // vi mousekeys KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, CAPS,NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,PSCR,SLCK,PAUS, P7, P8, P9, PMNS, LCTL,VOLD,VOLU,MUTE,NO, NO, MS_L,MS_D,MS_U,MS_R,FN1, NO, ENT, P4, P5, P6, PPLS, LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,NO, NO, NO, NO, P1, P2, P3, PENT, @@ -177,7 +176,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // vi cusorkeys KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, CAPS,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, PSCR,SLCK,PAUS, P7, P8, P9, PMNS, LCTL,NO, NO, NO, NO, NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, P4, P5, P6, PPLS, LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, NO, P1, P2, P3, PENT,