Многопоточность с использованием C на PIC18 - PullRequest
7 голосов
/ 26 октября 2009

Как создать потоки, которые работают параллельно при программировании PIC18 , поскольку ОС не существует?

Ответы [ 13 ]

0 голосов
/ 22 декабря 2012

Я делаю это (строго говоря, кооперативная многозадачность с фиксированной глубиной стека вызовов).

Это работает, но компилятор Hitec-c работает против меня - он повторно использует ячейки памяти для временных переменных из функций, которые, по его мнению, никогда не запускаются одновременно. В основном потоки портят друг друга. Если я найду способ обойти это, я дополню этот ответ примером кода.

0 голосов
/ 23 мая 2010

Я согласен с ndim - вы можете думать о каждом обработчике прерываний как о «потоке». Иногда все задачи, которые вам нужно выполнить, могут быть обработаны обработчиками прерываний, запускаемыми внешними и внутренними событиями - «основной цикл» - это простой цикл, который ничего не делает.

Я не знаю, откуда некоторые комментаторы понимают, что для PIC18 "нет ОС". Для PIC18 существует довольно много специфичных для PIC библиотек многопоточности и «многозадачных ядер операционной системы», многие из которых являются бесплатными и с открытым исходным кодом. См. PICList: «Методы многозадачности, характерные для микроконтроллеров PIC» .

0 голосов
/ 09 декабря 2009

Это делает то же самое, цикл задач, а также обеспечивает приоритеты задач и то, что мне нравится, простое кодирование разбиения долго выполняющихся функций на кусочки.

http://www.mculabs.com/drivers/qtask.html

...