1891ВМ12Я 0 2 июля, 2006 Опубликовано 2 июля, 2006 · Жалоба Возможно ли как-то реализовать в AVRах переключение с одного потока команд на другие, которые выполняются "параллельно"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 3 июля, 2006 Опубликовано 3 июля, 2006 · Жалоба Вполне возможно. Есть два, пути: Первый путь наиболее сложный: написать диспетчер, который по таймеру будет прерывать текщую задачу, сохранять ее контекст и передавать управление другой задаче. Второй путь - организовать потоки таким образом, чтобы они сами передавали управление другим потокам. Тут путей реализации масса: 1. аналогично механизму WaitFor()/Sleep() в Windows. 2. короткие функции заведомо быстро выполняющиеся (с последовательным вызовом в основном цикле программы). 3. через простенький планировщик (который выполняется в контексте основного потока) и будет запускать периодические задачи через заданный интервал времени. Задачи не должны быть бесконечными, при завершении действия обязательно должны возвращать управление планировщику (механизми icall - ret). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beer_warrior 0 3 июля, 2006 Опубликовано 3 июля, 2006 · Жалоба http://www.avrfreaks.net/index.php?module=...&item_type=tool http://www.circuitcellar.com/AVR2004/wabst...650abstract.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 3 июля, 2006 Опубликовано 3 июля, 2006 · Жалоба Или возьмите готовую scmRTOS от нашего уважаемого dxp и не мучайтесь долго. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
osnwt 0 3 июля, 2006 Опубликовано 3 июля, 2006 · Жалоба Или возьмите готовую scmRTOS от нашего уважаемого dxp и не мучайтесь долго. Это для принудительного переключения задач (красиво, но ресурсоемко). Как альтернатива, jacos - при определенном внимании к программированию задач позволяет очень эффективно реализовать псевдопараллельное исполнение независимых задач и обмен данными между ними. Сам в свое время попробовал - очень понравилось. Очень подробное описание (на русском языке) с множеством примеров. Хороша именно отличной оптимизацией под ряд контроллеров (в т.ч. AVR, PIC, MSP430). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 3 июля, 2006 Опубликовано 3 июля, 2006 · Жалоба Большое спасибо за инфу :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
let's see 0 3 июля, 2006 Опубликовано 3 июля, 2006 · Жалоба electronix.ru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
muravei 3 4 июля, 2006 Опубликовано 4 июля, 2006 · Жалоба Может это поможет.Я , правда , не вникал. MTHREADS.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 4 июля, 2006 Опубликовано 4 июля, 2006 · Жалоба Как вариант - построение кода на основе конечных автоматов. Может не так удобно как оси, но зато меньше ресурсов надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 5 июля, 2006 Опубликовано 5 июля, 2006 · Жалоба Как альтернатива, jacos - при определенном внимании к программированию задач позволяет очень эффективно реализовать псевдопараллельное исполнение независимых задач и обмен данными между ними. Сам в свое время попробовал - очень понравилось. Очень подробное описание (на русском языке) с множеством примеров. Хороша именно отличной оптимизацией под ряд контроллеров (в т.ч. AVR, PIC, MSP430). Спасибо за ссылку, очень хорошая штука, примеры хорошие - разобрался в первый же час, ресурсов мало (вроде) кушает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Как альтернатива, jacos - при определенном внимании к программированию задач позволяет очень эффективно реализовать псевдопараллельное исполнение независимых задач и обмен данными между ними. Сам в свое время попробовал - очень понравилось. Очень подробное описание (на русском языке) с множеством примеров. Хороша именно отличной оптимизацией под ряд контроллеров (в т.ч. AVR, PIC, MSP430). Спасибо за ссылку, очень хорошая штука, примеры хорошие - разобрался в первый же час, ресурсов мало (вроде) кушает. Если есть вермя и желание, не расскажете ли подробнее обо всем?) Примеры задач, запущенных под осью; траблы с программированием, сборкой проекта и прочее? Я думаю многим было бы интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Спасибо за ссылку, очень хорошая штука, примеры хорошие - разобрался в первый же час, ресурсов мало (вроде) кушает. Если есть вермя и желание, не расскажете ли подробнее обо всем?) Примеры задач, запущенных под осью; траблы с программированием, сборкой проекта и прочее? Я думаю многим было бы интересно. В принципе тут всё подробно расписано: http://jacos.narod.ru/load/jacos_v1070.zip Тут и очень хорошее подробное описание, и примеры прилагаются. А для сборки проекта потреюутся библиотеки (под IAR): http://jacos.narod.ru/load/libr_v1070_avr_iar.zip Тут куча библиотек, но для проекта потребуется только одна, а как выбрать нужную библиотеку расписано в справке в разделе "библиотеки". А из траблов программирования, то например что первое попалось на глаза это если компилировать с поддержкой функций-сервисов ОС в обработчиках прерываний, то программа почему-то вешается сразу. Также если разрешать работу USARTа и его прерывания в данном потоке, то в нём почему-то невозможно использовать функции OS_Stop_Task и OS_Delay, только OS_Cooperate работает, иначе программа вешается... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
osnwt 0 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба А из траблов программирования, то например что первое попалось на глаза это если компилировать с поддержкой функций-сервисов ОС в обработчиках прерываний, то программа почему-то вешается сразу. Напомню, что для поддержки сервисов в прерываниях нужно: - использовать соответствующую версию библиотеки (с буквой i); - разрешить нужные сервисы в явном виде в файле конфигурации; - использовать в прерываниях версии сервисов, для того предназначенных (с окончанием на I). Иначе будет что угодно, в том числе, и зависы. Вообще, если можно обойтись в прерывании без вызова сервисов (или вообще других функций, особенно определенных в других файлах), то лучше так и делать. Иначе мы получим сохранение множества регистров (так как в общем случае компилятор имеет право использовать половину регистров в других функциях). В моей ситуации, когда мне было важно отрабатывать относительно точное время для одной из задач по прерыванию таймера, я в прерывании просто взводил битовый флаг в регистровой переменной, а снаружи его проверял (в основном цикле планировщика) и уже оттуда вызывал сервис OS. Получалось, что я, практически, из прерывания стартовал внешнюю задачу (которая получала при этом наивысший приоритет по определению из документации), и ничего не терял (так как у нас допустима погрешность в пределах кванта времени - раньше мы все равно не можем гарантировать вызов задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 8 июля, 2006 Опубликовано 8 июля, 2006 · Жалоба Напомню, что для поддержки сервисов в прерываниях нужно: - использовать соответствующую версию библиотеки (с буквой i); - разрешить нужные сервисы в явном виде в файле конфигурации; - использовать в прерываниях версии сервисов, для того предназначенных (с окончанием на I). Иначе будет что угодно, в том числе, и зависы. Этого я не учел, потому и зависало... Надо переустановить ruki.sys Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 15 июля, 2006 Опубликовано 15 июля, 2006 · Жалоба Нашел внизу страницы ссылку http://www.pumpkininc.com/ Просмотрел описание предлагаемой там ОС и нашел разительное сходство с jacOS. Только стоит там она $750-1250, а jacOS бесплатно. Отсюда вопрос - кто с кого слизал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться