ESP 8266 Node MCU - Interrupt problém s knihovnou
ESP 8266 Node MCU - Interrupt problém s knihovnou
Zdravím všechny, mám problém s jedním projektem s Node MCU ESP8266.
V projektu potřebuji více odpočtů najednou. Použil jsem funkci setupInterrupt(). Při nahrávání mám stále chybovou hlášku: expected constructor, destructor, or type conversion before '(' token.
Zjistil jsem, že je zřejmě problém s knihovnou ESP8266WiFi.h, protože v desce Uno mi to normálně funguje.
Zde přidávám kód, který mi IDE označuje jako chybu.
Netušíte někdo , kde je problém?
Děkuji.
void setupInterrupt()
{
TIMSK2 &= ~(1<<TOIE2);
TCCR2A &= ~((1<<WGM21) | (1<<WGM20));
TCCR2B &= ~(1<<WGM22);
ASSR &= ~(1<<AS2);
TIMSK2 &= ~(1<<OCIE2A);
TCCR2B |= (1<<CS22) | (1<<CS20); // Set bits
TCCR2B &= ~(1<<CS21); // Clear bit
tcnt2 = 131;
TCNT2 = tcnt2;
TIMSK2 |= (1<<TOIE2);
}
ISR(TIMER2_OVF_vect) { //TENTO ŘÁDEK MÁM PROBARVENÝ JAKO CHYBU
TCNT2 = tcnt2;
if(time1 > 0)
{
time1--;
}
if(time2 > 0)
{
time2--;
}
if(time3 > 0)
{
time3--;
}}
V projektu potřebuji více odpočtů najednou. Použil jsem funkci setupInterrupt(). Při nahrávání mám stále chybovou hlášku: expected constructor, destructor, or type conversion before '(' token.
Zjistil jsem, že je zřejmě problém s knihovnou ESP8266WiFi.h, protože v desce Uno mi to normálně funguje.
Zde přidávám kód, který mi IDE označuje jako chybu.
Netušíte někdo , kde je problém?
Děkuji.
void setupInterrupt()
{
TIMSK2 &= ~(1<<TOIE2);
TCCR2A &= ~((1<<WGM21) | (1<<WGM20));
TCCR2B &= ~(1<<WGM22);
ASSR &= ~(1<<AS2);
TIMSK2 &= ~(1<<OCIE2A);
TCCR2B |= (1<<CS22) | (1<<CS20); // Set bits
TCCR2B &= ~(1<<CS21); // Clear bit
tcnt2 = 131;
TCNT2 = tcnt2;
TIMSK2 |= (1<<TOIE2);
}
ISR(TIMER2_OVF_vect) { //TENTO ŘÁDEK MÁM PROBARVENÝ JAKO CHYBU
TCNT2 = tcnt2;
if(time1 > 0)
{
time1--;
}
if(time2 > 0)
{
time2--;
}
if(time3 > 0)
{
time3--;
}}
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
Podle názvů registrů, mi to přijde jako kód pro procesor 328P. Ten není v žádném případě kompatibilní s tím v ESP.
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
Do tých registrov sa nevyznám, ak sú z AVR pre Arduino, tak to fungovať nebude, lebo je to pre inú architektúru mikrokontroléra.
V pár príkladoch pre ESP8266, kde bola interrupt rutina bola doplnená nad void setup() deklarácia funkcie s atribútom ICACHE_RAM_ATTR, možno to pomôže, ak nie je chyba v použitých registroch:
V pár príkladoch pre ESP8266, kde bola interrupt rutina bola doplnená nad void setup() deklarácia funkcie s atribútom ICACHE_RAM_ATTR, možno to pomôže, ak nie je chyba v použitých registroch:
Kód: Vybrat vše
void ICACHE_RAM_ATTR setupInterrupt(); // to use ESP8266 library >v2.5.0
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
děkuji, zkusím to.
Ještě pogooglim, nebo hold vyřeším odpočty jinak.
Ještě pogooglim, nebo hold vyřeším odpočty jinak.
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
O jakých časových intervalech se bavíme? Jestli by na to nestačil obyčejnej Ticker nebo třeba Interval od Xpablo.
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
Pokud v tom nejsi 100% kovanej, použij příslušnou knihovnu pro Arduino. Snadněji se s registry pracuje v C++ v příslušném IDE pro daný procesor STM32Cube (STM32) nebo MPLAB X IDE (AVR).
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
Jedná se cirka o šestiminutové odpočty. Kouknu se na ty dvě možnosti.
S registry nemám vůbec žádné zkušenosti.
S registry nemám vůbec žádné zkušenosti.
Re: ESP 8266 Node MCU - Interrupt problém s knihovnou
vyřešeno přes Ticker, děkuji všem
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host