1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-27 01:56:14 +01:00

compiles on esp32-s3

This commit is contained in:
Harald Barth 2024-02-07 15:53:45 +01:00
parent 4931c5ed75
commit e7ed9ffbde
3 changed files with 29 additions and 8 deletions

View File

@ -83,18 +83,26 @@ int DCCTimer::freeMemory() {
#include <soc/sens_struct.h> #include <soc/sens_struct.h>
#undef ADC_INPUT_MAX_VALUE #undef ADC_INPUT_MAX_VALUE
#define ADC_INPUT_MAX_VALUE 4095 // 12 bit ADC #define ADC_INPUT_MAX_VALUE 4095 // 12 bit ADC
#ifdef ARDUINO_ESP32S3_DEV
#define pinToADC1Channel(X) (adc1_channel_t)((X)-1)
#define MY_SAR_REG sar_meas1_ctrl2
#else
#define pinToADC1Channel(X) (adc1_channel_t)(((X) > 35) ? (X)-36 : (X)-28) #define pinToADC1Channel(X) (adc1_channel_t)(((X) > 35) ? (X)-36 : (X)-28)
#define MY_SAR_REG sar_meas_start1
#endif
int IRAM_ATTR local_adc1_get_raw(int channel) { int IRAM_ATTR local_adc1_get_raw(int channel) {
uint16_t adc_value; uint16_t adc_value;
SENS.sar_meas_start1.sar1_en_pad = (1 << channel); // only one channel is selected SENS.MY_SAR_REG.sar1_en_pad = (1 << channel); // only one channel is selected
while (SENS.sar_slave_addr1.meas_status != 0); while (SENS.sar_slave_addr1.meas_status != 0);
SENS.sar_meas_start1.meas1_start_sar = 0; SENS.MY_SAR_REG.meas1_start_sar = 0;
SENS.sar_meas_start1.meas1_start_sar = 1; SENS.MY_SAR_REG.meas1_start_sar = 1;
while (SENS.sar_meas_start1.meas1_done_sar == 0); while (SENS.MY_SAR_REG.meas1_done_sar == 0);
adc_value = SENS.sar_meas_start1.meas1_data_sar; adc_value = SENS.MY_SAR_REG.meas1_data_sar;
return adc_value; return adc_value;
} }
#undef MY_SAR_REG
#include "DCCTimer.h" #include "DCCTimer.h"
INTERRUPT_CALLBACK interruptHandler=0; INTERRUPT_CALLBACK interruptHandler=0;

View File

@ -221,13 +221,20 @@ bool TrackManager::setTrackMode(byte trackToSet, TRACK_MODE mode, int16_t dcAddr
gpio_reset_pin((gpio_num_t)p.invpin); gpio_reset_pin((gpio_num_t)p.invpin);
} }
#ifdef BOOSTER_INPUT #ifdef BOOSTER_INPUT
#ifdef ARDUINO_ESP32S3_DEV
#define LOOP_IDX SIG_IN_FUNC212_IDX //pads 208 to 212 available as loopback
#else
#define LOOP_IDX SIG_IN_FUNC228_IDX //pads 224 to 228 available as loopback
#endif
if (mode & TRACK_MODE_BOOST) { if (mode & TRACK_MODE_BOOST) {
//DIAG(F("Track=%c mode boost pin %d"),trackToSet+'A', p.pin); //DIAG(F("Track=%c mode boost pin %d"),trackToSet+'A', p.pin);
pinMode(BOOSTER_INPUT, INPUT); pinMode(BOOSTER_INPUT, INPUT);
gpio_matrix_in(26, SIG_IN_FUNC228_IDX, false); //pads 224 to 228 available as loopback gpio_matrix_in(26, LOOP_IDX, false);
gpio_matrix_out(p.pin, SIG_IN_FUNC228_IDX, false, false); gpio_matrix_out(p.pin, LOOP_IDX, false, false);
if (p.invpin != UNUSED_PIN) { if (p.invpin != UNUSED_PIN) {
gpio_matrix_out(p.invpin, SIG_IN_FUNC228_IDX, true /*inverted*/, false); gpio_matrix_out(p.invpin, LOOP_IDX, true /*inverted*/, false);
} }
} else // elseif clause continues } else // elseif clause continues
#endif #endif

View File

@ -39,9 +39,15 @@
#include "soc/timer_group_reg.h" #include "soc/timer_group_reg.h"
void feedTheDog0(){ void feedTheDog0(){
// feed dog 0 // feed dog 0
#ifdef ARDUINO_ESP32S3_DEV
TIMERG0.wdtwprotect.wdt_wkey=0x50D83AA1; //MWDT_LL_WKEY_VALUE? write enable
TIMERG0.wdtfeed.wdt_feed=1; // feed dog
TIMERG0.wdtwprotect.wdt_wkey=0; // write protect
#else
TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable
TIMERG0.wdt_feed=1; // feed dog TIMERG0.wdt_feed=1; // feed dog
TIMERG0.wdt_wprotect=0; // write protect TIMERG0.wdt_wprotect=0; // write protect
#endif
// feed dog 1 // feed dog 1
//TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable //TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable
//TIMERG1.wdt_feed=1; // feed dog //TIMERG1.wdt_feed=1; // feed dog