-
- Интересно что выберете в итоге - avr495(16.09.2015 21:32)
- МК то какой? - =AlexD=(15.09.2015 07:34)
- Да Cortex M3 low cost памяти RAM 8K FLASH 32K - Make_Pic(15.09.2015 07:55 - 07:57)
- а можно узнать причины, по которым собственно изобретаются велосипеды, а не используется RTOS ? а то срача развели - на три экрана, и теперь за деревьями не видно леса. - Mahagam(14.09.2015 15:52)
- Дык все же написано выше и ниже, для вас конкретно - с РТОС все понятно, но рассматриваются варианты без применения последней. - Make_Pic(14.09.2015 19:11)
- RTOS не нужна, если не используется заимствованный код, не отдающий управление, например GUI или FS. Потому что свой можно написать и под автоматы. - VL(14.09.2015 16:41, )
- Причина проста - 512байт ОЗУ. - Скрипач(14.09.2015 15:59)
- а чем кооперативка не устраивает? и с меньшим озу работает. ядро 13 байт озу для stm8 и 5 байт на задачу - abivan(14.09.2015 18:05 - 18:07, ссылка)
- А они по большому счёту и не нужны. Это вечное громоздкие переключение контекстов, эти недосервисы - имхо, полноценной осью типа фриртос ей не стать, а потребности программеров-крестьян покрываются отлаженной годами каруселькой, где каждая задача Олдфаг(149 знак., 15.09.2015 09:45, )
- Что-то не могу разобраться как она со стеком при OS_Yield() поступает... Ткнёте пальцем? - Скрипач(14.09.2015 21:32 - 22:59)
- Да это считай те же прототреды, и со стеком та-же беда. - =AlexD=(15.09.2015 07:27)
- Точно? У них ни слова об этом. И в примерах локальные переменные есть. - Скрипач(15.09.2015 10:11)
- Там сказано, что не статические переменные разрешается использовать только между переключениями задач. 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)
- Точно? У них ни слова об этом. И в примерах локальные переменные есть. - Скрипач(15.09.2015 10:11)
- Да это считай те же прототреды, и со стеком та-же беда. - =AlexD=(15.09.2015 07:27)
- Цитата: "бывает три вида секса: Секс простой. Секс по телефону. И секс по барабану." - De_User(14.09.2015 18:33)
- а есть фразеологизм про бисер. - abivan(15.09.2015 11:22 - 11:25)
- :) - Make_Pic(14.09.2015 19:13)
- а чем кооперативка не устраивает? и с меньшим озу работает. ядро 13 байт озу для stm8 и 5 байт на задачу - abivan(14.09.2015 18:05 - 18:07, ссылка)
- Подход, если не нужно реальное вытеснение (т.е. критично время реакции), порочный: сложные системы в "больших компьютерах", наоборот, стараются сделать однопоточными и событийно-управляемыми. Иначе сложность синхронизации параллельных пороков fk0(1890 знак., 12.09.2015 13:33, ссылка)
- Молодой человек! Сие называется планировщик и писать его неделе 2 ручками. Чего заморачиваться-то? - st256(12.09.2015 11:39)
- Молод -зелен :) Спасибо, помолодел... Планировщик я не планировал писать, а хочу познакомиться с различными решениями этого дела - Make_Pic(12.09.2015 12:20)
- Так сами функции не прерываются? - st256(12.09.2015 12:33)
- Прерываются конечно - Make_Pic(12.09.2015 12:57)
- Так все равно полное сохранения контекста требуется. Почему обязательно нужно избегать шедуллера? По-моему, его поставить проще, чем мудрить над чем-то подобным, но чтобы оно шедуллером при этом не являлось. - st256(12.09.2015 13:03)
- Ответ - размер контекста. В первую очередь, локальные переменные в стеке. Под них нужно выделять место "с запасом". Посмотрите protothreands, контекст - строго сколько нужно, ни байтом больше. - Скрипач(12.09.2015 13:06)
- Локальные переменные уже и так в стеке. Или это для - "имитации замыкания&(12.09.2015 23:55, )
- (↴) - Скрипач(13.09.2015 13:45)
- Вообщето переменные в стеке никуда не сохраняются. Просто у каждой задачи свой стек, господин программист с Украины. - st256(12.09.2015 14:47)
- И какой размер у этого "своего стека", господин ездок по заграницам? - Скрипач(12.09.2015 15:07)
- 16-18 см. - Крок(13.09.2015 14:33)
- ...глубина? - Хи-хи(13.09.2015 15:44, )
- от количества регистров зависит. Обычно 100-200 слов. - st256(12.09.2015 15:17)
- ~10 задач. стек по большей части в районе 30-70 слов. сложная задача сожрала ~230. (ARM9) - Mahagam(12.09.2015 15:22)
- ...а от вложенности вызовов не зависит? Или это уже не контекст? :) - Скрипач(12.09.2015 15:21)
- ну на задачу, в среднем, по 10 слов. При глубине вложения 10, как раз 100 слов и набирается. Плюс РОНы и контрольные регистры. Итого - 200. - st256(12.09.2015 15:24)
- А так 100. Разница есть? - Скрипач(12.09.2015 15:29)
- Не понял? - st256(12.09.2015 15:31)
- Разница между 100 и 200 есть, спрашиваю? Скрипач(169 знак., 12.09.2015 15:33 - 15:37)
- Регистры сохраняются все. Ибо прерывание происходит в совершенно неожиданный момент, что там в эту секунду будет твориться, какие задачи выполняться никто предсказать не может. Либо тогда должен иметь место запрет на использование некоторых st256(37 знак., 12.09.2015 18:45)
- Ну так а я о чем? Экономия. - Скрипач(12.09.2015 21:17)
- На ATtiny12 никто и не собирается операционку запускать. - _basile(15.09.2015 17:52, )
- На attiny13 запиливал многозадачку. Часть глобальных переменных разложил по регистрам (WinAVR умеет) и таким макаром сократил потребный объем стека. - LightElf(15.09.2015 19:08)
- Кратко скажите, пожалуйста, как сказать это winavr? - symbions(16.09.2015 01:05)
- как-то так - LightElf(16.09.2015 10:52, ссылка)
- спасибо, ещё бы списко, какие регистры нельзя использовать (или не рекомендуется) - вообще было бы замечательно - symbions(16.09.2015 14:40)
- Не помню, давно уже
не брал в руки шашекAVR не использую - LightElf(16.09.2015 16:10)- Да и так очень хорошо - то всё читать не очень хотелось. Ну а более 2-3 регистров мне вряд ли понадобится. - symbions(16.09.2015 21:12)
- Не помню, давно уже
- спасибо, ещё бы списко, какие регистры нельзя использовать (или не рекомендуется) - вообще было бы замечательно - symbions(16.09.2015 14:40)
- как-то так - LightElf(16.09.2015 10:52, ссылка)
- Кратко скажите, пожалуйста, как сказать это winavr? - symbions(16.09.2015 01:05)
- На attiny13 запиливал многозадачку. Часть глобальных переменных разложил по регистрам (WinAVR умеет) и таким макаром сократил потребный объем стека. - LightElf(15.09.2015 19:08)
- На ATtiny12 никто и не собирается операционку запускать. - _basile(15.09.2015 17:52, )
- Ну так а я о чем? Экономия. - Скрипач(12.09.2015 21:17)
- Регистры сохраняются все. Ибо прерывание происходит в совершенно неожиданный момент, что там в эту секунду будет твориться, какие задачи выполняться никто предсказать не может. Либо тогда должен иметь место запрет на использование некоторых st256(37 знак., 12.09.2015 18:45)
- Разница между 100 и 200 есть, спрашиваю? Скрипач(169 знак., 12.09.2015 15:33 - 15:37)
- Не понял? - st256(12.09.2015 15:31)
- А так 100. Разница есть? - Скрипач(12.09.2015 15:29)
- ну на задачу, в среднем, по 10 слов. При глубине вложения 10, как раз 100 слов и набирается. Плюс РОНы и контрольные регистры. Итого - 200. - st256(12.09.2015 15:24)
- 16-18 см. - Крок(13.09.2015 14:33)
- И какой размер у этого "своего стека", господин ездок по заграницам? - Скрипач(12.09.2015 15:07)
- Да и часто используемые локальные переменные можно сделать static, а некоторые и глобально объявить. - Make_Pic(12.09.2015 13:33)
- Та нафига, рагаццо? Стек подменить значительно дешевле во всех смыслах. - st256(12.09.2015 14:49)
- Сколько нужно памяти на стек? Вдруг кто-то qsort() вызовет чтоб несколько тысяч элементов отсортировать? А памяти в мелком МК хватит на 50 задач, если в каждой qsort и не менее 8КБайт стека нужно? - fk0(12.09.2015 14:51)
- Красиво, но sqrt нереентрантна)) - Олдфаг(12.09.2015 15:09, )
- Тьфу, слслепу перепутал qsort и sqrt. Хотя какая разница. - Олдфаг(12.09.2015 15:13, )
- Столько же, сколько нужно на локальные переменные в обычной задаче. - st256(12.09.2015 14:54)
- На локальные переменные нужно десятки байт. А на стек -- килобайты. На каждую задачу. Потому и protothreads, что стек общий. - fk0(12.09.2015 14:57)
- Хватит чушь нести. Я чо планировщики никогда не писал? - st256(12.09.2015 15:00)
- Ты на вопрос ответь. Сколько памяти нужно на стек в килобайтах, для конкретной задачи. При том, что она вызывает тяжёлые функции из либц, и т.п. Не десятки байт же? Вот в linux менее 4КБайт и не выйдет, а практически нужно несколько страниц, fk0(94 знак., 12.09.2015 15:02)
- === Ты на вопрос ответь. Сколько памяти нужно на стек в килобайтах, для конкретной задачи. st256(688 знак., 12.09.2015 15:15)
- Опять сказки уровня ассемблера. Короче, стек менее единиц килобайт -- не бывает. В нормальных условиях. Поэтому для embedded-задач, характеризующихся сильной параллельностью управляющих алгоритмов (десятки-сотни параллельных процессов) интересны fk0(218 знак., 12.09.2015 15:21)
- Вот вам МК с 64 метрами DDR SDRAM на борту. Ни в чём себе не отказывайте --> - SciFi(16.09.2015 22:06, ссылка)
- прикольные наблюдения. это, видимо, у любителей стандартных библиотек такой нажор стека, у меня из десятка потоков почти все жрут до сотни регистро-мест. и только одна занудная матзадача жрёт больше. - Mahagam(16.09.2015 21:35)
- Заметано. - st256(12.09.2015 15:30)
- Опять сказки уровня ассемблера. Короче, стек менее единиц килобайт -- не бывает. В нормальных условиях. Поэтому для embedded-задач, характеризующихся сильной параллельностью управляющих алгоритмов (десятки-сотни параллельных процессов) интересны fk0(218 знак., 12.09.2015 15:21)
- === Ты на вопрос ответь. Сколько памяти нужно на стек в килобайтах, для конкретной задачи. st256(688 знак., 12.09.2015 15:15)
- Ты на вопрос ответь. Сколько памяти нужно на стек в килобайтах, для конкретной задачи. При том, что она вызывает тяжёлые функции из либц, и т.п. Не десятки байт же? Вот в linux менее 4КБайт и не выйдет, а практически нужно несколько страниц, fk0(94 знак., 12.09.2015 15:02)
- Хватит чушь нести. Я чо планировщики никогда не писал? - st256(12.09.2015 15:00)
- На локальные переменные нужно десятки байт. А на стек -- килобайты. На каждую задачу. Потому и protothreads, что стек общий. - fk0(12.09.2015 14:57)
- Красиво, но sqrt нереентрантна)) - Олдфаг(12.09.2015 15:09, )
- Сколько нужно памяти на стек? Вдруг кто-то qsort() вызовет чтоб несколько тысяч элементов отсортировать? А памяти в мелком МК хватит на 50 задач, если в каждой qsort и не менее 8КБайт стека нужно? - fk0(12.09.2015 14:51)
- Та нафига, рагаццо? Стек подменить значительно дешевле во всех смыслах. - st256(12.09.2015 14:49)
- Локальные переменные уже и так в стеке. Или это для - "имитации замыкания&(12.09.2015 23:55, )
- Ответ - размер контекста. В первую очередь, локальные переменные в стеке. Под них нужно выделять место "с запасом". Посмотрите protothreands, контекст - строго сколько нужно, ни байтом больше. - Скрипач(12.09.2015 13:06)
- Так все равно полное сохранения контекста требуется. Почему обязательно нужно избегать шедуллера? По-моему, его поставить проще, чем мудрить над чем-то подобным, но чтобы оно шедуллером при этом не являлось. - st256(12.09.2015 13:03)
- Прерываются конечно - Make_Pic(12.09.2015 12:57)
- Так сами функции не прерываются? - st256(12.09.2015 12:33)
- Молод -зелен :) Спасибо, помолодел... Планировщик я не планировал писать, а хочу познакомиться с различными решениями этого дела - Make_Pic(12.09.2015 12:20)
- Погуглите и посмотрите попытки реализации диспетчера задач на изяэлектроникс.ру и несколько статей о планировщиках на чипэнабле. Что-то подобное было, но, помню, не без интересных особенностей и недоразумений... - Олдфаг(12.09.2015 09:59, )
- На изяэлектроникс.ру смотрел реализации программного таймера в трех реализациях - мне не понравилось, может я не прав - Make_Pic(12.09.2015 10:25)
- Я не особо помню про программные таймеры, но вроде там был диспетчер задач на асме от хозяина сайта. О достоинствах судить не могу, с асмом разбираться лень. А вот планировщики с чипэнабла простые и на Си. Может, даже слишком простые. - Олдфаг(12.09.2015 10:35, )
- На чипэнабле смотрю уже, да вроде есть подход - Make_Pic(12.09.2015 10:42)
- Там помню было прокрустово ограничение на проход всех задач за время некого системного кванта, и, если проход закончен раньше то тупое ожидание конца, и ещё интересно квазирандомный порядок выполнения задач в проходах, что меня и отпугнулло. - Олдфаг(12.09.2015 10:54, )
- ожидание можно вынести в прерывания (некоторые), а квазираундом можно и переписать - Make_Pic(12.09.2015 12:26)
- Там помню было прокрустово ограничение на проход всех задач за время некого системного кванта, и, если проход закончен раньше то тупое ожидание конца, и ещё интересно квазирандомный порядок выполнения задач в проходах, что меня и отпугнулло. - Олдфаг(12.09.2015 10:54, )
- На чипэнабле смотрю уже, да вроде есть подход - Make_Pic(12.09.2015 10:42)
- Всю дорогу пользуюсь, в качестве таймера, разницей текущего значения системного и сохранённым значением в точке отсчета. Скрипач(72 знак., 12.09.2015 10:28)
- Я так же с выходом из цикла при не достижении нужной задержки по условию к следующей задаче в main loop и т.д. И так далее по карусели, если задержка выполнена в какой то задаче, выполняем условие в этой задаче и взводим флаг события и так далее. Make_Pic(75 знак., 12.09.2015 10:39 - 10:41)
- А зачем "флаг события"? Как по мне, лишняя сущность. Скрипач(239 знак., 12.09.2015 10:51)
- Я так же с выходом из цикла при не достижении нужной задержки по условию к следующей задаче в main loop и т.д. И так далее по карусели, если задержка выполнена в какой то задаче, выполняем условие в этой задаче и взводим флаг события и так далее. Make_Pic(75 знак., 12.09.2015 10:39 - 10:41)
- Я не особо помню про программные таймеры, но вроде там был диспетчер задач на асме от хозяина сайта. О достоинствах судить не могу, с асмом разбираться лень. А вот планировщики с чипэнабла простые и на Си. Может, даже слишком простые. - Олдфаг(12.09.2015 10:35, )
- На изяэлектроникс.ру смотрел реализации программного таймера в трех реализациях - мне не понравилось, может я не прав - Make_Pic(12.09.2015 10:25)
- И чем это будет принципиально от RTOS отличаться? - AlexG(12.09.2015 09:54)
- Тем, что без RTOS - прохождение очереди функций с ожиданиями можно решить например установкой и сбросом флагов. Я же спрашиваю как это красивее, правильнее сделать такой подход. RTOS это переключатель задач, сохранение контекста на низком уровне, Make_Pic(91 знак., 12.09.2015 10:11 - 10:17)
- "Не всегда такая сложная реализация нужна". Почему бы не жить проще, если можно жить проще. Все ведь спижжено еще до нас. - _basile(14.09.2015 22:30, )
- Дык расскажите, что спиженно поподробнее, а то намеками... - Make_Pic(14.09.2015 22:34)
- "Не всегда такая сложная реализация нужна". Почему бы не жить проще, если можно жить проще. Все ведь спижжено еще до нас. - _basile(14.09.2015 22:30, )
- Тем, что без RTOS - прохождение очереди функций с ожиданиями можно решить например установкой и сбросом флагов. Я же спрашиваю как это красивее, правильнее сделать такой подход. RTOS это переключатель задач, сохранение контекста на низком уровне, Make_Pic(91 знак., 12.09.2015 10:11 - 10:17)
- «Компьютер — это конечный автомат. Потоковое программирование нужно тем, кто не умеет программировать конечные автоматы» (с)Алан Кокс - IBAH(11.09.2015 21:01, ссылка)
- Уважаю энтузиастов, но часто проклинаю авторов когда приходится поддерживать/развивать такие программы( Так же, как и в случае калбеков, вначале теряю кучу времени на понять кто кого вызывает. Это как переводить иностранный технический текст со Олдфаг(88 знак., 12.09.2015 10:29, )
- Странно... некоторые утверждают наоборт, открою маленький секрет, представьте что это не программа, а схема, точнее, даже, это программа моделирующая работу электрической схемы, типа цифрового фильтра с БИХ, а если воспользоваться понятием IBAH(43 знак., 12.09.2015 13:17)
- Угу. Схема, в которой вызываемые функции или case понятия не имеют кто, после кого, и и по какому внешнему входному запросу их вызвал. Это не схема, в которой от элемента нельзя проследить связь вверх. Для такой "схемы" нужна ещё одна схема)) - Олдфаг(12.09.2015 13:58, )
- Процедурность головного мозга!!! в схеме никто никого не вызывает!!!! - IBAH(12.09.2015 14:08)
- Вы все напутали. Повторю, если непонятно: в схеме можно проследить связь вверх. В свищ технологии и кал-бэках это затруднительно. Теперь яснее? А связь на схеме, это, в первом приближении, и есть "вызов" в программе. - Олдфаг(12.09.2015 14:17, )
- Эта связь как раз и не нужна и только запутывает. В свитч-технологии все нужные связи -- в схеме автомата. А кто кого вызывает -- чисто технический вопрос. - fk0(12.09.2015 14:28)
- Увы, мне частенько платят (и разговор про это), чтобы разобраться в программе без любезно прилагаемой схемы ее автомата. И не знаешь там что за автомат:Шмайссер или ППШ. - Олдфаг(12.09.2015 14:35, )
- Мили или Мура. - fk0(12.09.2015 14:40)
- С газировкой или с презервативами. - Скрипач(12.09.2015 15:44)
- Спешиал фо конференшен IBAH(1495 знак., 12.09.2015 22:02 - 13.09.2015 21:29)
- Зачем такой сложный 'инкремент таймера'? Почему не просто ++? - Олдфаг(12.09.2015 22:56, )
- там не один таймер, а бесконечность... вжик-жик... бесконечность...вжик-жик... бесконечность...вжик-жик... бесконечность...вжик-жик... бесконечность... IBAH(854 знак., 13.09.2015 12:32 - 12:40, картинка)
- Смешно читать что никто никого не вызывает, когда в комментариях стоит фраза "вызов экземпляра". Ну да ладно. А обнуление счётчиков t->et не требуется? - Олдфаг(13.09.2015 23:11, )
- Не умением поразить тщился, а исключительно повеселить почтеннейшую публику IBAH(1572 знак., 14.09.2015 08:30)
- Кажется, теперь инкремент таймера спрятался так, что программа его никогда не найдет? - Олдфаг(14.09.2015 08:49, )
- О!Понедельник... О! Утро... О! Непереносимая тяжесть бытия... IBAH(1504 знак., 14.09.2015 09:10)
- Ну, осталось защитить систему от зависания, когда индиот-пользователь установит t->pt вблизи максимального значения, например, 65535, а инкремент таймера будет больше чем на 1. Сделайте защиту или оговорите ограничения на t->pt, иначе момент Олдфаг(52 знак., 14.09.2015 09:45, )
- так сгодится? unsigned long et; даже unsigned long long et; мне не жалко - IBAH(14.09.2015 12:28)
- Ну, осталось защитить систему от зависания, когда индиот-пользователь установит t->pt вблизи максимального значения, например, 65535, а инкремент таймера будет больше чем на 1. Сделайте защиту или оговорите ограничения на t->pt, иначе момент Олдфаг(52 знак., 14.09.2015 09:45, )
- О!Понедельник... О! Утро... О! Непереносимая тяжесть бытия... IBAH(1504 знак., 14.09.2015 09:10)
- Кажется, теперь инкремент таймера спрятался так, что программа его никогда не найдет? - Олдфаг(14.09.2015 08:49, )
- Не умением поразить тщился, а исключительно повеселить почтеннейшую публику IBAH(1572 знак., 14.09.2015 08:30)
- Ну хорошо, а как на практике всю эту кухню применить - ближе к делу/телу?! Можно живой пример рабочий привести, а то все эти парадигмы колом из башки вылазят :) - Make_Pic(13.09.2015 19:19)
- Дык, на три поста выше IBAH(128 знак., 13.09.2015 21:21, ссылка)
- FPGA? Понятно откуда вода течет и топик в этом духе на электрониксе читал - Make_Pic(13.09.2015 22:30)
- Стесняюсь спросить. А у вас нет ощущения что вы изобрели язык ассемблера? - Скрипач(13.09.2015 21:29)
- в понедельник с утра бывает - IBAH(13.09.2015 21:35)
- Дык, на три поста выше IBAH(128 знак., 13.09.2015 21:21, ссылка)
- парадигму я придумал сам и нарекаю схемотехнически ориентированное программирование Отлично :), теперь понятно как называть Ladder, FBD и ST до кучи, т.к. функции и алгоритмы все теже что и в FBD. - AlexG(13.09.2015 14:20)
- ну уж и пошутить нельзя... я же предупредил... там же было :):):):):) хотя если бы не картинка, ни за что бы не спалили :) - IBAH(13.09.2015 21:03 - 21:31)
- Нееее, ты не путай, чувак совершенно новую парадигму изобрёл.
В ней все через...Все совпадения случайны 8) Скрипач(313 знак., 13.09.2015 14:29 - 16:41)- В программе которую сейчас пишу все больше замечаю БД-ориентированное программирование. Есть набор данных и пачка функций, эквивалентных запросам к базе данных: добавление данных, выборка данных подпадающих под условие, проверка наличия данных AlexG_(93 знак., 14.09.2015 06:11, )
- Сотня-полторы это даже не средняя, а совсем небольшая программа, в такое количество лично мне сложно уложиться. С другой стороны, смысл FBD вовсе не в экономии ячеек, а в том чтобы по максимуму ограничить фантазию программиста и не дать даже AlexG(60 знак., 13.09.2015 18:42)
- Речь не об FBD, а о предложенном шедевре. Скрипач(521 знак., 13.09.2015 19:05 - 19:20)
- Только стрелочками не обязательно соединять именно инструкции процессора или последовательность выполнения операторов в императивной программе... Можно и состояния в КА. - fk0(13.09.2015 20:25)
- Можно. Но мне не хватило в Драконе именно FBDшной возможности сделать "внешнее" описание входов-выходов "иконки", спрятав её КА-суть внутри. Скрипач(240 знак., 13.09.2015 20:35)
- Согласен, "FBD" в рукопашную это закат солнца вручную. - AlexG(13.09.2015 19:31)
- И раз уж заговорили о связях, экспериментировал с буфером. Скрипач(429 знак., 13.09.2015 20:29 - 20:44)
- Только стрелочками не обязательно соединять именно инструкции процессора или последовательность выполнения операторов в императивной программе... Можно и состояния в КА. - fk0(13.09.2015 20:25)
- Речь не об FBD, а о предложенном шедевре. Скрипач(521 знак., 13.09.2015 19:05 - 19:20)
- Смешно читать что никто никого не вызывает, когда в комментариях стоит фраза "вызов экземпляра". Ну да ладно. А обнуление счётчиков t->et не требуется? - Олдфаг(13.09.2015 23:11, )
- там не один таймер, а бесконечность... вжик-жик... бесконечность...вжик-жик... бесконечность...вжик-жик... бесконечность...вжик-жик... бесконечность... IBAH(854 знак., 13.09.2015 12:32 - 12:40, картинка)
- Зачем такой сложный 'инкремент таймера'? Почему не просто ++? - Олдфаг(12.09.2015 22:56, )
- Спешиал фо конференшен IBAH(1495 знак., 12.09.2015 22:02 - 13.09.2015 21:29)
- С газировкой или с презервативами. - Скрипач(12.09.2015 15:44)
- Мили или Мура. - fk0(12.09.2015 14:40)
- Увы, мне частенько платят (и разговор про это), чтобы разобраться в программе без любезно прилагаемой схемы ее автомата. И не знаешь там что за автомат:Шмайссер или ППШ. - Олдфаг(12.09.2015 14:35, )
- Эта связь как раз и не нужна и только запутывает. В свитч-технологии все нужные связи -- в схеме автомата. А кто кого вызывает -- чисто технический вопрос. - fk0(12.09.2015 14:28)
- Вы все напутали. Повторю, если непонятно: в схеме можно проследить связь вверх. В свищ технологии и кал-бэках это затруднительно. Теперь яснее? А связь на схеме, это, в первом приближении, и есть "вызов" в программе. - Олдфаг(12.09.2015 14:17, )
- Процедурность головного мозга!!! в схеме никто никого не вызывает!!!! - IBAH(12.09.2015 14:08)
- Угу. Схема, в которой вызываемые функции или case понятия не имеют кто, после кого, и и по какому внешнему входному запросу их вызвал. Это не схема, в которой от элемента нельзя проследить связь вверх. Для такой "схемы" нужна ещё одна схема)) - Олдфаг(12.09.2015 13:58, )
- Странно... некоторые утверждают наоборт, открою маленький секрет, представьте что это не программа, а схема, точнее, даже, это программа моделирующая работу электрической схемы, типа цифрового фильтра с БИХ, а если воспользоваться понятием IBAH(43 знак., 12.09.2015 13:17)
- Уважаю энтузиастов, но часто проклинаю авторов когда приходится поддерживать/развивать такие программы( Так же, как и в случае калбеков, вначале теряю кучу времени на понять кто кого вызывает. Это как переводить иностранный технический текст со Олдфаг(88 знак., 12.09.2015 10:29, )
- Coroutine или protothreads LightElf(62 знак., 11.09.2015 17:28)
- Может кому будет интересно: использование protothreads в функциональном стиле программирования. Скрипач(985 знак., 12.09.2015 13:26)
- На открытие не тянет. С тем же успехом можно было бы эти статики держать в функции main и передавать как аргументы. Так было бы нагляднее. - SciFi(14.09.2015 14:43)
- А я и не претендую на "открытие". Рацпредложение. Ответы: Скрипач(536 знак., 14.09.2015 15:39)
- Спорить не стану, ибо не понимаю, что эта хреновина делает. Имена переменных, пардон за резкость, мне мало о чём говорят :-) - SciFi(14.09.2015 15:44)
- Специально для вас, еще более простой вариант (
с картинкамис комментариями) Скрипач(632 знак., 14.09.2015 15:54 - 16:02)- Так не честно. SciFi(454 знак., 14.09.2015 16:02)
- Скажите спасибо что я возврат значения не отпилил надфилем :) Я же написал что это функциональная парадигма, а не модульная
. Так хули вы к речным зверям доколупались?!:) Скрипач(686 знак., 14.09.2015 16:04 - 21:47)- ВЫ можете дать полное описание макросов, которыми вы пользуетесь в этой "головоломке", многим незнакомым с protothreads интересно будет? - Make_Pic(15.09.2015 08:05 - 08:18)
- Без проблем (внутри). Если не достаточно - задавайте вопросы. Скрипач(1056 знак., 15.09.2015 10:30 - 10:37)
- ВЫ можете дать полное описание макросов, которыми вы пользуетесь в этой "головоломке", многим незнакомым с protothreads интересно будет? - Make_Pic(15.09.2015 08:05 - 08:18)
- Скажите спасибо что я возврат значения не отпилил надфилем :) Я же написал что это функциональная парадигма, а не модульная
- Так не честно. SciFi(454 знак., 14.09.2015 16:02)
- Специально для вас, еще более простой вариант (
- Спорить не стану, ибо не понимаю, что эта хреновина делает. Имена переменных, пардон за резкость, мне мало о чём говорят :-) - SciFi(14.09.2015 15:44)
- Да чо мелочиться, можно ваще для каждой задачи сделать рукопашный стек в виде связного списка и передавать его в задачи как параметр :-). А можно для избавления от подобного геморроя тупо scmRTOS прикрутить и кодить себе припеваючи. - =AlexD=(14.09.2015 15:07)
- При программировании для atmega8? Да и на С++ переползать не вдохновляет. - Скрипач(14.09.2015 15:30)
- и чо? scmRTOS крошечная, задачи можно рассматривать как отложенные приоритетные прерывания. По поводу С++ ваще смешно, ну кодируйте строго в стиле Си, кто вам не даёт :-)) - =AlexD=(14.09.2015 18:10)
- AvrStudio 4.18 не даёт. А шо? - Скрипач(14.09.2015 21:34)
- Мне это ни о чём не говорит, я аврам под иар пишу, в чём конкретно проблема? GCC не компилит C++ ? Отладчик студии не понимает плюсовый coff ? Или чо? - =AlexD=(15.09.2015 07:20)
- Та облом разбираться. Нужно ВВП удваивать. - Скрипач(15.09.2015 10:50)
- Мне это ни о чём не говорит, я аврам под иар пишу, в чём конкретно проблема? GCC не компилит C++ ? Отладчик студии не понимает плюсовый coff ? Или чо? - =AlexD=(15.09.2015 07:20)
- AvrStudio 4.18 не даёт. А шо? - Скрипач(14.09.2015 21:34)
- и чо? scmRTOS крошечная, задачи можно рассматривать как отложенные приоритетные прерывания. По поводу С++ ваще смешно, ну кодируйте строго в стиле Си, кто вам не даёт :-)) - =AlexD=(14.09.2015 18:10)
- Похоже в этом и есть главная делема - с RTOS и без RTOS - Make_Pic(14.09.2015 15:11)
- При программировании для atmega8? Да и на С++ переползать не вдохновляет. - Скрипач(14.09.2015 15:30)
- А я и не претендую на "открытие". Рацпредложение. Ответы: Скрипач(536 знак., 14.09.2015 15:39)
- Функциональный стиль программирования предусматривает использование callback функций - Make_Pic(12.09.2015 19:31)
- Нет. О замыканиях рассказать? Я использую static для имитации замыкания. - Скрипач(12.09.2015 21:49 - 13.09.2015 15:13)
- Да, расскажите плз - avr495(14.09.2015 14:37)
- Замыкания (англ. closure) Скрипач(663 знак., 14.09.2015 15:49)
- Да, расскажите плз - avr495(14.09.2015 14:37)
- Нет. О замыканиях рассказать? Я использую static для имитации замыкания. - Скрипач(12.09.2015 21:49 - 13.09.2015 15:13)
- На открытие не тянет. С тем же успехом можно было бы эти статики держать в функции main и передавать как аргументы. Так было бы нагляднее. - SciFi(14.09.2015 14:43)
- Я знаю конгфу, карате и много других страшных слов! - IBAH(11.09.2015 21:05)
- Для гугления - достаточно именно этих двух страшных слов. - LightElf(14.09.2015 19:52)
- protothreads не устраивает из за на этапе работы препроцессора подстановки текста и др. ограничений - Make_Pic(11.09.2015 19:05)
- Чем-то приходится жертвовать. Особенно интересен вариант на С++, в котором псевдо-локальные переменные красиво описываются в классе объекта. - Скрипач(12.09.2015 12:52)
- На C++ можно и более интересное сделать, но я не хочу использовать C++ для микроконтроллеров. - Make_Pic(12.09.2015 12:56)
- Можно, на уровне protothreads, через longjmp сделать. *Или через "сохраняемые метки", которые, правда, есть только в GCC. - Скрипач(12.09.2015 12:59 - 13:01)
- На C++ можно и более интересное сделать, но я не хочу использовать C++ для микроконтроллеров. - Make_Pic(12.09.2015 12:56)
- Если упереться в использование GCC, то общем можно и без макросов обойтись. Но согласен - штука на любителя. С другой стороны основные неприятности из-за несохранения стека, а если стек сохранять - то это будет обычная RTOS. - LightElf(11.09.2015 19:46)
- Чем-то приходится жертвовать. Особенно интересен вариант на С++, в котором псевдо-локальные переменные красиво описываются в классе объекта. - Скрипач(12.09.2015 12:52)
- Может кому будет интересно: использование protothreads в функциональном стиле программирования. Скрипач(985 знак., 12.09.2015 13:26)
- Есть такое, лично я юзаю во всех поделках уже лет 7, удобно. Из само собой имеющихся плюсов типа неограниченного множества сообщений и виртуальных таймеров есть еще один плюс, новая "степень свободы" для отладки программы, ее состояние. - avr495(11.09.2015 16:56 - 17:03, ссылка)
- Абрамыч жжет ни падецки. Изобретайте лисапет дальше. Делать вам, ребята нечего, ну на девок внимание обратите. Я UCOS-II лет 15 назад на 8051 юзал без проблем. Нынче кортексы от ST круче х386 а вы тут фигней занимаетесь. - _basile(14.09.2015 20:41, )
- ТРОЛЛ_МОДЕ_ЕНАБЛЕД=ТРУЕ Абрамыч фигни не посоветует, он же тренер чемпионов мира по программированию. - avr495(16.09.2015 16:47)
- И каков там механизм выхода из длинных циклов, чтобы не было простоя МК? - Make_Pic(11.09.2015 19:07)
- Вот как можно было прославиться - "созданием отечественной технологии". Лично я юзаю лет 25, но без умных слов :) - VL(11.09.2015 17:07, )
- Эээ, ну не мешайте стране поднимать этот, как его, ВэВэПэ :) - avr495(11.09.2015 17:09)
- Абрамыч жжет ни падецки. Изобретайте лисапет дальше. Делать вам, ребята нечего, ну на девок внимание обратите. Я UCOS-II лет 15 назад на 8051 юзал без проблем. Нынче кортексы от ST круче х386 а вы тут фигней занимаетесь. - _basile(14.09.2015 20:41, )