На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.
На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.
state=LOW
while (1) { // бесконечный цикл опрса порта 11
if (digital(Read(11)!=state) { // если состояние порта отличается от состояния в предыдущем цикле опроса, то начинаем работать
state=digitalRead(11); // но прежде всего запомним текущее (измененное) состояние опрашиваемого порта
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
delay(СколькоТоТамМиллиИлиПростоСекунд);
digitalWrite(12,LOW);
delay(СколькоТоТамМиллиИлиПростоСекунд);
digitalWrite(13,LOW);
}
}
Это если попрошше. Себе я такого кода не поставил бы.
Получили порцию ответа в полном соответствии с изложенным вопросом.
Цитата:
на графике ясно что таймеры в разное время включаются! и выключаются!
"И чо?" (с)
Цитата:
delay - нельзя
Об этом вы изволили сообщить в своем третьем (или уже четвертом?) сообщении.
"Все гадалки в отпуске" (с)
Реплика Carduino.ru - "Правильно поставленный вопрос увеличивает шанс на правильный ответ." - приобретает невиданную доселе актуальность. Я бы дополнил ее еще одним словом - "резко".
Так что, пока нет практически никакой конкретной информации о том, что вам нужно, дам еще один совет:
"семафорьте" или изучайте управление таймерами.
А также читайте о мутексах, барьерах, условных переменных, ... Ну тут много вариантов.
step962 - не хотите помочь.. хвалитесь своей саркастической чушью в другом месте.
Тут есть люди которые умеют читать и могут помочь?
На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.
(12 включается на 8 секунд) (13 на 0,5 секунд) Первым срабатывает 12, а через 3 секунды 13.
2) Форум - это такое место, где я могу находиться без вашего на то разрешения.
Цитата:
Тут есть люди которые умеют читать и могут помочь?
Чтобы прочитать и помочь, необходимо иметь, что читать.
Что же вам надо, вы так и не объяснили. Например, пишете "на графике ясно что таймеры в разное время включаются! и выключаются!". А ясно ли из графика, в какое время таймеры включаются? С какой точностью требуется отсчитывать время? Как часто изменяется уровень сигнала на входе и что делать если этот уровень изменится во время генерации высокого уровня на выходах?
Тут еще много разных неясностей. А без прояснения этих непоняток дать оптимальный ответ НЕВОЗМОЖНО.
Слишком много вариантов. И вы таки не поверите - у участников этого форума время может стоить денег.
Цитата:
И ЖДУТ НОВОГО ФРОНТА.
Отлично реализуется с помощью delay(). Или все-таки не ЖДУТ НОВОГО ФРОНТА, а делают что-то еще? (естественно, имеется в виду микроконтроллер в целом).
Цитата:
Delay не должно быть как я уже понял.
Обоснуйте.
Те участники форума, от которых вы хотите получить помощь, этого еще не поняли.
Короче, будет нормальное ТЗ - будем посмотреть. Нет - продолжим отбирать конфетки у обиженного карапуза.
Цитата:
Тут есть люди которые {...] могут помочь?
Помогли уже два раза:
1) Помогли с "простым кодиком".
2) Указали, в каком направлении (в каких направлениях) можно копать в зависимости от того, что конкретно требуется.
Или вам, как Вовке из тридевятого царства, за вас еще и пальцы загибать надо?
"А ясно ли из графика, в какое время таймеры включаются?(включаются по фронту вх сигнала я писал) С какой точностью требуется отсчитывать время?(в милисекундах) Как часто изменяется уровень сигнала на входе и что делать если этот уровень изменится во время генерации высокого уровня на выходах?"(раз в день человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ) а через минут 20 ВЫКЛЮЧИТ) (Я писал что срабатывают таймеры по фронту соответственно логично было бы дать им закончить желательно два раза но не принципиально)Контроллер делает что то еще(Да возможно проэкте, а Делей будет подвешивать его)
Я так понимаю "Мигаем светодиодом без delay()" это мой случай нопока не разобрался в этом
раз в день человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ) а через минут 20 ВЫКЛЮЧИТ)
абсолютно не стыкуется. От того, что человеческий организм подойдет к выключателю на час раньше обычного или на тридцать секунд позже, видимо, ничего в поведении системы не изменится. Так зачем ловить миллисекунды?
Цитата:
Контроллер делает что то еще
Да возможно проэкте, а Делей будет подвешивать его
О помехах, которые создает такой нагруженной программе delay(), можно будет подумать, когда для мк появятся еще какие-нибудь дела, кроме слежения за одним входом. К этому моменту стоит подготовиться, погоняв и попробовав оптимизировать хоть какой-нибудь код, написанный собственноручно. В конце концов и то, что наваяно под титулом "мигаем светодиодами без dcelay()", тоже не верх программерского искусства.
Попробуте для начала чуть доработать предложенный мной код - так, чтобы он отрабатывал и задержку выдачи полусекундного импульса. Какая-никакая - а гимнастика для ума.
Кстати, все заинтересованные лица так и не узнали от вас, какова там задержка. И из приведенного графика это тоже не видно.
Это у вас что то не стыкуется,"там" и не только написано Any Time! По спаду импульса! Когда организм захочет тогда и будет спад импульса!
Этот контроллер уже управляет несколькими каналами там и так много ДЕЛЕЕВ.
Вы мне тут терады строчите, вам это помогает чувствовать себя богом? или ваше время не стоит денег как у остальных?или сами как и я кроме Делеев не знаете?) п.с вопрос риторический..
собсно, написать нечего. Избавиться от delay как уже говорили - в примере мигания. в начале "сеанса" запоминаем значение millis(), в цикле программы отнимаем запомненное от текущего millis(), таким образом выясняя сколько времени прошло с начала "сеанса". Если достаточно, то выполняем действия. Куда уж проще то? Или я что то не понимаю?
Этот контроллер уже управляет несколькими каналами там и так много ДЕЛЕЕВ.
Какое из этих утверждений не соответствует действительности?
И что нового о задаче мы еще узнаем из ваших дальнейших откровений?
Цитата:
Это у вас что то не стыкуется, "там" и не только написано Any Time!
Arduino IDE позволяет и в микросекундах время отмерять. Почему выбраны миллисекунды?
Что произойдет, если реакция произойдет не одновременно с изменением состояния на входе, а, предположим, на 1.35 миллисекунды позже? Или на 0.012?
Цитата:
произвольное время(тумблер)
человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ)
Сколько времени длится процесс переключения тумблера? Сколько кратковременных импульсов мы получим на входе? Как будем их отрабатывать - как изменения уровня входного сигнала или как недостойный внимания дребезг контактов?
Цитата:
или ваше время не стоит денег как у остальных?
Иногда хочется отдохнуть от зарабатывания денег. Разввлечься "отбиранием конфетки у обиженного карапуза". Или помочь кому-нибудь советом, информацией, примером кода - при условии, что задача поставлена достаточно четко и вызывает интерес.
Цитата:
или сами как и я кроме Делеев не знаете?
Несколько возможных вариантов решения проблемы уже называл:
""семафорьте" или изучайте управление таймерами.
А также читайте о мутексах, барьерах, условных переменных, ... Ну тут много вариантов."
whoim тоже вам один из простейших вариантов решения подсказал - ближе к условным переменным. Вполне возможно, что он вам подойдет - если все-таки не требуется точность до миллисекунды.
Давать более конкретные советы трудно, не зная, что же конкретно требуется. Я не о цвете тапочек у "человеческого организма". И не о том каким именно пальцем ВТОРОЙ РУКИ (инвалид?) он будет переключать тумблер. Я о взаимодействии между происходящими событиями и запускаемыми процессами. И об ограничениях, накладываемых на эти взаимодействия.
Есть много инструментов для решения того круга задач, к которому относится ваша. От тупого использования delay() - а от вас еще так и не последовало достаточно убедительного обоснования невозможности такого варианта в вашей конкретной задаче - до подключения механизма прерываний и таймеров. Пытаться с помощью перочинного ножа вырезать ял - бессмысленно. Доставать микроскоп, чтобы расколоть пару орехов - микроскоп жалко.
Так что - перечитайте еще раз реплику carduino.ru и сформулируйте задачу в соответствии с поставленными перед вами вопросами. А то ведь ничего пока не остается, кроме как "чувствовать себя богом".
Был некоторое время в Индонезии так вот по возвращению, сразу бросается в глаза кретинизм русских обиженых жизнью, таможенник вместо одного слова "проходите" развел скандал на пол часа, и так каждый второй.
А потом думаем почему мы такие тугие, так меньше ересь нести надо и чувствовать себя богами, оправдывая свою обеженность.
step962 - Спасибо за ответы, далее без вашей "помощи" думаю разберусь.
whoim - вот на сайте есть приверы (мигание обычное) (тактовая кнопка) (мигание без делалай) и было бы супер для начинающих (тактовая кнопка без делай) я бы тогда и не спрашивал и разобрался не отвлекая гениев от ихвысоких дел))
"Окей я понял, если с первого поста все не поняли то смысла объяснять уже нет"
Вовсе нет. Просто существует огромное количество вариантов как реализовать этот алгоритм: с использованием программных задержек или с помощью таймеров, с постоянным опросом кнопки или с помощью прерываний при изменении логического уровня на входе. Я могу написать вариантов 10 - 20 кода. Но лично у меня нет никакого желания писать десять вариантов одного и того же чтобы узнать какой именно устроит вас.
в вашем сообщении всего два вопроса, хоть я писал но всеже повторюсь "использованием программных задержек" - нет. "с постоянным опросом кнопки или с помощью прерываний" - не важно как, главное когда вход возвращается в low__ таймеры повторили тоже что при старте и успокоились. у вас от этого появится желание что нибуть написать?
..не понятно чем график зависимости не угодил, по моиму все удобочитаемо, ведь таблицу истинности для микросхемм стандартной логики тоже придумали для удобства - ну не суть..
я так понимаю как то через Millis?
извиняюсь за орфографию) клава глючила.
Правильно поставленный вопрос увеличивает шанс на правильный ответ
Я фото приложил вроде?
На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.
Я фото приложил вроде?
"И чо?" (c)
"Все гадалки в отпуске" (с)
На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.
Это если попрошше. Себе я такого кода не поставил бы.
Я нарисовал график! Вопрос изложил! что еще ?
на графике ясно что таймеры в разное время включаются! и выключаются!
delay - нельзя
Я нарисовал график! Вопрос изложил! что еще ?
Получили порцию ответа в полном соответствии с изложенным вопросом.
на графике ясно что таймеры в разное время включаются! и выключаются!
"И чо?" (с)
delay - нельзя
Об этом вы изволили сообщить в своем третьем (или уже четвертом?) сообщении.
"Все гадалки в отпуске" (с)
Реплика Carduino.ru - "Правильно поставленный вопрос увеличивает шанс на правильный ответ." - приобретает невиданную доселе актуальность. Я бы дополнил ее еще одним словом - "резко".
Так что, пока нет практически никакой конкретной информации о том, что вам нужно, дам еще один совет:
"семафорьте" или изучайте управление таймерами.
А также читайте о мутексах, барьерах, условных переменных, ... Ну тут много вариантов.
step962 - не хотите помочь.. хвалитесь своей саркастической чушью в другом месте.
Тут есть люди которые умеют читать и могут помочь?
На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.
(12 включается на 8 секунд) (13 на 0,5 секунд) Первым срабатывает 12, а через 3 секунды 13.
Delay не должно быть как я уже понял.
Видимо тут нужно добавлять к постам(положу 300 рэ на телефон)
step962 - не хотите помочь.. хвалитесь своей саркастической чушью в другом месте.
1) "Юпитер, ты сердишься, значит ты не прав" (с)
2) Форум - это такое место, где я могу находиться без вашего на то разрешения.
Тут есть люди которые умеют читать и могут помочь?
Чтобы прочитать и помочь, необходимо иметь, что читать.
Что же вам надо, вы так и не объяснили. Например, пишете "на графике ясно что таймеры в разное время включаются! и выключаются!". А ясно ли из графика, в какое время таймеры включаются? С какой точностью требуется отсчитывать время? Как часто изменяется уровень сигнала на входе и что делать если этот уровень изменится во время генерации высокого уровня на выходах?
Тут еще много разных неясностей. А без прояснения этих непоняток дать оптимальный ответ НЕВОЗМОЖНО.
Слишком много вариантов. И вы таки не поверите - у участников этого форума время может стоить денег.
И ЖДУТ НОВОГО ФРОНТА.
Отлично реализуется с помощью delay(). Или все-таки не ЖДУТ НОВОГО ФРОНТА, а делают что-то еще? (естественно, имеется в виду микроконтроллер в целом).
Delay не должно быть как я уже понял.
Обоснуйте.
Те участники форума, от которых вы хотите получить помощь, этого еще не поняли.
Короче, будет нормальное ТЗ - будем посмотреть. Нет - продолжим отбирать конфетки у обиженного карапуза.
Тут есть люди которые {...] могут помочь?
Помогли уже два раза:
1) Помогли с "простым кодиком".
2) Указали, в каком направлении (в каких направлениях) можно копать в зависимости от того, что конкретно требуется.
Или вам, как Вовке из тридевятого царства, за вас еще и пальцы загибать надо?
"А ясно ли из графика, в какое время таймеры включаются?(включаются по фронту вх сигнала я писал) С какой точностью требуется отсчитывать время?(в милисекундах) Как часто изменяется уровень сигнала на входе и что делать если этот уровень изменится во время генерации высокого уровня на выходах?"(раз в день человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ) а через минут 20 ВЫКЛЮЧИТ) (Я писал что срабатывают таймеры по фронту соответственно логично было бы дать им закончить желательно два раза но не принципиально)Контроллер делает что то еще(Да возможно проэкте, а Делей будет подвешивать его)
Я так понимаю "Мигаем светодиодом без delay()" это мой случай нопока не разобрался в этом
этой информации достаточно?
Это
С какой точностью требуется отсчитывать время?
в милисекундах
и это
Как часто изменяется уровень сигнала на входе
раз в день человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ) а через минут 20 ВЫКЛЮЧИТ)
абсолютно не стыкуется. От того, что человеческий организм подойдет к выключателю на час раньше обычного или на тридцать секунд позже, видимо, ничего в поведении системы не изменится. Так зачем ловить миллисекунды?
Контроллер делает что то еще
Да возможно проэкте, а Делей будет подвешивать его
О помехах, которые создает такой нагруженной программе delay(), можно будет подумать, когда для мк появятся еще какие-нибудь дела, кроме слежения за одним входом. К этому моменту стоит подготовиться, погоняв и попробовав оптимизировать хоть какой-нибудь код, написанный собственноручно. В конце концов и то, что наваяно под титулом "мигаем светодиодами без dcelay()", тоже не верх программерского искусства.
Попробуте для начала чуть доработать предложенный мной код - так, чтобы он отрабатывал и задержку выдачи полусекундного импульса. Какая-никакая - а гимнастика для ума.
Кстати, все заинтересованные лица так и не узнали от вас, какова там задержка. И из приведенного графика это тоже не видно.
Это у вас что то не стыкуется, "там" и не только написано Any Time! По спаду импульса! Когда организм захочет тогда и будет спад импульса!
Этот контроллер уже управляет несколькими каналами там и так много ДЕЛЕЕВ.
Вы мне тут терады строчите, вам это помогает чувствовать себя богом? или ваше время не стоит денег как у остальных?или сами как и я кроме Делеев не знаете?) п.с вопрос риторический..
собсно, написать нечего. Избавиться от delay как уже говорили - в примере мигания. в начале "сеанса" запоминаем значение millis(), в цикле программы отнимаем запомненное от текущего millis(), таким образом выясняя сколько времени прошло с начала "сеанса". Если достаточно, то выполняем действия. Куда уж проще то? Или я что то не понимаю?
раз в день человеческий организм подойдет ногами
Этот контроллер уже управляет несколькими каналами там и так много ДЕЛЕЕВ.
Какое из этих утверждений не соответствует действительности?
И что нового о задаче мы еще узнаем из ваших дальнейших откровений?
Это у вас что то не стыкуется, "там" и не только написано Any Time!
Arduino IDE позволяет и в микросекундах время отмерять. Почему выбраны миллисекунды?
Что произойдет, если реакция произойдет не одновременно с изменением состояния на входе, а, предположим, на 1.35 миллисекунды позже? Или на 0.012?
произвольное время(тумблер)
человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ)
Сколько времени длится процесс переключения тумблера? Сколько кратковременных импульсов мы получим на входе? Как будем их отрабатывать - как изменения уровня входного сигнала или как недостойный внимания дребезг контактов?
или ваше время не стоит денег как у остальных?
Иногда хочется отдохнуть от зарабатывания денег. Разввлечься "отбиранием конфетки у обиженного карапуза". Или помочь кому-нибудь советом, информацией, примером кода - при условии, что задача поставлена достаточно четко и вызывает интерес.
или сами как и я кроме Делеев не знаете?
Несколько возможных вариантов решения проблемы уже называл:
""семафорьте" или изучайте управление таймерами.
А также читайте о мутексах, барьерах, условных переменных, ... Ну тут много вариантов."
whoim тоже вам один из простейших вариантов решения подсказал - ближе к условным переменным. Вполне возможно, что он вам подойдет - если все-таки не требуется точность до миллисекунды.
Давать более конкретные советы трудно, не зная, что же конкретно требуется. Я не о цвете тапочек у "человеческого организма". И не о том каким именно пальцем ВТОРОЙ РУКИ (инвалид?) он будет переключать тумблер. Я о взаимодействии между происходящими событиями и запускаемыми процессами. И об ограничениях, накладываемых на эти взаимодействия.
Есть много инструментов для решения того круга задач, к которому относится ваша. От тупого использования delay() - а от вас еще так и не последовало достаточно убедительного обоснования невозможности такого варианта в вашей конкретной задаче - до подключения механизма прерываний и таймеров. Пытаться с помощью перочинного ножа вырезать ял - бессмысленно. Доставать микроскоп, чтобы расколоть пару орехов - микроскоп жалко.
Так что - перечитайте еще раз реплику carduino.ru и сформулируйте задачу в соответствии с поставленными перед вами вопросами. А то ведь ничего пока не остается, кроме как "чувствовать себя богом".
Был некоторое время в Индонезии так вот по возвращению, сразу бросается в глаза кретинизм русских обиженых жизнью, таможенник вместо одного слова "проходите" развел скандал на пол часа, и так каждый второй.
А потом думаем почему мы такие тугие, так меньше ересь нести надо и чувствовать себя богами, оправдывая свою обеженность.
step962 - Спасибо за ответы, далее без вашей "помощи" думаю разберусь.
whoim - вот на сайте есть приверы (мигание обычное) (тактовая кнопка) (мигание без делалай) и было бы супер для начинающих (тактовая кнопка без делай) я бы тогда и не спрашивал и разобрался не отвлекая гениев от ихвысоких дел))
давайте будем приветливей и терпимей друг другу.
В этой теме я писал прогу http://arduino.ru/forum/programmirovanie/svetofor
без единого delay моргает и работает одновременно;)
Alexander - Окей я понял, если с первого поста все не поняли то смысла объяснять уже нет, странно.. ну ладно)
Adessit - Спасибо буду разбираться)
"Окей я понял, если с первого поста все не поняли то смысла объяснять уже нет"
Вовсе нет. Просто существует огромное количество вариантов как реализовать этот алгоритм: с использованием программных задержек или с помощью таймеров, с постоянным опросом кнопки или с помощью прерываний при изменении логического уровня на входе. Я могу написать вариантов 10 - 20 кода. Но лично у меня нет никакого желания писать десять вариантов одного и того же чтобы узнать какой именно устроит вас.
"А-а-аналогично" (с)
Spaik
в вашем сообщении всего два вопроса, хоть я писал но всеже повторюсь "использованием программных задержек" - нет. "с постоянным опросом кнопки или с помощью прерываний" - не важно как, главное когда вход возвращается в low__ таймеры повторили тоже что при старте и успокоились. у вас от этого появится желание что нибуть написать?
..не понятно чем график зависимости не угодил, по моиму все удобочитаемо, ведь таблицу истинности для микросхемм стандартной логики тоже придумали для удобства - ну не суть..
Вот развели....
Автор, напиши что нибудь по своему разумению и выкладывай сюда с конкретными вопросами. Так будет проще всем.