Robię wielofunkcyjne urządzenie, które ma rezlizować kilka programów, przełączanych przy pomocy przerwani INT0. Tzn, program pierwszy wykonuje się w pętli while(1) tak długo, aż nie pojawi się przerwanie, które zakończy program pierwszy i rozpocznie drugi.
Mój pomysł wygląda tak:
no i nie działa. Wywala mi takie błędy:
label 'wybor' defined but not used
label 'wybor' used but not defined
O co chodzi? Co mam zrobić, że przerwanie zakończyło obecną pętlę i wywołało kolejny program? Cykliczne sprawdzanie czy przycisk jest wciśnięty nie wchodzi w grę. Programy będą dosyć długie i zawiłe.
Mój pomysł wygląda tak:
uint8_t numerprogramu = 1;
void program1(void) {
while(1) {
....
}
}
void program2(void) {
while(1) {
....
}
}
...i tak kilka kolejnych programów
int main(void) {
konfiguracje przerwań i innych krzeczy
wybor:
switch(numerprogramu) {
case 1:
program1();
break;
case 2:
program2()
break;
itp itd
}
}
ISR(INT0_vect) {
++numerprogramu;
goto wybor;
}
no i nie działa. Wywala mi takie błędy:
label 'wybor' defined but not used
label 'wybor' used but not defined
O co chodzi? Co mam zrobić, że przerwanie zakończyło obecną pętlę i wywołało kolejny program? Cykliczne sprawdzanie czy przycisk jest wciśnięty nie wchodzi w grę. Programy będą dosyć długie i zawiłe.
