19-01-2024, 21:56
(19-01-2024, 16:20)kaczakat napisał(a): Niestety projekt zbyt unikatowy sprzętowo by go odtworzyć i coś w nim grzebać. Ale od razu widać, że w ogóle nie starasz się zarządzać czasem w programie, próbując w każdym obiegu loop pytać o czas z RTC.Pin IRQ z TFT podłączyłem pod pin 36, inne mam już zajęte a na PCF8575 nie będzie i tak działał prawidłowo. Po odczytaniu stanu pinu wychodzi zawsze "1" po naciśnięciu jest zmiana na "0". Przerwanie chciałem zrobić na przykładzie podanym przez Ciebie w linku lecz po różnych kombinacjach zawsze po wgraniu do esp niestety sie resetuje w kółko.
Do napisania funkcji obsługi przerwania wybierasz pin IRQ z TFT i pod ten pin od strony IO ESP32 piszesz funkcję, wpisz w Google pytanie i masz przykład https://www.upesy.com/blogs/tutorials/wh...duino-code
Zdziwiłbym się, gdyby biblioteka nie miała odpowiednich opcji, więc może po prostu wystarczy jej podać odpowiednie parametry. Przykład jest dla przypadku, gdy IRQ wywołuje stan niski.Kod:void IRAM_ATTR function_ISR() {
// Function code
}
void setup() {
Serial.begin(115200);
pinMode(23, INPUT_PULLUP);
attachInterrupt(23, function_ISR, FALLING);
}
void loop() {
}
Kod:
void IRAM_ATTR tft_irq_isr(void) {
}
Kod:
pinMode(TFT_IRQ_PIN, INPUT); //pin TFT_irq przerwania
Kod:
attachInterrupt(TFT_IRQ_PIN, tft_irq_isr, FALLING);