Как поместить цикл в case оператора switch
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Как поместить цикл в case оператора switch
В теме ТС-у показали разные примеры. Я выложил два примера. Один просто включение выходов, другой с мигалками. Пример просимулировал в avr-studio. Что ещё нужно?
- Реклама
Re: Как поместить цикл в case оператора switch
Вернемся к ранее сказанному.
У каждого из нас своя "начальная школа", исходя из которой и строится понимание и восприятие изложенного материала.
Вот тут порой и проблема - мы то, стараясь помочь исходим из собственного опыта и знаний, часто не имея представления о начальной подготовке вопрошающего.
Проще не цапатьтся, а изложить свою точку зрения"как есть", указывая на ее преимущества и недостатки по сравнению с изложенным другими участниками обсуждения материалами но без обидных личных выпадов в их адрес.
Топикстартера наши взаимоуколы не интересуют (они лишь участникам нервы и настроение портят) - а вот изложенный материал в любом варианте полезен - что сочтет "воспринимаемым", то и применит.
Принуждать к применению с нашей стороны более рационального решения типа "то что тут рассказывали есть ГО... а вот это (моё) есть прогресс абсолютный" также не следует (исключения грубые нарушения правил техники безопасности и законодательных норм - и то... "в порядке предупреждения о возможных неприятностях").
В то же время предложить более современное/сложное/затратное/ в качестве рекомендации возможного применения - штука полезная, но опять же "без фанатизьма" и "переходов на личности".
Кстати... об отсутствии возможности скомпилировать/проверить пример...
Давно уже отмечено, что в запросе необходима и схема и файлы проекта (или той части, что предложена к рассмотрению) если содержимое выходит за рамки стандартного набора компилятора "по умолчанию".
Особо заметно в случае применения в проектах ардуиноIDE (и/или Си, а возможно, и иных ЯВУ) "сторонних библиотек" -лучше их копию в отдельной папочке в основную папку проекта положить - меньше проблем с поиском и у консультанта и у вопрошающего.

У каждого из нас своя "начальная школа", исходя из которой и строится понимание и восприятие изложенного материала.
Вот тут порой и проблема - мы то, стараясь помочь исходим из собственного опыта и знаний, часто не имея представления о начальной подготовке вопрошающего.
Проще не цапатьтся, а изложить свою точку зрения"как есть", указывая на ее преимущества и недостатки по сравнению с изложенным другими участниками обсуждения материалами но без обидных личных выпадов в их адрес.
Топикстартера наши взаимоуколы не интересуют (они лишь участникам нервы и настроение портят) - а вот изложенный материал в любом варианте полезен - что сочтет "воспринимаемым", то и применит.
Принуждать к применению с нашей стороны более рационального решения типа "то что тут рассказывали есть ГО... а вот это (моё) есть прогресс абсолютный" также не следует (исключения грубые нарушения правил техники безопасности и законодательных норм - и то... "в порядке предупреждения о возможных неприятностях").
В то же время предложить более современное/сложное/затратное/ в качестве рекомендации возможного применения - штука полезная, но опять же "без фанатизьма" и "переходов на личности".
Кстати... об отсутствии возможности скомпилировать/проверить пример...
Давно уже отмечено, что в запросе необходима и схема и файлы проекта (или той части, что предложена к рассмотрению) если содержимое выходит за рамки стандартного набора компилятора "по умолчанию".
Особо заметно в случае применения в проектах ардуиноIDE (и/или Си, а возможно, и иных ЯВУ) "сторонних библиотек" -лучше их копию в отдельной папочке в основную папку проекта положить - меньше проблем с поиском и у консультанта и у вопрошающего.
Re: Как поместить цикл в case оператора switch
О чем вы вообще пишите? Если вы про пример VladislavS, то:BOB51 писал(а):Кстати... об отсутствии возможности скомпилировать/проверить пример...
Открываем ArduinoIde, целевой контроллер ATmega8 Internal 8MHz,
Файл -> Новый
Стираем вот это
Спойлер
Код: Выделить всё
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}Копируем в рабочую папку файлы AVR_simple_pins.hpp key.hpp и led.hpp
Далее эти файлы надо перетащит мышкой в рабочее окно проекта ArduinoIde
и жмем кнопку "Проверить" и усе
Спойлер
Код: Выделить всё
Скетч использует 558 байт (7%) памяти устройства. Всего доступно 7680 байт.
Глобальные переменные используют 13 байт (1%) динамической памяти, оставляя 1011 байт для локальных переменных. Максимум: 1024 байт.-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1916
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Как поместить цикл в case оператора switch
[uquote="Dimon456",url="/forum/viewtopic.php?p=4305287#p4305287"]... Далее из папочки Temp вытаскиваете папку arduino_build_xxxxx и можете по отлаживать в протеусе.[/uquote]
Еще проще из меню Arduino IDE: меню Скетч -> Экспорт бинарного файла. Файл .hex будет размещен в папке проекта.
Еще проще из меню Arduino IDE: меню Скетч -> Экспорт бинарного файла. Файл .hex будет размещен в папке проекта.
Последний раз редактировалось veso74 Сб окт 15, 2022 19:29:41, всего редактировалось 1 раз.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Как поместить цикл в case оператора switch
[uquote="Dimon456",url="/forum/viewtopic.php?p=4305287#p4305287"]и можете по отлаживать в протеусе.[/uquote]Отлаживать в смысле отлаживать или просто запускать на исполнение?
ЗЫ: скетчем мои программы ещё никто не называл
ЗЫ: скетчем мои программы ещё никто не называл
- Реклама
Re: Как поместить цикл в case оператора switch
Под отладкой я имел ввиду elf файл, а не бинарник.VladislavS писал(а):Отлаживать в смысле отлаживать или просто запускать на исполнение?
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1916
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Как поместить цикл в case оператора switch
В Arduino IDE + MiniCore -> ATmega8 все нормально компилировалось. HEX файл внутри архива.
MCUdude/MiniCore
MCUdude/MiniCore
- Вложения
-
- Untitled-1.jpg
- (148.58 КБ) 56 скачиваний
-
- 3BlinkingLeds_w.zip
- (9.44 КБ) 65 скачиваний
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Как поместить цикл в case оператора switch
Видео примера по ТЗ ТС.
Архив примера прикрепил.
Схемы нет. Ибо все просто и тупо. В определениях проекта входы и выходы прописаны. Входы и выходы в моем примере подстроены под STK-500. У которой и входы и выходы по схеме с общим плюсом. То есть. Активный низкий уровень сигнала.
На этом я эту тему заканчиваю. Показываю свой пример как есть.
Архив примера прикрепил.
Схемы нет. Ибо все просто и тупо. В определениях проекта входы и выходы прописаны. Входы и выходы в моем примере подстроены под STK-500. У которой и входы и выходы по схеме с общим плюсом. То есть. Активный низкий уровень сигнала.
На этом я эту тему заканчиваю. Показываю свой пример как есть.
- Вложения
-
- INPUTS_OUTPUTS.rar
- (434.53 КБ) 68 скачиваний
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Как поместить цикл в case оператора switch
Demiurg, только есть пара проблемок... Что делает программа не читается вообще ни разу. Ресурсы минимум в два раза по flash и в 14 по ram завышены.
Немного оптимизировал класс мигающего светодиода и заменил отдельные кнопки на клавиатуру. Расход ram по байту на диод и три на клавиатуру.

Спойлер
Спойлер
Re: Как поместить цикл в case оператора switch
К большому сожалению, там огромная куча файлов, сильные междуусобные, но плохопрослеживаемые зависимости, дублирование действий, общая небрежность. Оформление кода понятно только лишь самому автору, потому что он так привык делать. Ни одного коммента в действительно необходимых местах, не говоря уже о Doxygen, но хотябы краткие пояснения назначения функций и файлов, как это принято делать у уважающих себя и других программистов. Неясно назначение файлов main.c и proba.c с одинаковыми именами ф-ций main(). Неясно, почему в proba.c есть участки "висящего" ничему не принадлежащего кода - сразу после ф-ции main, после закрытия скобки } следуют "оторванные" строки с if (Get_Event (EV_ID_KEY_PRESSED)) { } и if (handle_soft_timer (ST_PROC_DEVICE)) { } - это компилироваться не будет.
К большому сожалению, такой вариант подходит и понятен только лишь для его автора, но остальным людям он неинтересен по причине небрежности оформления и спорности некоторых моментов исполнения. А жаль.
Ну и касательно сброса счета вачдога. Считается, что безусловный его сброс (перезапуск) в начале цикла не является хорошей практикой. Наиболее продвинутые программисты вачдогом защищают те участки кода, в которых возможно зацикливание программы из-за ожидания внешних условий. А перед сбросом вачдога проверяют, что требуемые условия сброса выполнены. То есть, вачдог используется не просто как какая-то условная штука "чтоба была", а именно как предохранитель от неверного поведения программы. Но это уже так... мелочи в данном случае
К большому сожалению, такой вариант подходит и понятен только лишь для его автора, но остальным людям он неинтересен по причине небрежности оформления и спорности некоторых моментов исполнения. А жаль.
Ну и касательно сброса счета вачдога. Считается, что безусловный его сброс (перезапуск) в начале цикла не является хорошей практикой. Наиболее продвинутые программисты вачдогом защищают те участки кода, в которых возможно зацикливание программы из-за ожидания внешних условий. А перед сбросом вачдога проверяют, что требуемые условия сброса выполнены. То есть, вачдог используется не просто как какая-то условная штука "чтоба была", а именно как предохранитель от неверного поведения программы. Но это уже так... мелочи в данном случае
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Как поместить цикл в case оператора switch
Если затронута якобы честь "настоящего и продвинутого программиста".
Назначение watchdog? Применение этого инструмента? На какое время он настроен в моем проекте? Следующий вопрос. Покажите мне хоть один участок кода, где теоретически выполнение кода может выполняться дольше, чем настройка watchdog.
Если вы работали в команде разработчиков МК AVR, я с удовольствием вас выслушаю. Потому что только в этом случае я услышу полезную и ценную для меня информацию.
Не увидел в названиях раздела и темы "конкурс на звание лучшего и продвинутого программиста-затейника"... Уж прастыте.
Назначение watchdog? Применение этого инструмента? На какое время он настроен в моем проекте? Следующий вопрос. Покажите мне хоть один участок кода, где теоретически выполнение кода может выполняться дольше, чем настройка watchdog.
Если вы работали в команде разработчиков МК AVR, я с удовольствием вас выслушаю. Потому что только в этом случае я услышу полезную и ценную для меня информацию.
Не увидел в названиях раздела и темы "конкурс на звание лучшего и продвинутого программиста-затейника"... Уж прастыте.
Re: Как поместить цикл в case оператора switch
Тогда зачем вообще нужен такой бесполезный вачдог, если даже теоретически он никогда не переполнится из-за зацикливания кода где-то там в недрах и переплетения функций? Остановка кварца - не в счет.
Да, это распространенное заблуждение о вачдоге как таковом. И не важно, какой МК перед вами. Важно лишь то, что с вачдогом работают, не до конца понимая весь его смысл.
Да, это распространенное заблуждение о вачдоге как таковом. И не важно, какой МК перед вами. Важно лишь то, что с вачдогом работают, не до конца понимая весь его смысл.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Как поместить цикл в case оператора switch
Если что-то где-то зациклится, то выполнение главного цикла прекратится и собака сработает.
ЗЫ: Только собака то не от ошибок в программе.
ЗЫ: Только собака то не от ошибок в программе.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Как поместить цикл в case оператора switch
VladislavS.
1 - предметно. В чем именно не читается. Смотрим объективно. Названия функций внятны, названия переменных внятны. Определения внятны. Проект разделен на логические блоки. Внутри логических блоков в свою очередь тоже логические блоки. Что не так?
2 - ТЗ ТС: Первая кнопка. Первый выход вкл-выкл. Вторая кнопка. Второй выход. Мигалка. Третья кнопка. Третий выход. Генератор 60 гц.
У вас три мигалки. Кстати, могли бы архивы своих примеров выкладывать.
1 - предметно. В чем именно не читается. Смотрим объективно. Названия функций внятны, названия переменных внятны. Определения внятны. Проект разделен на логические блоки. Внутри логических блоков в свою очередь тоже логические блоки. Что не так?
2 - ТЗ ТС: Первая кнопка. Первый выход вкл-выкл. Вторая кнопка. Второй выход. Мигалка. Третья кнопка. Третий выход. Генератор 60 гц.
У вас три мигалки. Кстати, могли бы архивы своих примеров выкладывать.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Как поместить цикл в case оператора switch
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]1 - предметно. В чем именно не читается.[/uquote]Ну то и значит, что открываю код и не вижу что он делает.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]2 - ТЗ ТС:[/uquote]ТЗ ТС так же чётко написано как его код
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]Первый выход вкл-выкл. Вторая кнопка. Второй выход. Мигалка. Третья кнопка. Третий выход. Генератор 60 гц.[/uquote]Заменить первый диод на немигающий - несколько строк кода. Мигалка от 60 Гц отличается только делителем. Для примера вообще непринципиальна частота - с мигающим разной частотой диодом нагляднее.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]У вас три мигалки.[/uquote]Да легко. См 42, 47 и 52 строки. Просто используем обычный диод вместо мигающего.
В таком варианте разгром по ресурсам вообще неприличный.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]Кстати, могли бы архивы своих примеров выкладывать.[/uquote]
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]2 - ТЗ ТС:[/uquote]ТЗ ТС так же чётко написано как его код
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]Первый выход вкл-выкл. Вторая кнопка. Второй выход. Мигалка. Третья кнопка. Третий выход. Генератор 60 гц.[/uquote]Заменить первый диод на немигающий - несколько строк кода. Мигалка от 60 Гц отличается только делителем. Для примера вообще непринципиальна частота - с мигающим разной частотой диодом нагляднее.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]У вас три мигалки.[/uquote]Да легко. См 42, 47 и 52 строки. Просто используем обычный диод вместо мигающего.
Спойлер
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305873#p4305873"]Кстати, могли бы архивы своих примеров выкладывать.[/uquote]
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Как поместить цикл в case оператора switch
Первое. Техническое задание топикстартера. Первый выход. Вкл-выкл. Второй выход. Мигалка. Третий выход. Генератор 60 гц. Где соответствие в вашем примере?
Разгром не разгром. Не суть. Требования к проекту. К камню. Если у меня нет задачи вылизывать, чтобы сэкономить пару байтов flash либо SRAM, я не буду тратить свое время. Напишу проект в лоб.
Кстати, подсмотрел пример у MLX90640. Так как работает только какой-нибудь один режим, объединение трёх светодиодов в одну функцию имеет смысл. Действия однотипные, работает только какой то один режим.
Структура программных таймеров в моем примере.
Status - Таймер активен-неактивен. Bool. 1 байт.
sys_tick_prev - при установке таймера считывается текущее значение счётчика, который считает временные интервалы в прерывании. Аппаратный таймер настраивается на системный тик. В данном примере это 1 мс. 1 байт.
cnt - Задаваемое время таймера. Если системный 1 мс, значит дискретность 1 мс. Максимальное время 65535 мс.
Итого, каждый программный таймер это 4 байта, в случае без периода, 6 байтов в случае наличия элемента period.
Алгоритм. Обработчик программного таймера работает в основном цикле. Если Status, считывается текущее значение счётчика, который тикает в прерывании, сравнивается с sys_tick_prev. Если значение изменилось, значит, как минимум 1 мс прошла. Декремент cnt. Если нуль, время вышло. Если есть элемент period, это значение, если не нуль, записывается в cnt. Таймер выдает признак, что время вышло и если есть элемент period считает заново.
Так как обработчик программных таймеров работают в основном цикле, это означает, что выполнение основного цикла должно выполняться с запасом за системный тик. В данном случае это 1 мс.
По поводу якобы перерасхода. Когда у меня нет острой необходимости экономить память, я использую эти программные таймеры как есть. Мне не нужно париться, ужиматься. Я беру и использую эти программные таймеры. Пусть у нас три светодиода, значит это три программных таймера. Да, это займет 4 или 6 (если есть элемент period) байтов на каждый таймер. Плюс переменная состояние мигалки. Зато эти 3 мигалки работают независимо.
Разгром не разгром. Не суть. Требования к проекту. К камню. Если у меня нет задачи вылизывать, чтобы сэкономить пару байтов flash либо SRAM, я не буду тратить свое время. Напишу проект в лоб.
Кстати, подсмотрел пример у MLX90640. Так как работает только какой-нибудь один режим, объединение трёх светодиодов в одну функцию имеет смысл. Действия однотипные, работает только какой то один режим.
Структура программных таймеров в моем примере.
Код: Выделить всё
typedef struct soft_timer
{
bool status;
u08 sys_tick_prev;
u16 cnt; // Counter.
#ifdef __ST_PERIOD__
u16 period; // Period.
#endif
} soft_timer_t;sys_tick_prev - при установке таймера считывается текущее значение счётчика, который считает временные интервалы в прерывании. Аппаратный таймер настраивается на системный тик. В данном примере это 1 мс. 1 байт.
cnt - Задаваемое время таймера. Если системный 1 мс, значит дискретность 1 мс. Максимальное время 65535 мс.
Итого, каждый программный таймер это 4 байта, в случае без периода, 6 байтов в случае наличия элемента period.
Алгоритм. Обработчик программного таймера работает в основном цикле. Если Status, считывается текущее значение счётчика, который тикает в прерывании, сравнивается с sys_tick_prev. Если значение изменилось, значит, как минимум 1 мс прошла. Декремент cnt. Если нуль, время вышло. Если есть элемент period, это значение, если не нуль, записывается в cnt. Таймер выдает признак, что время вышло и если есть элемент period считает заново.
Так как обработчик программных таймеров работают в основном цикле, это означает, что выполнение основного цикла должно выполняться с запасом за системный тик. В данном случае это 1 мс.
По поводу якобы перерасхода. Когда у меня нет острой необходимости экономить память, я использую эти программные таймеры как есть. Мне не нужно париться, ужиматься. Я беру и использую эти программные таймеры. Пусть у нас три светодиода, значит это три программных таймера. Да, это займет 4 или 6 (если есть элемент period) байтов на каждый таймер. Плюс переменная состояние мигалки. Зато эти 3 мигалки работают независимо.
Последний раз редактировалось Demiurg Пн окт 17, 2022 10:53:34, всего редактировалось 3 раза.
Re: Как поместить цикл в case оператора switch
[uquote="MLX90640",url="/forum/viewtopic.php?p=4305650#p4305650"]...
Ну и касательно сброса счета вачдога. Считается, что безусловный его сброс (перезапуск) в начале цикла не является хорошей практикой....[/uquote]
Собака в МК выполняет функционал защиты от отказа главного тактового генератора, заищиты МК от сбоев при воздействии внешних помех и лишь затем от "сбоев по ошибке автора программы" - ("сбоев при "зацикливании" программы")...

Собственно ежли программа при отсутствии внешних помех и ошибок в схемотехнике устройства требует еще и аппаратной защиты от ошибок программного кода - это уже не программа, а БАГ/ВИРУС от автора такого "шедевра".

Ну и касательно сброса счета вачдога. Считается, что безусловный его сброс (перезапуск) в начале цикла не является хорошей практикой....[/uquote]
Собака в МК выполняет функционал защиты от отказа главного тактового генератора, заищиты МК от сбоев при воздействии внешних помех и лишь затем от "сбоев по ошибке автора программы" - ("сбоев при "зацикливании" программы")...
Собственно ежли программа при отсутствии внешних помех и ошибок в схемотехнике устройства требует еще и аппаратной защиты от ошибок программного кода - это уже не программа, а БАГ/ВИРУС от автора такого "шедевра".
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Как поместить цикл в case оператора switch
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305894#p4305894"]Где соответствие в вашем примере?[/uquote]Соответствие с точностью до частоты 60 Гц. Кто-то мешает поставить константу делителя на 60 Гц?
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305894#p4305894"]Если у меня нет задачи вылизывать, чтобы сэкономить пару байтов flash либо SRAM, я не буду тратить свое время. Напишу проект в лоб.[/uquote]Не пару байт, а 4 байта SRAM и 84 это в 21 раз. По FLASH тоже больше двух раз.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305894#p4305894"]Так как работает только какой-нибудь один режим, объединение трёх светодиодов в одну функцию имеет смысл.[/uquote]Всех трёх не имеет, они поразному управляются. Немугающий включается/выключается просто статическими методами. Это компилируется в простейшие команды cbi/sbi. Там нечего экономить. Оставшиеся два мигающих, скорее всего, тоже не имеет смысла объединять. Логика по выбору с каким диодом работать будет сложнее логики мигалки.
А вот замена трёх отдельных кнопок на клавиатуру реально дала экономию. Опять же, у меня в библиотеке есть класс клавиатуры и замена заняла 5 минут. Если бы не было, то вопрос "время <-> ресурсы".
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305894#p4305894"]Если у меня нет задачи вылизывать, чтобы сэкономить пару байтов flash либо SRAM, я не буду тратить свое время. Напишу проект в лоб.[/uquote]Не пару байт, а 4 байта SRAM и 84 это в 21 раз. По FLASH тоже больше двух раз.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4305894#p4305894"]Так как работает только какой-нибудь один режим, объединение трёх светодиодов в одну функцию имеет смысл.[/uquote]Всех трёх не имеет, они поразному управляются. Немугающий включается/выключается просто статическими методами. Это компилируется в простейшие команды cbi/sbi. Там нечего экономить. Оставшиеся два мигающих, скорее всего, тоже не имеет смысла объединять. Логика по выбору с каким диодом работать будет сложнее логики мигалки.
А вот замена трёх отдельных кнопок на клавиатуру реально дала экономию. Опять же, у меня в библиотеке есть класс клавиатуры и замена заняла 5 минут. Если бы не было, то вопрос "время <-> ресурсы".
Re: Как поместить цикл в case оператора switch
[uquote="Demiurg",url="/forum/viewtopic.php?p=4301583#p4301583"]
.[/uquote]
а помоему вы зря ругаетесь. это прикольная штука инициализация автоматом. я бы попробовал так.
Код: Выделить всё
case 0: // Init IO
io_init ();
all_outs_off ();
_proc_device = 1;
break;а помоему вы зря ругаетесь. это прикольная штука инициализация автоматом. я бы попробовал так.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Как поместить цикл в case оператора switch
Надо не пробовать, а делать. Делать инициализацию в нулевом состоянии автомата вполне себе нормальная и обычная практика.


