summaryrefslogtreecommitdiffstats
path: root/drivers/avr
Commit message (Collapse)AuthorAgeFilesLines
* Hid joystick interface (#4226)a-chol2020-08-291-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * add support for hid gamepad interface add documentation for HID joystick Add joystick_task to read analog axes values even when no key is pressed or release. update doc Update docs/feature_joystick.md Manage pin setup and read to maintain matrix scan after analog read * Incorporates patches and changes to HID reporting There are some patches provided by @a-chol incorporated on this commit, and also some changes I made to the HID Report structure. The most interesting is the one dealing with number of buttons: Linux doesn't seem to care, but Windows requires the HID structure to be byte aligned (that's in the spec). So if one declares 8/16/32... buttons they should not have any issues, but this is what happens when you have 9 buttons: ``` bits |0|1|2|3|4|5|6|7| |*|*|*|*|*|*|*|*| axis 0 (report size 8) |*|*|*|*|*|*|*|*| ... |*|*|*|*|*|*|*|*| |*|*|*|*|*|*|*|*| |*|*|*|*|*|*|*|*| |*|*|*|*|*|*|*|*| |*|*|*|*|*|*|*|*| axis 6 |*|*|*|*|*|*|*|*| first 8 buttons (report size 1) |*| | | | | | | | last of 9 buttons, not aligned ``` So for that I added a conditonal that will add a number of reports with size 1 to make sure it aligns to the next multiple of 8. Those reports send dummy inputs that don't do anything aside from aligning the data. Tested on Linux, Windows 10 and Street Fighter (where the joystick is recognized as direct-input) * Add save and restore of each pin used in reading joystick (AVR). Allow output pin to be JS_VIRTUAL_AXIS if the axis is connected to Vcc instead of an output pin from the MCU. Fix joystick report id Fix broken v-usb hid joystick interface. Make it more resilient to unusual settings (none multiple of eight button count, 0 buttons or 0 axes) Correct adc reading for multiple axes. Piecewise range conversion for uncentered raw value range. Input, output and ground pin configuration per axis. Documentation fixes * Fix port addressing for joystick analog read * The other required set of changes As per the PR, the changes still holding it up. Add onekey for testing. Fix ARM builds. Fix device descriptor when either axes or buttons is zero. Add compile-time check for at least one axis or button. Move definition to try to fix conflict. PR review comments. qmk cformat * avoid float functions to compute range mapping for axis adc reading * Remove V-USB support for now. Updated docs accordingly. * Update tmk_core/protocol/lufa/lufa.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Update tmk_core/protocol/usb_descriptor.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Update tmk_core/protocol/usb_descriptor.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Update tmk_core/protocol/usb_descriptor.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Add support for joystick adc reading for stm32 MCUs. Fix joystick hid report sending for chibios * Fix HID joystick report sending for ChibiOS. Add one analog axis to the onekey:joystick keymap. Fix pin state save and restore during joystick analog read for STM32 MCUs. * Update tmk_core/protocol/chibios/usb_main.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Update tmk_core/protocol/lufa/lufa.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Add missing mcuconf.h and halconf.h to onekey:joystick keymap. Add suggested fixes from PR. * Switch saveState and restoreState signature to use pin_t type. onekey:joystick : add a second axis, virtual and programmatically animated. * Update docs/feature_joystick.md Co-Authored-By: Ryan <fauxpark@gmail.com> * Update docs/feature_joystick.md Co-Authored-By: Ryan <fauxpark@gmail.com> * Add PR corrections * Remove halconf.h and mcuconf.h from onekey keymaps * Change ADC_PIN to A0 Co-authored-by: achol <allecooll@hotmail.com> Co-authored-by: José Júnior <jose.junior@gmail.com> Co-authored-by: a-chol <achol@notamail.com> Co-authored-by: Nick Brassel <nick@tzarc.org> Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove inclusion of adafruit_ble.h from ssd1306.c (#9355)Ryan2020-08-291-3/+0
|
* Fix incorrect delay when setting WS2812 (and similar) leds (#9302)Joshua Diamond2020-06-202-55/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix incorrect delay when setting WS2812 (and similar) leds * Add documentation for WS2812_DELAY_MICROSECONDS * Remove improper cast to uint8_t Co-authored-by: Sergey Vlasov <sigprof@gmail.com> * Remove unneeded cast to uint8_t and correct math Co-authored-by: Sergey Vlasov <sigprof@gmail.com> * microseconds -> µs Co-authored-by: Ryan <fauxpark@gmail.com> * Make documentation better match the spec sheet. Co-authored-by: Ryan <fauxpark@gmail.com> * Rename macro to match spec sheet * Further correction to the delay maths for the SPI case. Co-authored-by: Joel Challis <git@zvecr.com> * Move ws2812_common.h to the drivers directory * Revert "Further correction to the delay maths for the SPI case." This reverts commit e61b56a2cfc7dfec9992a7a3af92afa50e5b8ec0. * Remove ws2812_setleds_pin(); consolidate ws2812.h Co-authored-by: Sergey Vlasov <sigprof@gmail.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Joel Challis <git@zvecr.com>
* adds support for the atmega328 (#9043)itsnoteasy2020-06-103-4/+4
| | | Co-authored-by: Ryan <fauxpark@gmail.com>
* Fix capitalisation of "GitHub" (#9184)Ryan2020-05-255-5/+5
|
* QMK-ify some GPIO macros (#8315)Ryan2020-04-302-5/+4
|
* Fix AVR SPI parameter configuration, remove timeouts due to sync protocol. ↵Nick Brassel2020-04-132-60/+73
| | | | (#8775)
* format code according to conventions [skip ci]QMK Bot2020-04-081-5/+5
|
* spi_master for AVR (#8299)Ryan2020-04-082-0/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Change _delay_ms/us() to wait_ms/us() * Switch to platform-agnostic GPIO macros * Add AVR spi_master and migrate Adafruit BLE code * Set verbose back to false * Add clock divisor, bit order and SPI mode configuration for init * Add start and stop functions * Move configuration of mode, endianness and speed to `spi_start()` * Some breaks here would be good * Default Adafruit BLE clock divisor to 4 (2MHz on the Feather 32U4) * Remove mode and divisor enums * Add some docs * No hr at EOF * Add links in sidebar
* Fix AVR ws2812 when ADDRESS_BASE is non zero (#8646)Joel Challis2020-04-022-22/+17
| | | | | | | * Fix AVR ws2812 when ADDRESS_BASE is non zero * fix port * remove unused function defs
* Remove pro_micro.h (#8374)Ryan2020-03-141-324/+0
| | | | | * Remove pro_micro.h * Include quantum.h
* Clean up includes for glcdfont headers (#7745)Ryan2020-03-011-12/+1
| | | | | | | | * Clean up includes for glcdfont headers * Remove pragma once, most of these are not headers * Missed these
* Update split serial code to use driver pattern (#7990)Joel Challis2020-01-242-0/+570
| | | | | | * Move avr serial code to drivers * Update src+= serial.c to driver pattern
* Improve support and docs for ADC driver (#7191)fauxpark2019-12-082-39/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Improve support and docs for ADC driver * Comment ADC channels * Move to Makers and Modders section, and fix usage instructions * Flesh out intro * Superscript 328P note * Fix pin_to_mux LUT * Support USB64/1287 as well * analogReadPin() defaults to 0V mux on invalid pin * Update pinToMux() function documentation * Dot * Accept (some of) the `qmk cformat` changes * Do clang-format properly * More wording tweaks * Link to encoder docs
* Move Ergodox EZ RGB Light code to custom driver (#7309)Drashna Jaelre2019-11-141-127/+2
| | | | | | | | | | | | | | | | | | | * Move Ergodox EZ RGB code to custom driver Also implements full addressing of Ergodox EZ's LED Strip, as written by seebs Co-authored-by: Seebs <seebs@seebs.net> * Make Clipping range accessible for custom drivers * Remove RGBW_BB_TWI from driver and docs * Revert changes to clipping range support * Use just rgblight_set instead of full custom driver * Convert to i2c_master commands * Rename rgblight driver and clean up includes
* Unify RGB and RGBW commands (#7297)Drashna Jaelre2019-11-093-25/+12
| | | | | | | | | | | | | | | | | | | | | | * Fix unicode in comments Co-Authored-By: fauxpark <fauxpark@gmail.com> * Remove separate RGBW implementation for a unified function * Set White to 0 in RGBW LEDs This is just to get this working, later, proper brightness can be handled elsewhere. * Use us instead of nanoseconds(?) since it renders correctly on web * Remove RGBW function from arm/ws2812.h * Remove RGBW function from arm/ws2812.c * Formatting changes * Add doc info
* Refactor ps2avrgb i2c ws2812 to core (#7183)Joel Challis2019-10-291-0/+31
| | | | | | | | | | | | | | | | | | | | * Refactor ps2avrgb i2c ws2812 to core * Refactor jj40 to use ws2812 i2c driver * Refactor ps2avrgb template to use ws2812 i2c driver * Add ws2812 stub files * clang-format and driver config * Add ws2812 driver docs * Fix default config values * Update tmk_core/protocol/vusb/main.c Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Reduce duplication for ARM/AVR ws2812 RGB Matrix driver (#7180)Joel Challis2019-10-292-57/+11
| | | | | | * Reduce duplication for ARM/AVR ws2812 rgb_matrix driver * Reduce duplication for ARM/AVR ws2812 rgb_matrix driver - Fix setled_all use of r,g,b
* Fix battery level code in adafruit_ble.cpp (#6648)bwhelm2019-09-041-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix battery level code in adafruit_ble.cpp The code in tsk_core/protocol/lufa/adafluit_ble.cpp that polls the battery level for the Adafruit feather BLE controller reads the regulated voltage, not the raw voltage coming from the battery. To do that, the Adafruit Feather docs say you should read from pin A9: https://learn.adafruit.com/adafruit-feather-32u4-basic-proto/power-management#measuring-battery-4-9. (See also https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/pinouts#logic-pins-2-9.) I'm not sure why, but analogRead(9); doesn't read the correct pin. Checking all available analog pins experimentally, it turns out that analogRead(7); returns the correct value. So the code above should read: state.vbat = analogRead(7); * Update tmk_core/protocol/lufa/adafruit_ble.cpp Co-Authored-By: Drashna Jaelre <drashna@live.com> * Remove old comment * Fix linking error * Remove `#ifdef` around `#include analog.h`. * Really fix linking error
* Removed prescaler define from avr i2c, as it was impossible to use (#6617)Mikkel Jeppesen2019-08-301-2/+2
|
* clang-format changesskullY2019-08-3016-1603/+1195
|
* Add GPL3 header to avr i2c files (#6332)Drashna Jaelre2019-07-154-2/+62
| | | | | | | | * Add GPL3 header to avr i2c files * Add for i2c_slave as well * Fix formatting of license header
* Moving rgb typedefs into a single location (#5978)XScorpion22019-06-042-2/+2
| | | | | Because someone named the define poorly Using full relative path as handwired/promethium has a color.h file
* Fixing incorrect usage of RGBLED_NUM in ws2812 driver when used with RGB ↵XScorpion22019-05-011-1/+1
| | | | Matrix (#5744)
* OLED Driver FeatureRyan Caltabiano2019-04-202-5/+5
|
* Features/ws2812 matrix driver (#5418)XScorpion22019-04-142-1/+29
| | | | | | * WS2812 driver implementation for RGB Matrix * Added driver configuration docs
* i2c_init update to work with atmega32a boards (#5562)MechMerlin2019-04-061-0/+12
| | | | | | | * On i2c_init, enable two wire interface, twi interrupt, and slave address ACK along with pull up resistors. * thanks to some testing by drashna, we know that setting TWI doesn't work for all boards. Putting the new code into an ifdef block
* Fix return value of i2c_readReg and i2c_receive (#5410)zvecr2019-03-151-2/+2
|
* Next set of split_common changes (#4974)James Churchill2019-03-123-95/+69
| | | | | | | | | | | | | | | | * Update split_common to use standard i2c drivers * Eliminate RGB_DIRTY/BACKLIT_DIRTY * Fix avr i2c_master error handling * Fix i2c_slave addressing * Remove unneeded timeout on i2c_stop() * Fix RGB I2C transfers * Remove incorrect comment
* Added APA102 support (#4940)Mikkel Jeppesen2019-02-152-0/+147
| | | | | | | | | | | | * Fixed pin for RGB * Re-did apa102 stuff * changed to use pincontrol functions * Removed a newline? * Changed to comply with project style
* Practice60 RGB and PWM Backlight (#4929)Andrew Kannan2019-01-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | * Update Practice60 to enable RGB via SPI DMA and use PWM backlight breathing * Correct stm32f103c8t6 flash size in eeprom definition * Remove unused files and improve ifdef checks * Update quantum/rgblight.c Co-Authored-By: awkannan <andrew.kannan@klaviyo.com> * Update quantum/rgblight.c Co-Authored-By: awkannan <andrew.kannan@klaviyo.com> * EEPROM implementation fix and updated p60 code * Update define * Remove dead code * Update keymap to remove test key * Update keymap again
* Rename i2c_slave functions so it can coexist with i2c_master (#4875)James Churchill2019-01-222-20/+18
| | | Also merges tx/rx buffers, as only one is necessary.
* Adds support for JacoBurge's TouchPad (#4186)Jack Humbert2019-01-101-1/+4
| | | | | | | | | | | | | | | | * add touchpad * progress * working with leds and vibrations * adds readme * Update keyboards/touchpad/readme.md Co-Authored-By: jackhumbert <jack.humb@gmail.com> * updates
* Remove all of the deprecated RGB definesDrashna Jaelre2018-10-221-3/+0
| | | | Fixes #3641
* DC01 updates and I2C avr speed overwrite (#4088)yiancar2018-10-081-0/+2
| | | | | | | | | * DC01 updates and I2C avr speed overwrite - General updating of DC01 - Made F_SCL define in AVR I2C driver overwritable from config.h * Update drivers/avr/i2c_master.c
* Rgb matrix arm (#3648)yiancar2018-08-152-476/+0
| | | | | | | | | | | * Addition of I2C master driver for STM32, Generalization of ISSI3731 driver - Addition of an i2c_master driver for STM32 to replicate expectations of AVR driver. - Moved ISSI3731 driver one level up to make it accesible by both architectures. - Renamed ISSI3731 functions to a more general name for preparation of other ISSI drivers. - Added compiler directives where necessary to differenciate each architecture. * converted tabs to spaces
* DC01 keyboard addition (#3428)yiancar2018-07-184-142/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * DC01 initial commit - Addition of directories - Left readme * Initial commit of left half * Initial files for right half * arrow * i2c adjustments * I2C slave and DC01 refractoring - Cleaned up state machine of I2C slave driver - Modified DC01 left to use already pressent I2C master driver - Modified DC01 matrixes * Fixed tabs to spaces * Addition of Numpad * Add keymaps - Orthopad keymap for numpad module - Numpad keymap for numpad module - ISO, ANSI and HHKB version of keymap for right module * Minor matrix.c fixes * Update Readmes
* Integrating Peter Fleury's HD44780 LCD library (#3209)Max Audron2018-07-152-0/+963
| | | | | | | | | | | | | | | | | | | | | | | | * integrated Peter Fleury's LCD library for HD44780 LCDs * fixed typo * cleanup finished * add documentation * added HD44780 documentation * removed keyboard from .gitmodules * resolved merge conflict * removed edit of kira75s rules.mk made by merge * moved hd44780 to drivers/avr * Added licence info to hd44780 files * Added link to hd44780 docs.
* Add I2C slave libraryyiancar2018-07-152-0/+119
| | | | - Add I2C slave library for general use.
* remove comment codeJack Humbert2018-06-231-1/+0
|
* adds immediate i2c return, fixes ez matrix codeJack Humbert2018-06-232-6/+9
|
* refactor, non-workingJack Humbert2018-06-224-108/+147
|
* start updating i2c for timeoutsJack Humbert2018-06-202-71/+46
|
* adds timeout to avr i2cJack Humbert2018-06-124-42/+115
|
* revert some attempts, update i2cJack Humbert2018-06-121-1/+1
|
* i2c fixJack Humbert2018-05-152-21/+28
|
* Rgb matrix fixes, I2C library can now retry if it has failed (#2943)yiancar2018-05-145-339/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Added Modular keyboards L,R and NUM Created code modules for the 3 modules of the modular keyboard. Original idea by MechboardsUK. Uses i2c implementation similar to lets split * Remove modular from master This is to fix incorrect branching * General fixes for RGB_matrix - Complited speed support for all effects - Fixed raindrop effects to initialized after toggle - Fixed raindrop effects to use all available LEDs - Fixed effect step reverse function - Moved RGB_MATRIX_SOLID_REACTIVE under correct flag * Documentation update for RGBmatrix * More doc updates * I2C library can now retry if it has failed - Replaced the original TWIlib by LFKeyboard's modified version - Allows for an extra argument on TWITransmitData, if blocking is set to 1 function will retry to transmit on failure. Good for noisy boards. * RGB Matrix, use alternative I2C library TWIlib seems to be hanging for me sometimes probably due to ISR routine. I have used i2c_master as a good alternative. Note: this commit is for Wilba6582 to verify before merge * Update rgb_matrix.c * RGB matrix cleanup - Remove TWIlib
* Adds IS31FL3731 RGB Matrix Implementation (#2910)Jack Humbert2018-05-084-0/+786
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * adds is31fl3731 rgb matrix implementation * fix build script for force pushes * allow bootloader size to be overwritten * adds planck light implementation * split led config into 2 arrays * idk * betterize register handling * update planck implementation * update planck * refine rgb interface * cleanup names, rgb matrix * start documentation * finish up docs * add effects list * clean-up merge * add RGB_MATRIX_SKIP_FRAMES * add support for at90usb1286 to bootloader options
* update to driver separationJack Humbert2017-09-151-17/+1
|
* fix implementation issues from SSD1306 clean up, added rotation (#1494)ishtob2017-07-122-8/+9
| | | | | | | | | | * moved OLED update task to keymap * fix splitting render display to keymap * Added rotation option for OLED, fixed splitting display render update to keymap * issues with attribute