_Ivana 0 12 января, 2012 Опубликовано 12 января, 2012 (изменено) · Жалоба Что за прерывания без флагов, просветите. Был бы специалистом - просветил бы. А так только на задворках памяти осталось что-то типа прерываний по высокому/низкому уровню на ногах. Согласен именно ":)" Спасибо за науку и пример. Буквально несколько часов назад обсуждали с тем же руководителем проекта применение именно такой особенности AVR (и не только их) - возможность сделать enable interrupt внутри прерывания, запретив только этот же источник - для вынесения "параллельных потоков" наружу уже готового линейного кода без переделки последнего, сохранение при этом в стек адресов возвратов из прерываний очень вдохновляет. Да, хорошо быть начальником: он по определению и не дурак и мат часть знает. Ну, это в данном случае не следствие а наоборот причина, почему он начальник :rolleyes: Я так понял что у вас а не мегаАВР, а недоАВР какой-то. Но "невытесняющая многозадачность с планировщиком" при этом влазит (какая ОСь кстати?). ИМХО, отлаживаться правильней/удобней на большем камне, а не на меньшем (я про ОЗУ). В финальном проекте будет.... не знаю что, но AVR побольше. А отлаживаю я свой блок на AT90USB162 с 512 байт ОЗУ :rolleyes: На что начальник говорит - если ты уложишься в эти 512 байт, то в готовом проекте я буду уверен, что ОЗУ не переполнится даже если все задачи начнут работать одновременно (условно). А у меня там ещё и конвертор USB<->COM с приемом команд и выдачей отладочной информации в терминал на комп :) ОС нет, самонаписанный нами же шедуллер, который по кругу запускает задачи, каждая из которых написана НЕ как при ОС - как будто других задач нет и все время её, а в виде "зашел, проверил готовность предыдущего шага - начал следующий - вышел", если я понятно объяснил :) Это смотря как делать. См. ссылка Спасибо за полезные прямые ссылки, буду изучать и пытаться понимать. ЗЫ: если в прерывании по приему очередного символа не делать ничего. кроме того как класть его в кольцевой буфер, то конечно даже в этом случае можно исхитриться и обойтись буфером меньше длины посылки (отрезая уже проверенные символы и считая контрольную сумму), но мне было проще анализировать имея строку целиком. Я подозреваю, что при анализе буфера я много раз пробегаю от начала посылки до конца буфера - и если посылка ещё не вся пришла, то делаю это зря... Но таков сейчас мой алгоритм анализа. Можно конечно придумать флаг - пришел конец посылки и тогда анализировать буфер, а после анализа сбрасывать... Изменено 12 января, 2012 пользователем _Ivana Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба Был бы специалистом - просветил бы. А так только на задворках памяти осталось что-то типа прерываний по высокому/низкому уровню на ногах. Флаг вроде был. Но один на все источники. Буквально несколько часов назад обсуждали с тем же руководителем проекта применение именно такой особенности AVR (и не только их) - возможность сделать enable interrupt внутри прерывания, запретив только этот же источник - для вынесения "параллельных потоков" наружу уже готового линейного кода без переделки последнего, сохранение при этом в стек адресов возвратов из прерываний очень вдохновляет. 100%-но работающая возможность, лишь бы стека хватило. ОС нет, самонаписанный нами же шедуллер, который по кругу запускает задачи, каждая из которых написана НЕ как при ОС - как будто других задач нет и все время её, а в виде "зашел, проверил готовность предыдущего шага - начал следующий - вышел", если я понятно объяснил :) Понятно, что-то вроде вызова функций, сохраняющих номер итерации(состояния). Я подозреваю, что при анализе буфера я много раз пробегаю от начала посылки до конца буфера - и если посылка ещё не вся пришла, то делаю это зря... Но таков сейчас мой алгоритм анализа. Можно конечно придумать флаг - пришел конец посылки и тогда анализировать буфер, а после анализа сбрасывать... Флаг придумать несложно: например приём символа с кодом 0x0D(CR) означает конец строки в NMEA и по нему можно начинать анализ. Успехов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться