forked from Elron_dev/elbear_arduino_bsp
Обновление до версии 0.3.0
- обновлен elbear_fw_bootloader - добавлена проверка контрольной суммы каждой строки hex файла. - в модуль работы с АЦП добавлена функция analogReadResolution(). Функция analogRead() теперь возвращает усредненное по 10 измерениям значение. - общая функция обработки прерываний перенесена в память RAM. Обработчики прерываний модулей External Interrupts и Advanced I/O (функция tone()) так же перенесены в память RAM для увеличения скорости выполнения кода. - в пакет добавлены библиотеки EEPROM, Servo, SoftSerial, NeoPixel, MFRC522 адаптированные для работы с платой Elbear Ace-Uno. - добавлено описание особенностей работы с пакетом
This commit is contained in:
1 parent
2044614aba
commit
7261b03ea1
114 files changed
+11064
-666
No files matched your search
@@ -1,37 +1,46 @@
|
||||
#include "mik32_hal_irq.h"
|
||||
#include "wiring_LL.h"
|
||||
|
||||
// isr functions
|
||||
extern void serial_handler_wrapper(uint8_t uartNumInt);
|
||||
extern void gpio_interrupts_handler(void);
|
||||
extern void serial_interrupt_handler(uint8_t uartNumInt);
|
||||
extern void gpio_interrupt_handler(void);
|
||||
extern void tone_interrupt_handler(void);
|
||||
void __attribute__((weak)) wire_handler_wrapper(void)
|
||||
void __attribute__((weak)) wire_interrupt_handler(void)
|
||||
{
|
||||
// dummy function for case when wire library is not in use
|
||||
}
|
||||
void __attribute__((weak)) servo_interrupt_handler(void)
|
||||
{
|
||||
// dummy function for case when wire library is not in use
|
||||
}
|
||||
|
||||
// ---------------------------------------------- //
|
||||
void trap_handler(void)
|
||||
void __attribute__((noinline, section(".ram_text"), optimize("O3"))) trap_handler (void)
|
||||
{
|
||||
// gpio interrupt
|
||||
if (EPIC_CHECK_GPIO_IRQ())
|
||||
gpio_interrupt_handler();
|
||||
|
||||
// tone timer interrupt
|
||||
if (EPIC_CHECK_TIMER16_1())
|
||||
tone_interrupt_handler();
|
||||
|
||||
// servo timer interrupt
|
||||
if (EPIC_CHECK_TIMER16_2())
|
||||
servo_interrupt_handler();
|
||||
|
||||
// uart0 interrupt
|
||||
if (EPIC_CHECK_UART_0())
|
||||
serial_handler_wrapper(0);
|
||||
serial_interrupt_handler(0);
|
||||
|
||||
// uart1 interrupt
|
||||
if (EPIC_CHECK_UART_1())
|
||||
serial_handler_wrapper(1);
|
||||
|
||||
// gpio interrupt
|
||||
if (EPIC_CHECK_GPIO_IRQ())
|
||||
gpio_interrupts_handler();
|
||||
serial_interrupt_handler(1);
|
||||
|
||||
// i2c interrupt
|
||||
if (EPIC_CHECK_I2C_1())
|
||||
wire_handler_wrapper();
|
||||
wire_interrupt_handler();
|
||||
|
||||
// reset all interrupts
|
||||
HAL_EPIC_Clear(0xFFFFFFFF);
|
||||
EPIC_CLEAR_ALL();
|
||||
}
|
||||
Reference in new issue
Block a user