mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 08:45:24 +03:00
Interrupt counters added (use -DDEBUG_INTERRUPTS=YES to enable and CLI command "print int" to see them)
This commit is contained in:
parent
a0b4053e82
commit
9673df83a7
21 changed files with 188 additions and 52 deletions
|
@ -485,6 +485,8 @@ if(ARCH STREQUAL ARM)
|
||||||
option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF)
|
option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF)
|
||||||
option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" OFF)
|
option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" OFF)
|
||||||
option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY
|
option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY
|
||||||
|
option(DEBUG_INTERRUPTS "Count interrupts" OFF)
|
||||||
|
|
||||||
if(TIMERS EQUAL 3)
|
if(TIMERS EQUAL 3)
|
||||||
add_definitions(-DTIMERS=3)
|
add_definitions(-DTIMERS=3)
|
||||||
else()
|
else()
|
||||||
|
@ -511,6 +513,10 @@ if(ARCH STREQUAL ARM)
|
||||||
if(DEBUG_TRACE_BUFFER)
|
if(DEBUG_TRACE_BUFFER)
|
||||||
add_definitions(-DDEBUG_TRACE_BUFFER)
|
add_definitions(-DDEBUG_TRACE_BUFFER)
|
||||||
endif()
|
endif()
|
||||||
|
if(DEBUG_INTERRUPTS)
|
||||||
|
add_definitions(-DDEBUG_INTERRUPTS)
|
||||||
|
set(DEBUG ON)
|
||||||
|
endif()
|
||||||
if(CLI)
|
if(CLI)
|
||||||
add_definitions(-DCLI)
|
add_definitions(-DCLI)
|
||||||
set(FIRMWARE_SRC ${FIRMWARE_SRC} cli.cpp)
|
set(FIRMWARE_SRC ${FIRMWARE_SRC} cli.cpp)
|
||||||
|
|
|
@ -357,6 +357,22 @@ int cliSet(const char ** argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG_INTERRUPTS)
|
||||||
|
void printInterrupts()
|
||||||
|
{
|
||||||
|
__disable_irq();
|
||||||
|
struct InterruptCounters ic = interruptCounters;
|
||||||
|
memset(&interruptCounters, 0, sizeof(interruptCounters));
|
||||||
|
interruptCounters.resetTime = get_tmr10ms();
|
||||||
|
__enable_irq();
|
||||||
|
serialPrint("Interrupts count in the last %u ms:", (get_tmr10ms() - ic.resetTime) * 10);
|
||||||
|
for(int n = 0; n < INT_LAST; n++) {
|
||||||
|
serialPrint("%s: %u", interruptNames[n], ic.cnt[n]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif //#if defined(DEBUG_INTERRUPTS)
|
||||||
|
|
||||||
int cliDisplay(const char ** argv)
|
int cliDisplay(const char ** argv)
|
||||||
{
|
{
|
||||||
long long int address = 0;
|
long long int address = 0;
|
||||||
|
@ -484,6 +500,11 @@ int cliDisplay(const char ** argv)
|
||||||
serialPrint(" CCR4 0x%x", tim->CCR4);
|
serialPrint(" CCR4 0x%x", tim->CCR4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(DEBUG_INTERRUPTS)
|
||||||
|
else if (!strcmp(argv[1], "int")) {
|
||||||
|
printInterrupts();
|
||||||
|
}
|
||||||
|
#endif //#if defined(DEBUG_INTERRUPTS)
|
||||||
else if (toLongLongInt(argv, 1, &address) > 0) {
|
else if (toLongLongInt(argv, 1, &address) > 0) {
|
||||||
int size = 256;
|
int size = 256;
|
||||||
if (toInt(argv, 2, &size) >= 0) {
|
if (toInt(argv, 2, &size) >= 0) {
|
||||||
|
|
|
@ -102,3 +102,40 @@ void dumpTraceBuffer()
|
||||||
TRACE("End of Trace Buffer dump");
|
TRACE("End of Trace Buffer dump");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(DEBUG_INTERRUPTS)
|
||||||
|
|
||||||
|
#if defined(PCBHORUS)
|
||||||
|
const char * interruptNames[INT_LAST] = {
|
||||||
|
"Tick ", // INT_TICK,
|
||||||
|
"1ms ", // INT_1MS,
|
||||||
|
"Ser2 ", // INT_SER2,
|
||||||
|
"TelDm", // INT_TELEM_DMA,
|
||||||
|
"Sdio ", // INT_SDIO,
|
||||||
|
"SdDma", // INT_SDIO_DMA,
|
||||||
|
"D2S7 ", // INT_DMA2S7,
|
||||||
|
"Tim1 ", // INT_TIM1CC,
|
||||||
|
"Tim2 ", // INT_TIM2,
|
||||||
|
"Tim3 ", // INT_TIM3,
|
||||||
|
"Usb " // INT_OTG_FS,
|
||||||
|
};
|
||||||
|
#elif defined(PCBTARANIS)
|
||||||
|
const char * interruptNames[INT_LAST] = {
|
||||||
|
"Tick ", // INT_TICK,
|
||||||
|
"5ms ", // INT_5MS,
|
||||||
|
"Audio", // INT_AUDIO,
|
||||||
|
"BlueT", // INT_BLUETOOTH,
|
||||||
|
"Lcd ", // INT_LCD,
|
||||||
|
"T1CC ", // INT_TIM1CC,
|
||||||
|
"Tim1 ", // INT_TIM1,
|
||||||
|
"Tim8 ", // INT_TIM8,
|
||||||
|
"Ser2 ", // INT_SER2,
|
||||||
|
"TelDm", // INT_TELEM_DMA,
|
||||||
|
"TelUs", // INT_TELEM_USART,
|
||||||
|
"Train", // INT_TRAINER,
|
||||||
|
"Usb ", // INT_OTG_FS,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct InterruptCounters interruptCounters;
|
||||||
|
#endif //#if defined(DEBUG_INTERRUPTS)
|
||||||
|
|
|
@ -185,5 +185,57 @@ public:
|
||||||
|
|
||||||
#endif // defined(JITTER_MEASURE)
|
#endif // defined(JITTER_MEASURE)
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG_INTERRUPTS) && !defined(BOOT)
|
||||||
|
|
||||||
|
#if defined(PCBHORUS)
|
||||||
|
enum InterruptNames {
|
||||||
|
INT_TICK,
|
||||||
|
INT_1MS,
|
||||||
|
INT_SER2,
|
||||||
|
INT_TELEM_DMA,
|
||||||
|
INT_SDIO,
|
||||||
|
INT_SDIO_DMA,
|
||||||
|
INT_DMA2S7,
|
||||||
|
INT_TIM1CC,
|
||||||
|
INT_TIM2,
|
||||||
|
INT_TIM3,
|
||||||
|
INT_OTG_FS,
|
||||||
|
INT_LAST
|
||||||
|
};
|
||||||
|
#elif defined(PCBTARANIS)
|
||||||
|
enum InterruptNames {
|
||||||
|
INT_TICK,
|
||||||
|
INT_5MS,
|
||||||
|
INT_AUDIO,
|
||||||
|
INT_BLUETOOTH,
|
||||||
|
INT_LCD,
|
||||||
|
INT_TIM1CC,
|
||||||
|
INT_TIM1,
|
||||||
|
INT_TIM8,
|
||||||
|
INT_SER2,
|
||||||
|
INT_TELEM_DMA,
|
||||||
|
INT_TELEM_USART,
|
||||||
|
INT_TRAINER,
|
||||||
|
INT_OTG_FS,
|
||||||
|
INT_LAST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct InterruptCounters
|
||||||
|
{
|
||||||
|
uint32_t cnt[INT_LAST];
|
||||||
|
uint32_t resetTime;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const char * interruptNames[INT_LAST];
|
||||||
|
extern struct InterruptCounters interruptCounters;
|
||||||
|
|
||||||
|
#define DEBUG_INTERRUPT(int) (++interruptCounters.cnt[int])
|
||||||
|
#else
|
||||||
|
#define DEBUG_INTERRUPT(int)
|
||||||
|
#endif //#if defined(DEBUG_INTERRUPTS)
|
||||||
|
|
||||||
|
|
||||||
#endif // _DEBUG_H_
|
#endif // _DEBUG_H_
|
||||||
|
|
||||||
|
|
|
@ -58,8 +58,8 @@ void init2MhzTimer()
|
||||||
TIMER_2MHz_TIMER->CR1 = TIM_CR1_CEN;
|
TIMER_2MHz_TIMER->CR1 = TIM_CR1_CEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Starts TIMER at 200Hz, 5mS period
|
// Starts TIMER at 1000Hz
|
||||||
void init5msTimer()
|
void init1msTimer()
|
||||||
{
|
{
|
||||||
INTERRUPT_5MS_TIMER->ARR = 999 ; // 1mS
|
INTERRUPT_5MS_TIMER->ARR = 999 ; // 1mS
|
||||||
INTERRUPT_5MS_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 1000000 - 1 ; // 1uS from 30MHz
|
INTERRUPT_5MS_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 1000000 - 1 ; // 1uS from 30MHz
|
||||||
|
@ -72,15 +72,8 @@ void init5msTimer()
|
||||||
NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 7);
|
NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stop5msTimer( void )
|
|
||||||
{
|
|
||||||
TIM14->CR1 = 0 ; // stop timer
|
|
||||||
NVIC_DisableIRQ(TIM8_TRG_COM_TIM14_IRQn) ;
|
|
||||||
RCC->APB1ENR &= ~RCC_APB1ENR_TIM14EN ; // Disable clock
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO use the same than board_sky9x.cpp
|
// TODO use the same than board_sky9x.cpp
|
||||||
void interrupt5ms()
|
void interrupt1ms()
|
||||||
{
|
{
|
||||||
static uint32_t pre_scale ; // Used to get 10 Hz counter
|
static uint32_t pre_scale ; // Used to get 10 Hz counter
|
||||||
|
|
||||||
|
@ -106,7 +99,8 @@ void interrupt5ms()
|
||||||
extern "C" void TIM8_TRG_COM_TIM14_IRQHandler()
|
extern "C" void TIM8_TRG_COM_TIM14_IRQHandler()
|
||||||
{
|
{
|
||||||
TIM14->SR &= ~TIM_SR_UIF ;
|
TIM14->SR &= ~TIM_SR_UIF ;
|
||||||
interrupt5ms() ;
|
interrupt1ms() ;
|
||||||
|
DEBUG_INTERRUPT(INT_1MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void boardInit()
|
void boardInit()
|
||||||
|
@ -155,7 +149,7 @@ void boardInit()
|
||||||
lcdInit();
|
lcdInit();
|
||||||
audioInit();
|
audioInit();
|
||||||
init2MhzTimer();
|
init2MhzTimer();
|
||||||
init5msTimer();
|
init1msTimer();
|
||||||
usbInit();
|
usbInit();
|
||||||
hapticInit();
|
hapticInit();
|
||||||
|
|
||||||
|
|
|
@ -165,6 +165,7 @@ static void intmoduleNoneStop()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void DMA2_Stream7_IRQHandler(void)
|
extern "C" void DMA2_Stream7_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_DMA2S7);
|
||||||
if(DMA_GetITStatus(INTMODULE_DMA_STREAM, DMA_IT_TCIF7)) {
|
if(DMA_GetITStatus(INTMODULE_DMA_STREAM, DMA_IT_TCIF7)) {
|
||||||
// TODO we could send the 8 next channels here (when needed)
|
// TODO we could send the 8 next channels here (when needed)
|
||||||
DMA_ClearITPendingBit(INTMODULE_DMA_STREAM, DMA_IT_TCIF7);
|
DMA_ClearITPendingBit(INTMODULE_DMA_STREAM, DMA_IT_TCIF7);
|
||||||
|
@ -173,6 +174,7 @@ extern "C" void DMA2_Stream7_IRQHandler(void)
|
||||||
|
|
||||||
extern "C" void TIM1_CC_IRQHandler()
|
extern "C" void TIM1_CC_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TIM1CC);
|
||||||
INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE; // stop this interrupt
|
INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE; // stop this interrupt
|
||||||
INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // clear flag
|
INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // clear flag
|
||||||
|
|
||||||
|
@ -551,6 +553,7 @@ static void extmodulePpmStop()
|
||||||
|
|
||||||
extern "C" void TIM2_IRQHandler()
|
extern "C" void TIM2_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TIM2);
|
||||||
//determine if its CC or UP interrupt
|
//determine if its CC or UP interrupt
|
||||||
uint16_t sr = EXTMODULE_TIMER->SR;
|
uint16_t sr = EXTMODULE_TIMER->SR;
|
||||||
uint16_t dier = EXTMODULE_TIMER->DIER;
|
uint16_t dier = EXTMODULE_TIMER->DIER;
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) OpenTX
|
* Copyright (C) OpenTX
|
||||||
*
|
*
|
||||||
* Based on code named
|
* Based on code named
|
||||||
* th9x - http://code.google.com/p/th9x
|
* th9x - http://code.google.com/p/th9x
|
||||||
* er9x - http://code.google.com/p/er9x
|
* er9x - http://code.google.com/p/er9x
|
||||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||||
*
|
*
|
||||||
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "../horus/sdio_sd.h"
|
#include "../horus/sdio_sd.h"
|
||||||
|
|
||||||
|
@ -2776,11 +2776,13 @@ OPTIMIZE("O0") uint8_t convert_from_bytes_to_power_of_two(uint16_t NumberOfBytes
|
||||||
|
|
||||||
void SDIO_IRQHandler(void)
|
void SDIO_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_SDIO);
|
||||||
SD_ProcessIRQ();
|
SD_ProcessIRQ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SD_SDIO_DMA_IRQHANDLER(void)
|
void SD_SDIO_DMA_IRQHANDLER(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_SDIO_DMA);
|
||||||
SD_ProcessDMAIRQ();
|
SD_ProcessDMAIRQ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,6 +134,7 @@ uint8_t serial2TracesEnabled()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void SERIAL_USART_IRQHandler(void)
|
extern "C" void SERIAL_USART_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_SER2);
|
||||||
// Send
|
// Send
|
||||||
if (USART_GetITStatus(SERIAL_USART, USART_IT_TXE) != RESET) {
|
if (USART_GetITStatus(SERIAL_USART, USART_IT_TXE) != RESET) {
|
||||||
uint8_t txchar;
|
uint8_t txchar;
|
||||||
|
|
|
@ -136,6 +136,7 @@ void sportSendBuffer(uint8_t * buffer, uint32_t count)
|
||||||
|
|
||||||
extern "C" void TELEMETRY_DMA_TX_IRQHandler(void)
|
extern "C" void TELEMETRY_DMA_TX_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TELEM_DMA);
|
||||||
if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) {
|
if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) {
|
||||||
DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC);
|
DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC);
|
||||||
telemetryPortSetDirectionInput();
|
telemetryPortSetDirectionInput();
|
||||||
|
|
|
@ -103,6 +103,7 @@ void stop_trainer_capture()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void TIM3_IRQHandler()
|
extern "C" void TIM3_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TIM3);
|
||||||
uint16_t capture = 0;
|
uint16_t capture = 0;
|
||||||
bool doCapture = false;
|
bool doCapture = false;
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "board_horus.h"
|
#include "board_horus.h"
|
||||||
#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h"
|
#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
int usbPlugged(void)
|
int usbPlugged(void)
|
||||||
{
|
{
|
||||||
|
@ -46,6 +47,7 @@ USB_OTG_CORE_HANDLE USB_OTG_dev;
|
||||||
|
|
||||||
void OTG_FS_IRQHandler(void)
|
void OTG_FS_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_OTG_FS);
|
||||||
USBD_OTG_ISR_Handler(&USB_OTG_dev);
|
USBD_OTG_ISR_Handler(&USB_OTG_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -120,6 +120,7 @@ void audioEnd()
|
||||||
|
|
||||||
extern "C" void AUDIO_TIM_IRQHandler()
|
extern "C" void AUDIO_TIM_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_AUDIO);
|
||||||
DAC->CR &= ~DAC_CR_DMAEN1 ; // Stop DMA requests
|
DAC->CR &= ~DAC_CR_DMAEN1 ; // Stop DMA requests
|
||||||
#if !defined(REV9E)
|
#if !defined(REV9E)
|
||||||
DAC->CR &= ~DAC_CR_DMAUDRIE1 ; // Stop underrun interrupt
|
DAC->CR &= ~DAC_CR_DMAUDRIE1 ; // Stop underrun interrupt
|
||||||
|
|
|
@ -104,6 +104,7 @@ void bluetoothDone()
|
||||||
|
|
||||||
extern "C" void USART6_IRQHandler(void)
|
extern "C" void USART6_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_BLUETOOTH);
|
||||||
if (USART_GetITStatus(BT_USART, USART_IT_RXNE) != RESET) {
|
if (USART_GetITStatus(BT_USART, USART_IT_RXNE) != RESET) {
|
||||||
USART_ClearITPendingBit(BT_USART, USART_IT_RXNE);
|
USART_ClearITPendingBit(BT_USART, USART_IT_RXNE);
|
||||||
uint8_t byte = USART_ReceiveData(BT_USART);
|
uint8_t byte = USART_ReceiveData(BT_USART);
|
||||||
|
|
|
@ -108,6 +108,7 @@ extern "C" void INTERRUPT_5MS_IRQHandler()
|
||||||
{
|
{
|
||||||
INTERRUPT_5MS_TIMER->SR &= ~TIM_SR_UIF ;
|
INTERRUPT_5MS_TIMER->SR &= ~TIM_SR_UIF ;
|
||||||
interrupt5ms() ;
|
interrupt5ms() ;
|
||||||
|
DEBUG_INTERRUPT(INT_5MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(REV9E)
|
#if defined(REV9E)
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) OpenTX
|
* Copyright (C) OpenTX
|
||||||
*
|
*
|
||||||
* Based on code named
|
* Based on code named
|
||||||
* th9x - http://code.google.com/p/th9x
|
* th9x - http://code.google.com/p/th9x
|
||||||
* er9x - http://code.google.com/p/er9x
|
* er9x - http://code.google.com/p/er9x
|
||||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||||
*
|
*
|
||||||
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../../opentx.h"
|
#include "../../opentx.h"
|
||||||
|
|
||||||
#define WriteData(x) AspiData(x)
|
#define WriteData(x) AspiData(x)
|
||||||
|
@ -199,6 +199,7 @@ void lcdRefresh(bool wait)
|
||||||
|
|
||||||
extern "C" void DMA1_Stream7_IRQHandler()
|
extern "C" void DMA1_Stream7_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_LCD);
|
||||||
//clear interrupt flag
|
//clear interrupt flag
|
||||||
DMA1_Stream7->CR &= ~DMA_SxCR_TCIE ; // Stop interrupt
|
DMA1_Stream7->CR &= ~DMA_SxCR_TCIE ; // Stop interrupt
|
||||||
DMA1->HIFCR |= DMA_HIFCR_CTCIF7; // Clear interrupt flag
|
DMA1->HIFCR |= DMA_HIFCR_CTCIF7; // Clear interrupt flag
|
||||||
|
|
|
@ -375,6 +375,7 @@ static void intmodulePpmStop()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void TIM1_CC_IRQHandler()
|
extern "C" void TIM1_CC_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TIM1CC);
|
||||||
INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE; // stop this interrupt
|
INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE; // stop this interrupt
|
||||||
INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // clear flag
|
INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // clear flag
|
||||||
DMA2_Stream6->CR &= ~DMA_SxCR_EN; // disable DMA, it will have the whole of the execution time of setupPulses() to actually stop
|
DMA2_Stream6->CR &= ~DMA_SxCR_EN; // disable DMA, it will have the whole of the execution time of setupPulses() to actually stop
|
||||||
|
@ -402,6 +403,7 @@ extern "C" void TIM1_CC_IRQHandler()
|
||||||
|
|
||||||
extern "C" void TIM1_UP_TIM10_IRQHandler()
|
extern "C" void TIM1_UP_TIM10_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TIM1);
|
||||||
INTMODULE_TIMER->SR &= ~TIM_SR_UIF ; // Clear flag
|
INTMODULE_TIMER->SR &= ~TIM_SR_UIF ; // Clear flag
|
||||||
|
|
||||||
INTMODULE_TIMER->ARR = *modulePulsesData[INTERNAL_MODULE].ppm.ptr++ ;
|
INTMODULE_TIMER->ARR = *modulePulsesData[INTERNAL_MODULE].ppm.ptr++ ;
|
||||||
|
@ -612,6 +614,7 @@ extern "C" void TIM8_CC_IRQHandler()
|
||||||
|
|
||||||
extern "C" void TIM8_UP_TIM13_IRQHandler()
|
extern "C" void TIM8_UP_TIM13_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TIM8);
|
||||||
EXTMODULE_TIMER->SR &= ~TIM_SR_UIF ; // Clear flag
|
EXTMODULE_TIMER->SR &= ~TIM_SR_UIF ; // Clear flag
|
||||||
|
|
||||||
EXTMODULE_TIMER->ARR = *modulePulsesData[EXTERNAL_MODULE].ppm.ptr++ ;
|
EXTMODULE_TIMER->ARR = *modulePulsesData[EXTERNAL_MODULE].ppm.ptr++ ;
|
||||||
|
|
|
@ -138,6 +138,7 @@ uint8_t serial2TracesEnabled()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void SERIAL_USART_IRQHandler(void)
|
extern "C" void SERIAL_USART_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_SER2);
|
||||||
// Send
|
// Send
|
||||||
if (USART_GetITStatus(SERIAL_USART, USART_IT_TXE) != RESET) {
|
if (USART_GetITStatus(SERIAL_USART, USART_IT_TXE) != RESET) {
|
||||||
uint8_t txchar;
|
uint8_t txchar;
|
||||||
|
|
|
@ -114,6 +114,7 @@ void sportSendBuffer(uint8_t * buffer, uint32_t count)
|
||||||
|
|
||||||
extern "C" void TELEMETRY_DMA_TX_IRQHandler(void)
|
extern "C" void TELEMETRY_DMA_TX_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TELEM_DMA);
|
||||||
if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) {
|
if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) {
|
||||||
DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC);
|
DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC);
|
||||||
telemetryPortSetDirectionInput();
|
telemetryPortSetDirectionInput();
|
||||||
|
@ -123,6 +124,7 @@ extern "C" void TELEMETRY_DMA_TX_IRQHandler(void)
|
||||||
#define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE)
|
#define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE)
|
||||||
extern "C" void TELEMETRY_USART_IRQHandler(void)
|
extern "C" void TELEMETRY_USART_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TELEM_USART);
|
||||||
uint32_t status = TELEMETRY_USART->SR;
|
uint32_t status = TELEMETRY_USART->SR;
|
||||||
while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) {
|
while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) {
|
||||||
uint8_t data = TELEMETRY_USART->DR;
|
uint8_t data = TELEMETRY_USART->DR;
|
||||||
|
|
|
@ -103,6 +103,7 @@ void stop_trainer_capture()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void TIM3_IRQHandler()
|
extern "C" void TIM3_IRQHandler()
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TRAINER);
|
||||||
uint16_t capture = 0;
|
uint16_t capture = 0;
|
||||||
bool doCapture = false;
|
bool doCapture = false;
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "board_taranis.h"
|
#include "board_taranis.h"
|
||||||
#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h"
|
#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
int usbPlugged(void)
|
int usbPlugged(void)
|
||||||
{
|
{
|
||||||
|
@ -46,6 +47,7 @@ USB_OTG_CORE_HANDLE USB_OTG_dev;
|
||||||
|
|
||||||
void OTG_FS_IRQHandler(void)
|
void OTG_FS_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_OTG_FS);
|
||||||
USBD_OTG_ISR_Handler(&USB_OTG_dev);
|
USBD_OTG_ISR_Handler(&USB_OTG_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
radio/src/thirdparty/CoOS/portable/arch.c
vendored
3
radio/src/thirdparty/CoOS/portable/arch.c
vendored
|
@ -37,6 +37,8 @@
|
||||||
|
|
||||||
/*---------------------------- Include ---------------------------------------*/
|
/*---------------------------- Include ---------------------------------------*/
|
||||||
#include <coocox.h>
|
#include <coocox.h>
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
U64 OSTickCnt = 0; /*!< Current system tick counter */
|
U64 OSTickCnt = 0; /*!< Current system tick counter */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -90,6 +92,7 @@ OS_STK *InitTaskContext(FUNCPtr task,void *param,OS_STK *pstk)
|
||||||
*/
|
*/
|
||||||
void SysTick_Handler(void)
|
void SysTick_Handler(void)
|
||||||
{
|
{
|
||||||
|
DEBUG_INTERRUPT(INT_TICK);
|
||||||
OSSchedLock++; /* Lock scheduler. */
|
OSSchedLock++; /* Lock scheduler. */
|
||||||
OSTickCnt++; /* Increment systerm time. */
|
OSTickCnt++; /* Increment systerm time. */
|
||||||
#if CFG_TASK_WAITTING_EN >0
|
#if CFG_TASK_WAITTING_EN >0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue