diff --git a/right/src/i2c.h b/right/src/i2c.h index c010c38..504bf93 100644 --- a/right/src/i2c.h +++ b/right/src/i2c.h @@ -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 diff --git a/right/src/init_peripherals.c b/right/src/init_peripherals.c index d9562ae..79bcc2e 100644 --- a/right/src/init_peripherals.c +++ b/right/src/init_peripherals.c @@ -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); } diff --git a/right/src/timer.c b/right/src/timer.c index 65a9672..3efff86 100644 --- a/right/src/timer.c +++ b/right/src/timer.c @@ -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); diff --git a/right/src/usb_api.h b/right/src/usb_api.h index f21546d..94a532c 100644 --- a/right/src/usb_api.h +++ b/right/src/usb_api.h @@ -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 diff --git a/right/src/usb_composite_device.c b/right/src/usb_composite_device.c index b848834..2740844 100644 --- a/right/src/usb_composite_device.c +++ b/right/src/usb_composite_device.c @@ -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); diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index f6d4b11..6f20aa2 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -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 };