Skip to content

V3.250814.0 - True NKRO Support

Latest
Compare
Choose a tag to compare
@goonmandu goonmandu released this 14 Aug 06:58
· 3 commits to main since this release

V3.250814.0

Based on commit d42d556.

Use the *.hex and *.eep files to flash. *.hex is for the firmware itself, and *.eep is for the default 75% keymap EEPROM.

The *.lss file is the assembly listing file for manual machine code inspection.

Breaking Changes

Hardware

none

Software

none

New Features

  • Transition from 32KRO to True NKRO by using bitfields to represent each key.

Fixes

  • CRITICAL: The keyboard may violate 1000 Hz polling rate when all 81 keys are physically installed.
    • Fixed "by itself" when transitioning to True NKRO as operations are more efficient with bitfields than appending each keycode byte to the HID report array.

Known Issues

none

Technical Details

Pin Assignments

AVR Pro Micro Function Notes
PD0 TXO Row Mux S0
PD1 RXI Row Mux S1
PD2 2 Row Mux S2
PD3 3 Row Mux S3
PF4 A3 Key Mux S0
PF5 A2 Key Mux S1
PF6 A1 Key Mux S2
PF7 A0 Key Mux S3
PD4 4 Knob "CLK" aka signal "A", pulled high
PD7 6 Knob "DT" aka signal "B", pulled high
PC6 5 Knob Button pulled high
PE6 7 Caps Lock LED
PB4 8 Num Lock LED
PB5 9 Scr Lock LED used as debug bit if
DEBUG_BITS is defined.
PB6 10 SPI /SS
PB3 14 SPI MISO
PB1 15 SPI SCLK

Memory Usage

Section Bytes Usage
Flash 12768 44.5% of 28672
SRAM 1452 56.7% of 2560

Binaries are compiled with the following platformio.ini:

[env:sparkfun_promicro16]
platform = atmelavr
board = sparkfun_promicro16

build_flags = 
    # Compilation Criticals
    -D F_CPU=16000000UL
    -D F_USB=16000000UL
    -D BOARD=BOARD_MICRO
    -D USE_STATIC_OPTIONS=0
    
    # Warnings/Errors
    -Wall
    -Wextra
    -Wno-unused-parameter

    # Optimization
    -Ofast

    # Development/Debug
    # -D PROTO_BOARD
    # -D DEBUG_BITS

upload_flags = 
    # Erase EEPROM
    # -e