Double timer interval that wasn't right for an unknown reason. Adjust mouse kinetic values accordingly. Reprioritize interrupts to make mouse pointer movement as smooth as possible.
This commit is contained in:
@@ -11,8 +11,9 @@
|
||||
// Main bus
|
||||
|
||||
#define I2C_MAIN_BUS_BASEADDR I2C0
|
||||
#define I2C_MASTER_BUS_CLK_SRC I2C0_CLK_SRC
|
||||
#define I2C_MAIN_BUS_BAUD_RATE 100000 // 100 kHz works even with a 20 meter long bridge cable.
|
||||
#define I2C_MAIN_BUS_IRQ_ID I2C0_IRQn
|
||||
#define I2C_MAIN_BUS_CLK_SRC I2C0_CLK_SRC
|
||||
#define I2C_MAIN_BUS_BAUD_RATE 100000 // 100 kHz works even with a 20 meter long bridge cable.
|
||||
#define I2C_MAIN_BUS_MUX kPORT_MuxAlt7
|
||||
|
||||
#define I2C_MAIN_BUS_SDA_GPIO GPIOD
|
||||
@@ -28,8 +29,9 @@
|
||||
// EEPROM bus
|
||||
|
||||
#define I2C_EEPROM_BUS_BASEADDR I2C1
|
||||
#define I2C_EEPROM_BUS_IRQ_ID I2C1_IRQn
|
||||
#define I2C_EEPROM_BUS_CLK_SRC I2C1_CLK_SRC
|
||||
#define I2C_EEPROM_BUS_BAUD_RATE 1000000 // 1 Mhz is the maximum speed of the EEPROM.
|
||||
#define I2C_EEPROM_BUS_BAUD_RATE 1000000 // 1 Mhz is the maximum speed of the EEPROM.
|
||||
#define I2C_EEPROM_BUS_MUX kPORT_MuxAlt2
|
||||
|
||||
#define I2C_EEPROM_BUS_SDA_PORT PORTC
|
||||
|
||||
@@ -8,20 +8,22 @@
|
||||
#include "peripherals/led_driver.h"
|
||||
#include "peripherals/merge_sensor.h"
|
||||
#include "led_pwm.h"
|
||||
#include "slave_scheduler.h"
|
||||
#include "peripherals/adc.h"
|
||||
#include "init_peripherals.h"
|
||||
#include "eeprom.h"
|
||||
#include "microseconds/microseconds_pit.c"
|
||||
#include "timer.h"
|
||||
#include "key_debouncer.h"
|
||||
#include "usb_api.h"
|
||||
|
||||
void InitInterruptPriorities(void)
|
||||
{
|
||||
NVIC_SetPriority(I2C0_IRQn, 1);
|
||||
NVIC_SetPriority(I2C1_IRQn, 1);
|
||||
NVIC_SetPriority(USB0_IRQn, 1);
|
||||
NVIC_SetPriority(PIT1_IRQn, 6);
|
||||
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
|
||||
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
|
||||
NVIC_SetPriority(PIT_KEY_SCANNER_IRQ_ID, 3);
|
||||
NVIC_SetPriority(PIT_KEY_DEBOUNCER_IRQ_ID, 3);
|
||||
NVIC_SetPriority(I2C_MAIN_BUS_IRQ_ID, 3);
|
||||
NVIC_SetPriority(I2C_EEPROM_BUS_IRQ_ID, 3);
|
||||
NVIC_SetPriority(USB_IRQ_ID, 3);
|
||||
}
|
||||
|
||||
void delay(void)
|
||||
@@ -77,7 +79,7 @@ void InitI2cMainBus(void)
|
||||
i2c_master_config_t masterConfig;
|
||||
I2C_MasterGetDefaultConfig(&masterConfig);
|
||||
masterConfig.baudRate_Bps = I2C_MAIN_BUS_BAUD_RATE;
|
||||
uint32_t sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC);
|
||||
uint32_t sourceClock = CLOCK_GetFreq(I2C_MAIN_BUS_CLK_SRC);
|
||||
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,11 @@ void Timer_Init(void)
|
||||
pit_config_t pitConfig;
|
||||
PIT_GetDefaultConfig(&pitConfig);
|
||||
PIT_Init(PIT, &pitConfig);
|
||||
PIT_SetTimerPeriod(PIT, PIT_TIMER_CHANNEL, MSEC_TO_COUNT(TIMER_INTERVAL_MSEC, PIT_SOURCE_CLOCK));
|
||||
|
||||
// TODO: Why the interval needs to be multiplied by two to arrive to the correct timing?
|
||||
// Figure it out and clean this up.
|
||||
PIT_SetTimerPeriod(PIT, PIT_TIMER_CHANNEL, MSEC_TO_COUNT(TIMER_INTERVAL_MSEC*2, PIT_SOURCE_CLOCK));
|
||||
|
||||
PIT_EnableInterrupts(PIT, PIT_TIMER_CHANNEL, kPIT_TimerInterruptEnable);
|
||||
EnableIRQ(PIT_TIMER_IRQ_ID);
|
||||
PIT_StartTimer(PIT, PIT_TIMER_CHANNEL);
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#define USB_DEVICE_CLASS 0x00
|
||||
#define USB_DEVICE_SUBCLASS 0x00
|
||||
#define USB_DEVICE_PROTOCOL 0x00
|
||||
#define USB_IRQ_ID USB0_IRQn
|
||||
|
||||
#define USB_INTERFACE_ALTERNATE_SETTING_NONE 0x00
|
||||
#define USB_STRING_DESCRIPTOR_NONE 0x00
|
||||
|
||||
@@ -121,7 +121,6 @@ void InitUsb(void)
|
||||
UsbCompositeDevice.systemKeyboardHandle = UsbDeviceCompositeConfigList.config[USB_SYSTEM_KEYBOARD_INTERFACE_INDEX].classHandle;
|
||||
UsbCompositeDevice.mouseHandle = UsbDeviceCompositeConfigList.config[USB_MOUSE_INTERFACE_INDEX].classHandle;
|
||||
|
||||
NVIC_SetPriority((IRQn_Type)irqNumber, USB_DEVICE_INTERRUPT_PRIORITY);
|
||||
NVIC_EnableIRQ((IRQn_Type)irqNumber);
|
||||
|
||||
USB_DeviceRun(UsbCompositeDevice.deviceHandle);
|
||||
|
||||
@@ -30,10 +30,10 @@ static mouse_kinetic_state_t mouseMoveState = {
|
||||
.leftState = SerializedMouseAction_MoveLeft,
|
||||
.rightState = SerializedMouseAction_MoveRight,
|
||||
.intMultiplier = 10,
|
||||
.initialSpeed = 10,
|
||||
.acceleration = 30,
|
||||
.initialSpeed = 20,
|
||||
.acceleration = 60,
|
||||
.deceleratedSpeed = 1, // 25
|
||||
.baseSpeed = 50,
|
||||
.baseSpeed = 100,
|
||||
.acceleratedSpeed = 255, // 100
|
||||
};
|
||||
|
||||
@@ -43,10 +43,10 @@ static mouse_kinetic_state_t mouseScrollState = {
|
||||
.leftState = SerializedMouseAction_ScrollLeft,
|
||||
.rightState = SerializedMouseAction_ScrollRight,
|
||||
.intMultiplier = 1,
|
||||
.initialSpeed = 8,
|
||||
.acceleration = 8,
|
||||
.initialSpeed = 16,
|
||||
.acceleration = 16,
|
||||
.deceleratedSpeed = 1, // 25
|
||||
.baseSpeed = 12,
|
||||
.baseSpeed = 24,
|
||||
.acceleratedSpeed = 255, // 100
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user