diff options
| author | Damien <Dbroqua@users.noreply.github.com> | 2017-01-26 09:05:55 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-01-26 09:05:55 +0100 | 
| commit | b7b94bfb132aa5f2f79b587fcfa6b1197485db27 (patch) | |
| tree | 4cae966728b7b6baf101a7ab2b95eeff16cce141 /tmk_core/common | |
| parent | f91f0a715d51286064bfe808b0d463878a6d3588 (diff) | |
| parent | aac7c0aa4db6b27f4c8d8f3849f8fd41f07e892a (diff) | |
Merge pull request #17 from qmk/master
Merged from QMK project
Diffstat (limited to 'tmk_core/common')
| -rw-r--r-- | tmk_core/common/avr/bootloader.c | 12 | ||||
| -rw-r--r-- | tmk_core/common/avr/timer.c | 33 | ||||
| -rw-r--r-- | tmk_core/common/command.c | 3 | ||||
| -rw-r--r-- | tmk_core/common/keyboard.c | 2 | 
4 files changed, 40 insertions, 10 deletions
diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index ad547b9853..34db8d0b0a 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -1,6 +1,7 @@  #include <stdint.h>  #include <stdbool.h>  #include <avr/io.h> +#include <avr/eeprom.h>  #include <avr/interrupt.h>  #include <avr/wdt.h>  #include <util/delay.h> @@ -89,6 +90,12 @@ void bootloader_jump(void) {              _delay_ms(5);          #endif +        #ifdef BOOTLOADHID_BOOTLOADER +            // force bootloadHID to stay in bootloader mode, so that it waits +            // for a new firmware to be flashed +            eeprom_write_byte((uint8_t *)1, 0x00); +        #endif +          // watchdog reset          reset_key = BOOTLOADER_RESET_KEY;          wdt_enable(WDTO_250MS); @@ -114,6 +121,11 @@ void bootloader_jump(void) {      #endif  } +#ifdef __AVR_ATmega32A__ +// MCUSR is actually called MCUCSR in ATmega32A +#define MCUSR MCUCSR +#endif +  /* this runs before main() */  void bootloader_jump_after_watchdog_reset(void) __attribute__ ((used, naked, section (".init3")));  void bootloader_jump_after_watchdog_reset(void) diff --git a/tmk_core/common/avr/timer.c b/tmk_core/common/avr/timer.c index 84af444885..369015200d 100644 --- a/tmk_core/common/avr/timer.c +++ b/tmk_core/common/avr/timer.c @@ -29,25 +29,35 @@ volatile uint32_t timer_count;  void timer_init(void)  { -    // Timer0 CTC mode -    TCCR0A = 0x02; -  #if TIMER_PRESCALER == 1 -    TCCR0B = 0x01; +    uint8_t prescaler = 0x01;  #elif TIMER_PRESCALER == 8 -    TCCR0B = 0x02; +    uint8_t prescaler = 0x02;  #elif TIMER_PRESCALER == 64 -    TCCR0B = 0x03; +    uint8_t prescaler = 0x03;  #elif TIMER_PRESCALER == 256 -    TCCR0B = 0x04; +    uint8_t prescaler = 0x04;  #elif TIMER_PRESCALER == 1024 -    TCCR0B = 0x05; +    uint8_t prescaler = 0x05;  #else  #   error "Timer prescaler value is NOT vaild."  #endif +#ifndef __AVR_ATmega32A__ +    // Timer0 CTC mode +    TCCR0A = 0x02; + +    TCCR0B = prescaler; +      OCR0A = TIMER_RAW_TOP;      TIMSK0 = (1<<OCIE0A); +#else +    // Timer0 CTC mode +    TCCR0 = (1 << WGM01) | prescaler; + +    OCR0 = TIMER_RAW_TOP; +    TIMSK = (1 << OCIE0); +#endif  }  inline @@ -107,7 +117,12 @@ uint32_t timer_elapsed32(uint32_t last)  }  // excecuted once per 1ms.(excess for just timer count?) -ISR(TIMER0_COMPA_vect) +#ifndef __AVR_ATmega32A__ +#define TIMER_INTERRUPT_VECTOR TIMER0_COMPA_vect +#else +#define TIMER_INTERRUPT_VECTOR TIMER0_COMP_vect +#endif +ISR(TIMER_INTERRUPT_VECTOR, ISR_NOBLOCK)  {      timer_count++;  } diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 5f29bc0b4e..f79d5a257b 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -235,8 +235,11 @@ static void print_status(void)      print("\n\t- Status -\n");      print_val_hex8(host_keyboard_leds()); +#ifndef PROTOCOL_VUSB +    // these aren't set on the V-USB protocol, so we just ignore them for now      print_val_hex8(keyboard_protocol);      print_val_hex8(keyboard_idle); +#endif  #ifdef NKRO_ENABLE      print_val_hex8(keymap_config.nkro);  #endif diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 371d93f3e5..7653507928 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -188,7 +188,7 @@ MATRIX_LOOP_END:  #endif  #ifdef VISUALIZER_ENABLE -    visualizer_update(default_layer_state, layer_state, host_keyboard_leds()); +    visualizer_update(default_layer_state, layer_state, visualizer_get_mods(), host_keyboard_leds());  #endif      // update LED  | 
