1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-04-21 04:21:20 +02:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Ash-4
a3bd5ac86f DC mode timer sync STM32 2025-01-29 00:54:16 -06:00
Ash-4
da66469faa DC mode timer sync STM32 2025-01-29 00:34:45 -06:00
2 changed files with 10 additions and 2 deletions

View File

@ -37,11 +37,15 @@
#include "DIAG.h" #include "DIAG.h"
#include <wiring_private.h> #include <wiring_private.h>
// DC mode timers enable the PWM signal on select pins.
// Code added to sync timers which have the same frequency.
// Function prototypes // Function prototypes
void refreshDCmodeTimers(); void refreshDCmodeTimers();
void resetCounterDCmodeTimers(); void resetCounterDCmodeTimers();
HardwareTimer *Timer1 = new HardwareTimer(TIM1); HardwareTimer *Timer1 = new HardwareTimer(TIM1);
HardwareTimer *Timer2 = new HardwareTimer(TIM2);
HardwareTimer *Timer3 = new HardwareTimer(TIM3);
HardwareTimer *Timer4 = new HardwareTimer(TIM4); HardwareTimer *Timer4 = new HardwareTimer(TIM4);
HardwareTimer *Timer9 = new HardwareTimer(TIM9); HardwareTimer *Timer9 = new HardwareTimer(TIM9);
#if defined(TIM13) #if defined(TIM13)
@ -685,6 +689,8 @@ void ADCee::begin() {
// not exact sync, but timers with the same frequency should be in sync // not exact sync, but timers with the same frequency should be in sync
void refreshDCmodeTimers() { void refreshDCmodeTimers() {
Timer1->refresh(); Timer1->refresh();
Timer2->refresh();
Timer3->refresh();
Timer4->refresh(); Timer4->refresh();
Timer9->refresh(); Timer9->refresh();
#if defined(TIM13) #if defined(TIM13)
@ -696,6 +702,8 @@ void refreshDCmodeTimers() {
void resetCounterDCmodeTimers() { void resetCounterDCmodeTimers() {
// Reset the counter for all DC mode timers // Reset the counter for all DC mode timers
TIM1->CNT = 0; TIM1->CNT = 0;
TIM2->CNT = 0;
TIM3->CNT = 0;
TIM4->CNT = 0; TIM4->CNT = 0;
TIM9->CNT = 0; TIM9->CNT = 0;
#if defined(TIM13) #if defined(TIM13)

View File

@ -663,14 +663,14 @@ void TrackManager::reportCurrentLCD(uint8_t display, byte row) {
SCREEN(display, row+t, F("%c: %S ON %dmA"), t+'A', (TrackManager::getModeName(tMode)), tPwr_mA[t]>>2); SCREEN(display, row+t, F("%c: %S ON %dmA"), t+'A', (TrackManager::getModeName(tMode)), tPwr_mA[t]>>2);
} }
} }
/* else { // if power is off do this section else { // if power is off do this section
if (tMode & TRACK_MODE_DC) { // DC / DCX if (tMode & TRACK_MODE_DC) { // DC / DCX
SCREEN(display, row+t, F("Track %c: %S %d OFF"), t+'A', (TrackManager::getModeName(tMode)),DCAddr); SCREEN(display, row+t, F("Track %c: %S %d OFF"), t+'A', (TrackManager::getModeName(tMode)),DCAddr);
} }
else { // Not DC or DCX else { // Not DC or DCX
SCREEN(display, row+t, F("Track %c: %S OFF"), t+'A', (TrackManager::getModeName(tMode))); SCREEN(display, row+t, F("Track %c: %S OFF"), t+'A', (TrackManager::getModeName(tMode)));
} }
} */ }
} }
} }