Seems like a working version of speeduino on the STM32F407
This commit is contained in:
parent
a55114e96c
commit
9fb23c2d31
|
@ -32,30 +32,30 @@
|
||||||
***********************************************************************************************************
|
***********************************************************************************************************
|
||||||
* Schedules
|
* Schedules
|
||||||
*/
|
*/
|
||||||
#define MAX_TIMER_PERIOD 131070 //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 2, as each timer tick is 2uS)
|
#define MAX_TIMER_PERIOD 65535 //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 2, as each timer tick is 2uS)
|
||||||
#define MAX_TIMER_PERIOD_SLOW 131070 //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 2, as each timer tick is 2uS)
|
#define MAX_TIMER_PERIOD_SLOW 65535 //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 2, as each timer tick is 2uS)
|
||||||
#define uS_TO_TIMER_COMPARE(uS) (uS >> 1) //Converts a given number of uS into the required number of timer ticks until that time has passed.
|
#define uS_TO_TIMER_COMPARE(uS) (uS ) //Converts a given number of uS into the required number of timer ticks until that time has passed.
|
||||||
#define uS_TO_TIMER_COMPARE_SLOW(uS) (uS >> 1) //Converts a given number of uS into the required number of timer ticks until that time has passed.
|
#define uS_TO_TIMER_COMPARE_SLOW(uS) (uS ) //Converts a given number of uS into the required number of timer ticks until that time has passed.
|
||||||
#if defined(ARDUINO_ARCH_STM32) // STM32GENERIC core
|
|
||||||
#define FUEL1_COUNTER (TIM2)->CNT
|
|
||||||
#define FUEL2_COUNTER (TIM2)->CNT
|
|
||||||
#define FUEL3_COUNTER (TIM2)->CNT
|
|
||||||
#define FUEL4_COUNTER (TIM2)->CNT
|
|
||||||
|
|
||||||
#define FUEL1_COMPARE (TIM2)->CCR1
|
#define FUEL1_COUNTER (TIM3)->CNT
|
||||||
#define FUEL2_COMPARE (TIM2)->CCR2
|
#define FUEL2_COUNTER (TIM3)->CNT
|
||||||
#define FUEL3_COMPARE (TIM2)->CCR3
|
#define FUEL3_COUNTER (TIM3)->CNT
|
||||||
#define FUEL4_COMPARE (TIM2)->CCR4
|
#define FUEL4_COUNTER (TIM3)->CNT
|
||||||
|
|
||||||
#define IGN1_COUNTER (TIM3)->CNT
|
#define FUEL1_COMPARE (TIM3)->CCR1
|
||||||
#define IGN2_COUNTER (TIM3)->CNT
|
#define FUEL2_COMPARE (TIM3)->CCR2
|
||||||
#define IGN3_COUNTER (TIM3)->CNT
|
#define FUEL3_COMPARE (TIM3)->CCR3
|
||||||
#define IGN4_COUNTER (TIM3)->CNT
|
#define FUEL4_COMPARE (TIM3)->CCR4
|
||||||
|
|
||||||
#define IGN1_COMPARE (TIM3)->CCR1
|
#define IGN1_COUNTER (TIM2)->CNT
|
||||||
#define IGN2_COMPARE (TIM3)->CCR2
|
#define IGN2_COUNTER (TIM2)->CNT
|
||||||
#define IGN3_COMPARE (TIM3)->CCR3
|
#define IGN3_COUNTER (TIM2)->CNT
|
||||||
#define IGN4_COMPARE (TIM3)->CCR4
|
#define IGN4_COUNTER (TIM2)->CNT
|
||||||
|
|
||||||
|
#define IGN1_COMPARE (TIM2)->CCR1
|
||||||
|
#define IGN2_COMPARE (TIM2)->CCR2
|
||||||
|
#define IGN3_COMPARE (TIM2)->CCR3
|
||||||
|
#define IGN4_COMPARE (TIM2)->CCR4
|
||||||
|
|
||||||
#ifndef SMALL_FLASH_MODE
|
#ifndef SMALL_FLASH_MODE
|
||||||
#define FUEL5_COUNTER (TIM5)->CNT
|
#define FUEL5_COUNTER (TIM5)->CNT
|
||||||
|
@ -77,27 +77,27 @@
|
||||||
#define IGN6_COMPARE (TIM4)->CCR2
|
#define IGN6_COMPARE (TIM4)->CCR2
|
||||||
#define IGN7_COMPARE (TIM4)->CCR3
|
#define IGN7_COMPARE (TIM4)->CCR3
|
||||||
#define IGN8_COMPARE (TIM4)->CCR4
|
#define IGN8_COMPARE (TIM4)->CCR4
|
||||||
#endif
|
#endif
|
||||||
//https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/754bc2969921f1ef262bd69e7faca80b19db7524/STM32F1/system/libmaple/include/libmaple/timer.h#L444
|
//https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/754bc2969921f1ef262bd69e7faca80b19db7524/STM32F1/system/libmaple/include/libmaple/timer.h#L444
|
||||||
#define FUEL1_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC1E
|
#define FUEL1_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC1E
|
||||||
#define FUEL2_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC2E
|
#define FUEL2_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC2E
|
||||||
#define FUEL3_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC3E
|
#define FUEL3_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC3E
|
||||||
#define FUEL4_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC4E
|
#define FUEL4_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC4E
|
||||||
|
|
||||||
#define FUEL1_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC1E
|
#define FUEL1_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC1E
|
||||||
#define FUEL2_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC2E
|
#define FUEL2_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC2E
|
||||||
#define FUEL3_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC3E
|
#define FUEL3_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC3E
|
||||||
#define FUEL4_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC4E
|
#define FUEL4_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC4E
|
||||||
|
|
||||||
#define IGN1_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC1E
|
#define IGN1_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC1E
|
||||||
#define IGN2_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC2E
|
#define IGN2_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC2E
|
||||||
#define IGN3_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC3E
|
#define IGN3_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC3E
|
||||||
#define IGN4_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC4E
|
#define IGN4_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC4E
|
||||||
|
|
||||||
#define IGN1_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC1E
|
#define IGN1_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC1E
|
||||||
#define IGN2_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC2E
|
#define IGN2_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC2E
|
||||||
#define IGN3_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC3E
|
#define IGN3_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC3E
|
||||||
#define IGN4_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC4E
|
#define IGN4_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC4E
|
||||||
|
|
||||||
#ifndef SMALL_FLASH_MODE
|
#ifndef SMALL_FLASH_MODE
|
||||||
#define FUEL5_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC1E
|
#define FUEL5_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC1E
|
||||||
|
@ -120,91 +120,8 @@
|
||||||
#define IGN7_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC3E
|
#define IGN7_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC3E
|
||||||
#define IGN8_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC4E
|
#define IGN8_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC4E
|
||||||
#endif
|
#endif
|
||||||
#else //libmaple core aka STM32DUINO
|
|
||||||
#define FUEL1_COUNTER (TIMER2->regs).gen->CNT
|
|
||||||
#define FUEL2_COUNTER (TIMER2->regs).gen->CNT
|
|
||||||
#define FUEL3_COUNTER (TIMER2->regs).gen->CNT
|
|
||||||
#define FUEL4_COUNTER (TIMER2->regs).gen->CNT
|
|
||||||
|
|
||||||
#define FUEL1_COMPARE (TIMER2->regs).gen->CCR1
|
|
||||||
#define FUEL2_COMPARE (TIMER2->regs).gen->CCR2
|
|
||||||
#define FUEL3_COMPARE (TIMER2->regs).gen->CCR3
|
|
||||||
#define FUEL4_COMPARE (TIMER2->regs).gen->CCR4
|
|
||||||
|
|
||||||
#define IGN1_COUNTER (TIMER3->regs).gen->CNT
|
|
||||||
#define IGN2_COUNTER (TIMER3->regs).gen->CNT
|
|
||||||
#define IGN3_COUNTER (TIMER3->regs).gen->CNT
|
|
||||||
#define IGN4_COUNTER (TIMER3->regs).gen->CNT
|
|
||||||
|
|
||||||
#define IGN1_COMPARE (TIMER3->regs).gen->CCR1
|
|
||||||
#define IGN2_COMPARE (TIMER3->regs).gen->CCR2
|
|
||||||
#define IGN3_COMPARE (TIMER3->regs).gen->CCR3
|
|
||||||
#define IGN4_COMPARE (TIMER3->regs).gen->CCR4
|
|
||||||
|
|
||||||
#ifndef SMALL_FLASH_MODE
|
|
||||||
#define FUEL5_COUNTER (TIMER5->regs).gen->CNT
|
|
||||||
#define FUEL6_COUNTER (TIMER5->regs).gen->CNT
|
|
||||||
#define FUEL7_COUNTER (TIMER5->regs).gen->CNT
|
|
||||||
#define FUEL8_COUNTER (TIMER5->regs).gen->CNT
|
|
||||||
|
|
||||||
#define FUEL5_COMPARE (TIMER5->regs).gen->CCR1
|
|
||||||
#define FUEL6_COMPARE (TIMER5->regs).gen->CCR2
|
|
||||||
#define FUEL7_COMPARE (TIMER5->regs).gen->CCR3
|
|
||||||
#define FUEL8_COMPARE (TIMER5->regs).gen->CCR4
|
|
||||||
|
|
||||||
#define IGN5_COUNTER (TIMER4->regs).gen->CNT
|
|
||||||
#define IGN6_COUNTER (TIMER4->regs).gen->CNT
|
|
||||||
#define IGN7_COUNTER (TIMER4->regs).gen->CNT
|
|
||||||
#define IGN8_COUNTER (TIMER4->regs).gen->CNT
|
|
||||||
|
|
||||||
#define IGN5_COMPARE (TIMER4->regs).gen->CCR1
|
|
||||||
#define IGN6_COMPARE (TIMER4->regs).gen->CCR2
|
|
||||||
#define IGN7_COMPARE (TIMER4->regs).gen->CCR3
|
|
||||||
#define IGN8_COMPARE (TIMER4->regs).gen->CCR4
|
|
||||||
#endif
|
|
||||||
//https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/754bc2969921f1ef262bd69e7faca80b19db7524/STM32F1/system/libmaple/include/libmaple/timer.h#L444
|
|
||||||
#define FUEL1_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC1E
|
|
||||||
#define FUEL2_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC2E
|
|
||||||
#define FUEL3_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC3E
|
|
||||||
#define FUEL4_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#define FUEL1_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
|
||||||
#define FUEL2_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
|
||||||
#define FUEL3_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
|
||||||
#define FUEL4_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#define IGN1_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
|
||||||
#define IGN2_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
|
||||||
#define IGN3_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
|
||||||
#define IGN4_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#define IGN1_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC1E
|
|
||||||
#define IGN2_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC2E
|
|
||||||
#define IGN3_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC3E
|
|
||||||
#define IGN4_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#ifndef SMALL_FLASH_MODE
|
|
||||||
#define FUEL5_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC1E
|
|
||||||
#define FUEL6_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC2E
|
|
||||||
#define FUEL7_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC3E
|
|
||||||
#define FUEL8_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#define IGN5_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC1E
|
|
||||||
#define IGN6_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC2E
|
|
||||||
#define IGN7_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC3E
|
|
||||||
#define IGN8_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#define FUEL5_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
|
||||||
#define FUEL6_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
|
||||||
#define FUEL7_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
|
||||||
#define FUEL8_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
|
||||||
|
|
||||||
#define IGN5_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
|
||||||
#define IGN6_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
|
||||||
#define IGN7_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
|
||||||
#define IGN8_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
***********************************************************************************************************
|
***********************************************************************************************************
|
||||||
|
|
|
@ -22,9 +22,10 @@
|
||||||
#else
|
#else
|
||||||
#include "HardwareTimer.h"
|
#include "HardwareTimer.h"
|
||||||
#endif
|
#endif
|
||||||
|
int EmptyIRQCallbackCnt;
|
||||||
extern void oneMSIntervalIRQ(stimer_t *Timer){oneMSInterval();}
|
extern void oneMSIntervalIRQ(stimer_t *Timer){oneMSInterval();}
|
||||||
extern void EmptyIRQCallback(stimer_t *Timer, uint32_t channel){}
|
|
||||||
|
extern void EmptyIRQCallback(stimer_t *Timer, uint32_t channel){EmptyIRQCallbackCnt++;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,8 +97,8 @@ void initBoard()
|
||||||
// Timer1.setMode(3, TIMER_OUTPUT_COMPARE);
|
// Timer1.setMode(3, TIMER_OUTPUT_COMPARE);
|
||||||
// if(boost_pwm_max_count > 0) { Timer1.attachInterrupt(2, boostInterrupt);}
|
// if(boost_pwm_max_count > 0) { Timer1.attachInterrupt(2, boostInterrupt);}
|
||||||
// if(vvt_pwm_max_count > 0) { Timer1.attachInterrupt(3, vvtInterrupt);}
|
// if(vvt_pwm_max_count > 0) { Timer1.attachInterrupt(3, vvtInterrupt);}
|
||||||
if(idle_pwm_max_count > 0) { attachIntHandleOC(&HardwareTimers_2, boostInterrupt, 4, 0);}
|
if(idle_pwm_max_count > 0) { attachIntHandleOC(&HardwareTimers_1, boostInterrupt, 2, 0);}
|
||||||
if(idle_pwm_max_count > 0) { attachIntHandleOC(&HardwareTimers_3, vvtInterrupt, 4, 0);}
|
if(vvt_pwm_max_count > 0) { attachIntHandleOC(&HardwareTimers_1, vvtInterrupt, 3, 0);}
|
||||||
// Timer1.resume();
|
// Timer1.resume();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -126,17 +127,17 @@ void initBoard()
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TimerPulseInit(&HardwareTimers_2, 0xFFFF, 0, EmptyIRQCallback);
|
|
||||||
attachIntHandleOC(&HardwareTimers_2, fuelSchedule1Interrupt, 1, 0);
|
|
||||||
attachIntHandleOC(&HardwareTimers_2, fuelSchedule2Interrupt, 2, 0);
|
|
||||||
attachIntHandleOC(&HardwareTimers_2, fuelSchedule3Interrupt, 3, 0);
|
|
||||||
attachIntHandleOC(&HardwareTimers_2, fuelSchedule4Interrupt, 4, 0);
|
|
||||||
|
|
||||||
TimerPulseInit(&HardwareTimers_3, 0xFFFF, 0, EmptyIRQCallback);
|
TimerPulseInit(&HardwareTimers_3, 0xFFFF, 0, EmptyIRQCallback);
|
||||||
attachIntHandleOC(&HardwareTimers_3, ignitionSchedule1Interrupt, 1, 0);
|
attachIntHandleOC(&HardwareTimers_3, fuelSchedule1Interrupt, 1, 0);
|
||||||
attachIntHandleOC(&HardwareTimers_3, ignitionSchedule2Interrupt, 2, 0);
|
attachIntHandleOC(&HardwareTimers_3, fuelSchedule2Interrupt, 2, 0);
|
||||||
attachIntHandleOC(&HardwareTimers_3, ignitionSchedule3Interrupt, 3, 0);
|
attachIntHandleOC(&HardwareTimers_3, fuelSchedule3Interrupt, 3, 0);
|
||||||
attachIntHandleOC(&HardwareTimers_3, ignitionSchedule4Interrupt, 4, 0);
|
attachIntHandleOC(&HardwareTimers_3, fuelSchedule4Interrupt, 4, 0);
|
||||||
|
|
||||||
|
TimerPulseInit(&HardwareTimers_2, 0xFFFF, 0, EmptyIRQCallback);
|
||||||
|
attachIntHandleOC(&HardwareTimers_2, ignitionSchedule1Interrupt, 1, 0);
|
||||||
|
attachIntHandleOC(&HardwareTimers_2, ignitionSchedule2Interrupt, 2, 0);
|
||||||
|
attachIntHandleOC(&HardwareTimers_2, ignitionSchedule3Interrupt, 3, 0);
|
||||||
|
attachIntHandleOC(&HardwareTimers_2, ignitionSchedule4Interrupt, 4, 0);
|
||||||
|
|
||||||
// Timer1.setMode(1, TIMER_OUTPUT_COMPARE);
|
// Timer1.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
//These boards always make 8/8 channels available
|
//These boards always make 8/8 channels available
|
||||||
#undef INJ_CHANNELS
|
#undef INJ_CHANNELS
|
||||||
#undef IGN_CHANNELS
|
#undef IGN_CHANNELS
|
||||||
#define INJ_CHANNELS 8
|
#define INJ_CHANNELS 4
|
||||||
#define IGN_CHANNELS 8
|
#define IGN_CHANNELS 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Specific mode for Bluepill due to its small flash size. This disables a number of strings from being compiled into the flash
|
//Specific mode for Bluepill due to its small flash size. This disables a number of strings from being compiled into the flash
|
||||||
|
|
Loading…
Reference in New Issue