Не работает вытесняющая многозадачность или Проблемы с библиотекой MirmPS

leon_3
Offline
Зарегистрирован: 15.05.2015

Понадобилась мне многозадачность, что бы обрабатывать информацию (по i2c c малиной общаться, возможно по ком-порту) и при этом выполнять свои фунции. Возможно есть нормальное решение для этой задачи, но вот я пошел по пути псевдо-многозадачности. Пытался вкурить статью: http://robocraft.ru/blog/985.html  http://robocraft.ru/blog/981.html

и использовать соответсвующую библиотеку, но при компиляции выдает следующее...

/media/HDS/Process/Arduino/libraries/MirmPS/main2.cpp: In function 'void branching()':
/media/HDS/Process/Arduino/libraries/MirmPS/main2.cpp:44:39: error: cannot convert 'programm1' from type 'volatile void()' to type 'void*'
if (Taskcount==0) {Taskcount++;goto *programm1;}
^
/media/HDS/Process/Arduino/libraries/MirmPS/main2.cpp:45:39: error: cannot convert 'programm2' from type 'volatile void()' to type 'void*'
if (Taskcount==1) {Taskcount++;goto *programm2;}
^
Ошибка компиляции.
Arduino IDE 1.6.4, OS Kubuntu 14.04

Папка для библиотек: /media/HDS/Process/Arduino/libraries/

 
Кто знает как это победить? Или стоит пойти иным путем? Каким если не секрет?
cepzik
Offline
Зарегистрирован: 15.12.2015

Тоже столкнулся с таким же, только на 1.5.8.

ради эксперимента взял версию 1.0.5. и оно  норм откомпилировалось (пришлось в текст скетча добавить 

void setup2()

  {}
 
На работоспособность проверю завтра и отпишусь.
Logik
Offline
Зарегистрирован: 05.08.2014

leon_3 пишет:

Или стоит пойти иным путем? Каким если не секрет?

Да. Автоматное программирование.

cepzik
Offline
Зарегистрирован: 15.12.2015

работает, но норм пашут только простенькие функции типа могтать диодом/спамить и подобное.. tone() не пашет при этом.