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…
	
	Add table
		Add a link
		
	
		Reference in a new issue