-
- Там сказано, что не статические переменные разрешается использовать только между переключениями задач. SciFi(365 знак., 15.09.2015 10:19 - 10:30)
- а как иначе в кооперативке без использования стека? У задачи нет стека и память под него не расходуется. считайте эти статики стеком. С моей точки зрения это плюс. - abivan(15.09.2015 12:02)
- Т.е. SciFi всё правильно правильно продиагностировал? - Скрипач(15.09.2015 12:06)
- Скорее, это Vit правильно диагностировал: setjmp/longjmp. SciFi(45 знак., 15.09.2015 12:12)
- к сожалению внутри задачи нельзя вызвать ф-ю переключающую контекст. Если это необходимо то делается костыль. ф-я оформляется задачей. abivan(205 знак., 15.09.2015 12:41)
- Да. Так и есть. - Скрипач(15.09.2015 12:25)
- зырь чё напереговнокодил:) Vit(1488 знак., 15.09.2015 12:58 - 13:01)
- А вот у меня давно стоит вопрос: у AVR,даже у взрослых, setjmp не сохраняет RAMPZ. Безопасно ли это? - Олдфаг(15.09.2015 20:25, )
- Опасности не вижу потому как это не прерывание, неожиданностей нет, и этот регистр всегда заполняется нужным значением непосредственно перед elpm, spm, icall etc. - Petrovich(17.09.2015 10:44, )
- Не у верен, что не сохраняет Vit(11859 знак., 15.09.2015 23:29)
- Что-то то мне подсказывает, что сам и близко не так делаешь. Я прав? :) - Скрипач(15.09.2015 13:09)
- угу. у меня почти прототридсы с гото, со стейтом, объявленным внутри функции, или (очень редко) ванильные прототридсы. но есть и событийно-управляемый шедулер, только я его использую там, где нужно. он заточен на спатоньки, но фурычит и без Vit(13 знак., 15.09.2015 13:18)
- Подумывал запилить в Protothreads PT_LEVEL + PT_GOTO. Чтобы сделать из struct pt честный state. Теперь висит некая недоделка, больше трёх лет, никому не нужная. Скрипач(281 знак., 15.09.2015 13:26 - 19:59)
- угу. у меня почти прототридсы с гото, со стейтом, объявленным внутри функции, или (очень редко) ванильные прототридсы. но есть и событийно-управляемый шедулер, только я его использую там, где нужно. он заточен на спатоньки, но фурычит и без Vit(13 знак., 15.09.2015 13:18)
- А вот у меня давно стоит вопрос: у AVR,даже у взрослых, setjmp не сохраняет RAMPZ. Безопасно ли это? - Олдфаг(15.09.2015 20:25, )
- зырь чё напереговнокодил:) Vit(1488 знак., 15.09.2015 12:58 - 13:01)
- Скорее, это Vit правильно диагностировал: setjmp/longjmp. SciFi(45 знак., 15.09.2015 12:12)
- Т.е. SciFi всё правильно правильно продиагностировал? - Скрипач(15.09.2015 12:06)
- Ну тогда этот монстр ничем (кроме апломба) от protothreads не отличается. - Скрипач(15.09.2015 10:34)
- да я ж не настаиваю. Не нравится не пользуй. Монстр то где? То что уже реализованы все необходимые сервисы и самому не нужно их реализовывать это недостаток? Наглядность кода это ерунда, конечно. Если что, более убогая кооперативка salvo была abivan(52 знак., 15.09.2015 11:17)
- Лично мне, на одном килобайте, из "всех необходимых сервисов", нужен только yeild(). Остальное - балласт. OS_Yield() у них толком не работает. И чё? А монстр - это из-за нескольких слоёв макро. - Скрипач(15.09.2015 11:21 - 11:39)
- про монстр ясно. А зачем внутрь то лезть. Если система работает отлажена и не содержит(не выявлены) ошибок какая разница как она реализована? Если компилятор генерит компактный код это не достаточно? Есть платные оськи где исходный код вообще не abivan(197 знак., 15.09.2015 11:56)
- __ЕСЛИ!__ (Филлипа II даже немного жалко) - Скрипач(15.09.2015 12:00)
- задержка нужна(светодиодиками мигать с нужной частотой), бинарный семафор нужен чтобы сообщить что посылка по uart принята в прерывании, ожидание бинарного семафора с таймаутом полезно чтобы принять решение о сбросе флагов вочдога при отсутствии abivan(302 знак., 15.09.2015 11:42)
- про монстр ясно. А зачем внутрь то лезть. Если система работает отлажена и не содержит(не выявлены) ошибок какая разница как она реализована? Если компилятор генерит компактный код это не достаточно? Есть платные оськи где исходный код вообще не abivan(197 знак., 15.09.2015 11:56)
- Лично мне, на одном килобайте, из "всех необходимых сервисов", нужен только yeild(). Остальное - балласт. OS_Yield() у них толком не работает. И чё? А монстр - это из-за нескольких слоёв макро. - Скрипач(15.09.2015 11:21 - 11:39)
- взглянул. ИМХО больше похоже на
закат Солнцаsetjmp/longjump вручную - Vit(15.09.2015 10:54)
- да я ж не настаиваю. Не нравится не пользуй. Монстр то где? То что уже реализованы все необходимые сервисы и самому не нужно их реализовывать это недостаток? Наглядность кода это ерунда, конечно. Если что, более убогая кооперативка salvo была abivan(52 знак., 15.09.2015 11:17)
- а как иначе в кооперативке без использования стека? У задачи нет стека и память под него не расходуется. считайте эти статики стеком. С моей точки зрения это плюс. - abivan(15.09.2015 12:02)
- Там сказано, что не статические переменные разрешается использовать только между переключениями задач. SciFi(365 знак., 15.09.2015 10:19 - 10:30)