Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil... Си... Несколько потоков...
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
BFunTic
Привет всем!!! Возможно этот вопрос обсуждался на форуме... Тогда киньте плз сцылку (если Вас не затруднит)...
Есть ли возможность организовать несколько потоков в Keil'e???
На ассемблере Я это реализовывал - не сложно...

Если есть возможность, то подскажите как разделить время между процессами и/или переключится между ними...
Заранее ОГРОМНОЕ спасибо!!!


PS: Прошу прощения если вопросы простые - мне не у кого больше спросить...
DASM
RTOS поставьте. Например tnkernel.com
777777
Цитата(BFunTic @ Dec 29 2007, 01:15) *
Есть ли возможность организовать несколько потоков в Keil'e???
На ассемблере Я это реализовывал - не сложно...
Если есть возможность, то подскажите как разделить время между процессами и/или переключится между ними...

А какие проблемы - запускаешь таймер и по каждому срабатыванию переключаешься на другую задачу. Но при этом будут большие накладные расходы - надо сохранять/восстанавливать все регистры (не только R0-R7), для каждой задачи выделять стек... Лучше делать по-другому: написать диспетчер, который по кругу будет вызывать задачи, а они должны быть организованы так, чтобы работали ограниченное время. В микропроцессорной системе это не сложно: обычно находятся задачи которые что-то проверяют и если условие выполнилось что-то делают. Или динамическая индикация: на каждый вызов диспетчера она переключается на следующий индикатор. В этом случае не потребуется сохранять все регистры - задача сама сохранит только нужные, а стек будет один.
BFunTic
DASM, эта библиотека не для 51 контроллеров... (изначала тема была в другой ветке)...

777777, дело в том что у меня есть "задача" которая считается достаточно долго (к примеру 40мс)... И есть задача которая должна обрабатываться каждые 10 мс... А еще есть внешний сторож, который нужно сбрасывать каждую миллисекунду... Сбрасывать сторож в прерывании нельзя - тк в случае зацикливания основной программы сторож должен ресетить контроллер...

Предложенный Вами вариант Я естественно уже реализовал... Но разве это программирование??? - это чушь... ИМХО...
DASM
Почему это чушь ? Это классическая кооперативная РТОС. А стремление к совершенству - оно проходит ;-)
Сергей Борщ
Цитата(BFunTic @ Dec 29 2007, 17:04) *
DASM, эта библиотека не для 51 контроллеров... (изначала тема была в другой ветке)...
В комплекте кейла была ОС, RTX Tiny, кажется. Даже примеры ее использования были.
Legotron
Цитата(Сергей Борщ @ Dec 29 2007, 22:36) *
В комплекте кейла была ОС, RTX Tiny, кажется. Даже примеры ее использования были.

Да действительно неплохая маленькая системка... проста в освоении в дебаггер встроена (tasklist), кооперативное или round-robin планирование... и ко всему в довесок совсем бесплатная. smile.gif

Цитата
Предложенный Вами вариант Я естественно уже реализовал... Но разве это программирование??? - это чушь... ИМХО...


ИМХО... зачем лепить своё подобие РТОС, если их итак как грязи (ну разве что экономия денег при серьезном подходе, хотя сомневаюсь что вам удастся превзойти показатель цена/качество/кол-во затраченных часов)
ИМХО... пописать ОС хорошая тренировка в программировании и это просто интересно но не более...

А все-таки рекомендую RTX-Tiny именно для Keila...
Захотите расширится RTX-Full или ARTX... придут на смену. правда я их пока еще не нашел нигде smile.gif
попутно если у кого есть... дайте знать smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.