Tema: Re: ESP32 arduino ext interrupt
Autorius: DGS
Data: 2023-02-17 21:46:09
>Jei oscilografu žiūrint gražu - reiškia kažkas priburta su kodu.
Kad kolkas nelabai yra ka priburt su tuo kodu.
Ir dar klausimas, kodel poll'inant gaunu 100 pulsu???
Dargi - skirtingi interrupt mode - skirtingi rezultatai. Kazkuris mode pareiske, kad gauna virs 400000!!!!! pulsu per sekunde :D

Supaprastintas kodas:
static volatile uint32_t zcCounter;

static void IRAM_ATTR ZeroCrossISR(void)
{
   zcCounter++;
}

void setup()
{
// Is Arduino.h
//Interrupt Modes
//#define RISING    0x01
//#define FALLING   0x02
//#define CHANGE    0x03
//#define ONLOW     0x04
//#define ONHIGH    0x05
   int isrMode = FALLING;
   log_d("Attaching interrupt. Mode: %s", getIsrModeString(isrMode));
   attachInterrupt(digitalPinToInterrupt(zcPin), ZeroCrossISR, isrMode);
}

bool lastState = 0;
unsigned long nextMillis = 0;

void loop()
{
   unsigned long mls = millis();

   log_d("ZeroCross count: %d, Timer count: %d", core.getAcController().getZeroCrossCounter(), core.getAcController().getTimerCounter());
#ifdef USE_POLLING
   if (digitalRead(Pins::ZeroCross) != lastState)
   {
       lastState = !lastState;
       if (lastState == false)
       {
           count++;
       }
   }
   if (mls < nextMillis) return;
   nextMillis += 1000;
   log_d("ZeroCross poll count: %d", count);
   count = 0;
   return;
#endif // USE_POLLING

   if (mls < nextMillis) return;
   nextMillis += 1000;
   log_d("ZeroCross count: %d", zcCounter);
}

>Galima profilaktiškai pastatyti kondensatorių ~10nF tarp GND ir ZCDPulse >arčiau MCU - jei yra abejonių dėl triukšmų.
Pabandysiu ryt, bet abejoju... 
3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser