Пост N: 1146
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
3
Отправлено: 27.04.09 18:53. Заголовок: Генератор задержек для ПИК
Примерно полтора года назад, здесь была просьба сделать программу, аналогичную программе "Pause" Николая Марова, но которая должна формировать задержку исходя из данных о частоте генератора контроллера и длительности задержки. Тогда это не получилось сделать и пришлось ограничится калькулятором, который высчитывал число машинных циклов исходя из данных о чатоте генератора и длительности задержки.
Буквально пару дней назад Игорь Батов подкинул мне идею как это можно сделать. После нескольких экспериментов стало понятно что направление правильное и надо "копать" именно в эту сторону. В результате, через пару часов всё получилось (кажется), по крайней мере я не смог найти ошибок в преобразовании. Но непомешает дополнительная проверка. Выкладываю заготовку программы, её надо протестировать http://www.filehoster.ru/files/cq1114 Сейчас она работает только с машинными циклами - так проще её отлаживать. Кагда станет ясно что программа работает стабильно и ошибок в преобразовании нет, тогда соединю её с калькулятором.
Пост N: 788
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 05.07.09 22:21. Заголовок: Вывел все таки форму..
Вывел все таки формулу, правда для подпрограммы с одним регистром, формула одна, для 2 другая и т.д. Пока только дошел до 3 времязадающих регистров и отправил статейку в обмен. Думаю с большим количеством регистров проблем уже не возникнет, только формула будет больше.
Алексей, проверь внимательно как ведёт себя программа, когда введенно такое число машинных циклов, при котором происходит перехд с одного регистра на другой и в особености ситуации, когда, скажем 2-ух регистов мало, а 3 уже много. В этом случае нужно использовать 2 регистра, а в конец программы добавлять NOPы. Вот над этим мне пришлось немного подумать!
Да и при вводе инструции clrwdt формула немного изменится.
PS. Я тоже много раз думал что наконец-то вывел правильную форулу, но как начинал тестировать с разным числом машинных циклов...
Пост N: 790
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 06.07.09 10:08. Заголовок: Пётр , хотел попробо..
Пётр , хотел попробовать переделать программу для расчета задержек, но у меня не компилируется даже неизмененный исходник. Версия 4.2. Выдает ошибку линкера... Если вдруг сам решишь переделать программу, то скину формулы. Они кстати должны подойти и для старой подпрограммы, только константы нужно подобрать другие, принцип тот же, только команды используются из старшего семейства...
Пост N: 791
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 06.07.09 10:31. Заголовок: Пётр пишет: Алексей..
Пётр пишет:
цитата:
Алексей, проверь внимательно как ведёт себя программа,
Дело в том, что переделать программу не могу, не компилируется, а бейсик знаю только поверхностно... Пётр пишет:
цитата:
Я тоже много раз думал что наконец-то вывел правильную форулу
Сделал расчет в Экселе, но сам понимаешь, он не сможет выдавать текст задержки, но вот погонял в симуляторе на десятке другом контрольных точек в том числе и на переходах, все нормально. Оказалось что здесь переходы пересекаются. Т.е. например с помощью одного регистра можно получить задержку от 4 до 766 м.ц. . Для двух регистров этот диапазон от 12 до 261124 м.ц. Во всем диапазоне подпрограмма ведет себя в точности, как расчетная задержка. Правда с нулевыми регистрами проблема, но в программе это легко будет исправить, т.к. ноль в последнем регистре нужно заменить на число 256 и тогда расчет получается верным. Эксель этого не умеет или я не умею в нем так делать. Я вот только не знаю, получится ли алгоритм более быстрым, ведь там формула уже с двумя и более неизвестными, а чтобы решить такие уравнения нужно формул, минимум равное количеству переменных. Остается только подбирать... Хотя можно, зная вес одного регистра сразу примерно вычислить значения регистров, а затем точно ее подогнать. Со сбросом собаки пока ничего не делал... Хотя тут нужно просто уменьшить задержку и прибавить необходимую константу.
Пост N: 1232
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
4
Отправлено: 06.07.09 10:42. Заголовок: Алексей пишет: Дело..
Алексей пишет:
цитата:
Дело в том, что переделать программу не могу, не компилируется
Выложи скроншот окна с сообщением об ошибке и если при это одна из строк кода окрашивается в красный или жёлтый цвет и слева строки появляется красный кружок или жёлтый восклицательный знак, то сделай скрин и этого участка кода.
Лучше скачай PB4.31 и всё будет нормально. Как я уже писал PB4.20 сильно глючит.
Пост N: 811
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 11.07.09 10:50. Заголовок: Пётр , насколько пон..
Пётр , насколько понял, у тебя в программе используется до 10 регистров, а почему в программе ты вычисляешь значения от 8 до 2? Где 9 и 10, с первым все ясно.
Пост N: 3
Зарегистрирован: 30.12.07
Откуда: Россия, Самара
Рейтинг:
0
Отправлено: 24.07.09 15:43. Заголовок: большие задержки
Всем здравствуйте. Заранее прошу прошения если не совсем в тему, но такой вопрос. По поводу длительных задержек сутки двое и более, возможно ли прямо использовать код который генерирует программа Петра или программа Николая или же желательно организовать допустим запись в ЕЕPROM неких промежуточных значений. Я сделал одно не сложное устройство для полива. В субботу после обеда запускаю его приблизительно в 15 часов и далее во вторник вечером приблизительно в 22 ч оно должно сработать и открыть кран для полива. Таким образом задержка около 79 часов. В программе я просто не особенно заботясь использовал код который генерирует программа Петра. Но как говорится терзают смутные сомнения. Один раз устройсто у меня не сработало. Поэтому хотелось бы узнать, а как правильно организовывать такие длительные задержки? Наверника кто то сталкивался с подобной задачей т.е. как надежно организовать большую задержку? посоветуйте что-нибудь. Заранее благодарен
Отправлено: 24.07.09 19:25. Заголовок: Удобно использовать ..
Удобно использовать для этих целей встроенный таймер с прерыванием. Один такой мой агрегат работает непрерывно уже два года. Идея простая. Например если использовать динамическую индикацию, то прерывание таймера можно организовать через 5мс. Это будет один временной эталон. 5х200 - 1 сек и т.к. далее. Задержка включения устройства и время работы конечно не будет привязано к реальному времени. Но при данных условиях это не сильно и нужно. Зачем такая точность? Включил, отработало полчаса, потом выбранная фиксированная задержка, те же 72 часа, (хоть 1000 часов) и опять работа. На индикаторе будет производится отсчет задержки или работы. Удобно, все видно в каком состояние устройство. И можно всегда изменить выбранные режимы. Я думаю проще, надежно.
Пост N: 1436
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
4
Награды:
Отправлено: 24.07.09 21:07. Заголовок: MAZ пишет: Удобно и..
MAZ пишет:
цитата:
Удобно использовать для этих целей встроенный таймер с прерыванием.
а если за час до включения полива питание на пятнадцать минут отключится? Весь отсчет с нуля пойдет. А с часами реального времени такого не будет. Можно делать бит в EEPROM по которому будет видно был полив или нет. Даже если наступит время полива а питания не будет, то после возобновления питания всё сработает, пусть и со сдвигом во времени. Я к часам реального времени склоняюсь.
Отправлено: 24.07.09 22:05. Заголовок: Alberto пишет: а ес..
Alberto пишет:
цитата:
а если за час до включения полива питание на пятнадцать минут отключится?
Если отключится питание, кто и чем будет поливать? В таких случаях применяется резервное питание, оно есть и у микросхемы реального времени. Счет будет продолжен. Останавливать счет не нужно. И анализировать флаг полива в энергонезависимой памяти, тоже не есть хорошо. При аварии питания может не быть и 6 часов. И включится полив при восходе солнца, а к обеду оно же спалит политые растения. Дело не в МРВ, а нужно для четкого работы данной системы резервное питание, при любом отсчете. А с МРВ все просто сложней. Кажется человек просил надежные и длительные временные отсчеты, что попроще. Если ему нужна привязка к реальному времени, а еще можно и к времени года , то тогда спора нет. Но задача очень проста.
Пост N: 1437
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
4
Награды:
Отправлено: 25.07.09 05:25. Заголовок: Ты не понял принцип...
Ты не понял принцип. Не надо никакого резервного питания. Пропало питание на пол-часа при этом по времени уже десять минут как поливать должно было, всего-то и делов, полив прошёл на десять минут позже, так как время полива уже наступило, но действие (полив) сделано небыло. Как команда на насос пошла так бит в EEPROM и изменился, т.е. это флаг свершившегося факта. Если в сутки питание пропадает на 22 часа, то спору нет, такая система работать не будет. Вместе с тем можно сделать гибкую логику работы, если питание пропало и опять появилось по прошествии десяти (к примеру) часов после ожидаемого начала полива, то полив не производится и т.д. Деталей на три рубля а выгод - куча. MAZ пишет:
цитата:
И анализировать флаг полива в энергонезависимой памяти, тоже не есть хорошо.
это почему "не есть хорошо"?
цитата:
Дело не в МРВ, а нужно для четкого работы данной системы резервное питание, при любом отсчете. А с МРВ все просто сложней.
если у человека площадь для полива большая, то пальчиковым аккумулятором не отделаешься. И извини меня, что сложного в подключении DS1307? По любому проще дизель-генератора
Отправлено: 25.07.09 12:24. Заголовок: Альберто. Ты меня то..
Альберто. Ты меня тоже не понял. Но согласись много, "если". Если отключится свет на 10 минут на 3 часа или больше. Если отключат воду, тогда и дизель сойдет. Но это уже катаклизм, тогда будет не до полива. Открыть электромагнитом заслонку, аккумулятор 12В 3 А/ч два часа будет поливать без напряга и питать контроллер, и вода очень хорошо подасться в брызгалки и т.п. Я рассуждаю из практики. А сложней по тому, что, 84 один со всем этим справится. а тут еще одну микросхему лепить, причем использовать её возможности в лучшем случае на 50%.
Пост N: 1438
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
4
Награды:
Отправлено: 25.07.09 17:59. Заголовок: MAZ пишет: Ты меня ..
MAZ пишет:
цитата:
Ты меня тоже не понял
скорее всего да, я то исходил из того что для полива нужен насос, именно такие системы используют здесь на полях. Скважина и уже из нее мотор (или ветронасос) качает воду на полив. А для насоса аккумулятор на 12 В и пару ампер-часов не пойдет, да и зарядное устройство к нему... Но... согласись что система с часами RTC гибче и надежнее. Как я уже говорил деталей на трешку, а возможностей вагон. Но по любому решать автору вопроса.
Отправлено: 25.07.09 22:17. Заголовок: Alberto пишет: Но....
Alberto пишет:
цитата:
Но... согласись что система с часами RTC гибче и надежнее.
Соглашаюсь, насчет гибче. Надежность практически равны. Alberto пишет:
цитата:
Как я уже говорил деталей на трешку, а возможностей вагон.
Где живет человек? В России и раз огород поливает, то не в столице. Достать часовую микросхему, очень возможно, проблематично. Срава богу пик нашел, и то счастье. Вспомнилаь поговорка "а зачем козе баян?" Работает и надежно поливает. Ну наверно отвлеклись от основной темы.
Пост N: 1254
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
4
Отправлено: 27.07.09 18:55. Заголовок: В алгоритме программ..
В алгоритме программы PIC_Delay найдена ошибка. Попробуйте введите число 394255 в неё и в программу Николая и всё поймёте. Ошибка происходит при переходе с одного регистра на другой... В ближайшее время постараюсь исправить.
Пост N: 78
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг:
0
Отправлено: 19.03.10 13:09. Заголовок: Поздно прочитал, но ..
Поздно прочитал, но 2 слова скажу. никто об этом кажется не сказал. Как правило задержку оформляю подпрограммой, потому что использовать прниходиться не в одном месте, да и удобно не засорять тело программы, а поэтому всегада задержку рассчитываю относительно рабочей точки основной программы с учетом обращения и возврата , т.е. + 4 машинных цикла. На мой взгляд это удобнее. Если такая задержка будет отрабатываться в основной программе добавить 4-е nop проще, чем корректировать предложенную программу.
Все даты в формате GMT
3 час. Хитов сегодня: 14
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет