Selaa lähdekoodia

usb_hid: Fix timer size uint16_t to uint32_t;

tags/v1.9
tmk 11 vuotta sitten
vanhempi
commit
c77c5043a1

+ 9
- 0
common/debug.c Näytä tiedosto

#include <stdbool.h>
#include "debug.h"


bool debug_enable = false;
bool debug_matrix = false;
bool debug_keyboard = false;
bool debug_mouse = false;


+ 30
- 4
common/timer.c Näytä tiedosto





// counter resolution 1ms // counter resolution 1ms
volatile uint16_t timer_count = 0;
volatile uint32_t timer_count = 0;


void timer_init(void) void timer_init(void)
{ {
inline inline
uint16_t timer_read(void) uint16_t timer_read(void)
{ {
uint16_t t;
uint32_t t;

uint8_t sreg = SREG;
cli();
t = timer_count;
SREG = sreg;

return (t & 0xFFFF);
}

inline
uint32_t timer_read32(void)
{
uint32_t t;


uint8_t sreg = SREG; uint8_t sreg = SREG;
cli(); cli();
inline inline
uint16_t timer_elapsed(uint16_t last) uint16_t timer_elapsed(uint16_t last)
{ {
uint16_t t;
uint32_t t;

uint8_t sreg = SREG;
cli();
t = timer_count;
SREG = sreg;

return TIMER_DIFF_16((t & 0xFFFF), last);
}

inline
uint32_t timer_elapsed32(uint32_t last)
{
uint32_t t;


uint8_t sreg = SREG; uint8_t sreg = SREG;
cli(); cli();
t = timer_count; t = timer_count;
SREG = sreg; SREG = sreg;


return TIMER_DIFF_MS(t, last);
return TIMER_DIFF_32(t, last);
} }


// excecuted once per 1ms.(excess for just timer count?) // excecuted once per 1ms.(excess for just timer count?)

+ 6
- 3
common/timer.h Näytä tiedosto

#endif #endif


#define TIMER_DIFF(a, b, max) ((a) >= (b) ? (a) - (b) : (max) - (b) + (a)) #define TIMER_DIFF(a, b, max) ((a) >= (b) ? (a) - (b) : (max) - (b) + (a))
#define TIMER_DIFF_RAW(a, b) TIMER_DIFF(a, b, UINT8_MAX)
#define TIMER_DIFF_MS(a, b) TIMER_DIFF(a, b, UINT16_MAX)
#define TIMER_DIFF_8(a, b) TIMER_DIFF(a, b, UINT8_MAX)
#define TIMER_DIFF_16(a, b) TIMER_DIFF(a, b, UINT16_MAX)
#define TIMER_DIFF_32(a, b) TIMER_DIFF(a, b, UINT32_MAX)




#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
extern volatile uint16_t timer_count;
extern volatile uint32_t timer_count;




void timer_init(void); void timer_init(void);
void timer_clear(void); void timer_clear(void);
uint16_t timer_read(void); uint16_t timer_read(void);
uint32_t timer_read32(void);
uint16_t timer_elapsed(uint16_t last); uint16_t timer_elapsed(uint16_t last);
uint32_t timer_elapsed32(uint32_t last);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

+ 0
- 6
protocol/pjrc/main.c Näytä tiedosto

#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))




bool debug_enable = false;
bool debug_matrix = false;
bool debug_keyboard = false;
bool debug_mouse = false;


int main(void) int main(void)
{ {
DEBUG_LED_CONFIG; DEBUG_LED_CONFIG;

+ 8
- 0
protocol/usb_hid/README Näytä tiedosto

Restriction and Bug Restriction and Bug
------------------- -------------------
Not statble yet. Not statble yet.

Can't bus-reset a keyboard which already attached on bus properly.
Slow start up of Leonardo's bootloader causes this?
Need to unplug/plug a keyboard after firmware starts up.
MAX3421E doesn't work SAMPLEBUS well to know whether device connected or not.

Keyboard with other endpoints than boot keyboard may go wrong.
On my keyboard with mouse key the converter locks up when using mouse key function.

+ 2
- 2
protocol/usb_hid/override_wiring.c Näytä tiedosto



unsigned long millis() unsigned long millis()
{ {
return timer_read();
return timer_read32();
} }
unsigned long micros() unsigned long micros()
{ {
return timer_read() * 1000UL;
return timer_read32() * 1000UL;
} }
void delay(unsigned long ms) void delay(unsigned long ms)
{ {

+ 1
- 2
protocol/usb_hid/parser.cpp Näytä tiedosto

#include "parser.h" #include "parser.h"
#include "usb_hid.h" #include "usb_hid.h"


#include "leonardo_led.h"
#include "debug.h" #include "debug.h"




::memcpy(&usb_hid_keyboard_report, buf, sizeof(report_keyboard_t)); ::memcpy(&usb_hid_keyboard_report, buf, sizeof(report_keyboard_t));
usb_hid_time_stamp = millis(); usb_hid_time_stamp = millis();


LED_TX_TOGGLE;
debug("KBDReport: "); debug("KBDReport: ");
debug_hex(usb_hid_keyboard_report.mods); debug_hex(usb_hid_keyboard_report.mods);
debug(" --");
for (uint8_t i = 0; i < 6; i++) { for (uint8_t i = 0; i < 6; i++) {
debug(" "); debug(" ");
debug_hex(usb_hid_keyboard_report.keys[i]); debug_hex(usb_hid_keyboard_report.keys[i]);

+ 10
- 0
protocol/usb_hid/usb_hid.h Näytä tiedosto

#ifndef USB_HID_H
#define USB_HID_H

#include "report.h"


extern report_keyboard_t usb_hid_keyboard_report;
extern uint16_t usb_hid_time_stamp;

#endif

Loading…
Peruuta
Tallenna