Started dual color leds PWM functions and configs

I started to create the PWM functions and configs based on internet examples, it doesn't compile yet
pull/4126/head
fpazos 6 years ago
parent 989cdfbe8d
commit b30a63c6ff

@ -50,7 +50,7 @@
/* Backlighting */
#define GPIOC_BACKLIGHT_PIN 12
/*#define GPIOC_BACKLIGHT_PIN 15*/
/* In case your board has a "USB enable" hardware
controlled by a pin, define it here. (It could be just

@ -22,15 +22,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Highly Modified by Xydane
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEYMAP_SETENTA(
[_NORMAL] = KEYMAP_SETENTA(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCREEN,KC_HOME, KC_END, \
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DELETE, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,KC_PGDOWN, \
KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,KC_UP, F(1), \
LSPO_KEY, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, RSPC_KEY,KC_UP, F(1), \
KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,F(0), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ),
KEYMAP_SETENTA(
[_FNUNO] = KEYMAP_SETENTA(
KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE,KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_P7, KC_P8, KC_P9, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, \
@ -38,7 +38,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_P0, KC_PDOT,KC_PENT, KC_PSLS, KC_TRNS,KC_TRNS,KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, F(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS ),
KEYMAP_SETENTA(
[_FNDOS] = KEYMAP_SETENTA(
KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE,KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_P7, KC_P8, KC_P9, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, \
@ -51,6 +51,7 @@ const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
[1] = ACTION_LAYER_TOGGLE(2), // to Fn overlay
[2] = ACTION_FUNCTION(2),
[3] = ACTION_FUNCTION(3),
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
@ -60,5 +61,32 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
palTogglePad(GPIOA, 1);
}
break;
// Continuar para incluir funciones propias
/*case 3:
if (record->event.pressed) {
function_led(algo);
}
break;*/
}
}
/* Layer based ilumination, set min value to 0xFFF */
/*uint32_t layer_state_set_user(uint32_t state) {
switch (biton32(state)) {
case _FNUNO:
custom_function1(min1, min2;)
rgblight_setrgb (0xFF, 0x00, 0x00);
break;
case _FNDOS:
custom_function2(min1, min2;)
rgblight_setrgb (0x00, 0xFF, 0x00);
break;
default: // for any other layers, or the default layer
custom_function3(min1, min2;)
rgblight_setrgb (0x00, 0xFF, 0xFF);
break;
}
return state;
}*/

@ -8,7 +8,8 @@
#define PRODUCT_ID 0x6464
#define DEVICE_VER 0x0001
/* in python2: list(u"whatever".encode('utf-16-le')) */
/* at most 32 characters or the ugly hack in usb_main.c borks */
/* at most 32 characters or the ugly hack in usb_main.c works */
// Modified by Xydane
#define MANUFACTURER "QMK"
#define USBSTR_MANUFACTURER 'T', '\x00', 'M', '\x00', 'K', '\x00', ' ', '\x00', '\xc6', '\x00'
@ -22,5 +23,8 @@
#define MATRIX_COLS 15
#define DIODE_DIRECTION COL2ROW
#define LSPO_KEY KC_8
#define RSPC_KEY KC_9
#endif /* STM70_CONFIG_H_ */

@ -111,7 +111,7 @@
* @brief Enables the PWM subsystem.
*/
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
#define HAL_USE_PWM FALSE
#define HAL_USE_PWM TRUE
#endif
/**

@ -35,27 +35,60 @@ void led_set(uint8_t usb_led)
}
/* New leds configuration, decided to put here */
/*uint32_t layer_state_set_user(uint32_t state) {
switch (biton32(state)) {
case _RAISE:
rgblight_setrgb (0x00, 0x00, 0xFF);
break;
case _LOWER:
rgblight_setrgb (0xFF, 0x00, 0x00);
break;
case _PLOVER:
rgblight_setrgb (0x00, 0xFF, 0x00);
break;
case _ADJUST:
rgblight_setrgb (0x7A, 0x00, 0xFF);
break;
default: // for any other layers, or the default layer
rgblight_setrgb (0x00, 0xFF, 0xFF);
break;
}
return state;
}*/
/* New awesome dual color leds functions, animations and more */
/* Based on pwm_callback by fcayci: https://github.com/fcayci/STM32F4-ChibiOS/blob/master/pwm_callback/main.c */
static void pwmcb(PWMDriver *pwmp);
static PWMConfig pwmcfg = {
1000, // Clock frecuency (seconds) = 1/value
100, // PWM period (ticks = clockfrecuency * pwmperiod)
pwmcb, // Callback, disable with NULL
{
{PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* Enable Channel 0 */
{PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* Enable Channel 1 */
//{PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* Enable Channel 2 */
//{PWM_OUTPUT_ACTIVE_HIGH, NULL} /* Enable Channel 3 */
},
0, /* HW dependent part */
0
};
/*
* PWM callback.
* Each time calculate the next duty cycle.
*/
static void pwmcb(PWMDriver *pwmp) {
(void)pwmp;
static uint16_t dir = 0, width = 0;
if (dir == 0) {width = (width + 100);}
else {width = (width - 100);}
if (width >= 100) {dir = 1;}
else if (width == 0) {dir = 0;}
pwmEnableChannel(&PWMC15, 0, width);
pwmEnableChannel(&PWMC15, 1, 100-width);
//pwmEnableChannel(&PWMD4, 2, width);
//pwmEnableChannel(&PWMD4, 3, 100-width);
}
static void iniciarluces(void) {
palSetPadMode(GPIOC, 15, PAL_MODE_ALTERNATE(2)); /* Green */
palSetPadMode(GPIOC, 14, PAL_MODE_ALTERNATE(2)); /* Red */
pwmStart(&PWMC15, &pwmCFG);
}
// inline void gh60_caps_led_off(void) { DDRB &= ~(1<<2); PORTB &= ~(1<<2); }

@ -78,6 +78,9 @@ void matrix_init(void)
LED_ON();
wait_ms(500);
LED_OFF();
// Start of PWM dual color leds
iniciarluces();
}
uint8_t matrix_scan(void)

@ -132,7 +132,7 @@
* PWM driver system settings.
*/
#define STM32_PWM_USE_ADVANCED FALSE
#define STM32_PWM_USE_TIM1 FALSE
#define STM32_PWM_USE_TIM1 TRUE
#define STM32_PWM_USE_TIM2 FALSE
#define STM32_PWM_USE_TIM3 FALSE
#define STM32_PWM_USE_TIM4 FALSE

Loading…
Cancel
Save