Cчет импульсов
|
|
ADMIN |
Дата: Пн, 28.01.2008, 10:48 | Сообщение # 121 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
button отнимает много программного времени и кода. проще,имхо, использовать btfss или btfsc на асме
|
|
|
|
Yrok |
Дата: Пн, 28.01.2008, 10:57 | Сообщение # 122 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 27.09.2007
Статус:
Offline
|
Quote для того, чтобы компилятор отрабатывал прерывание без задержек попробуйте просто написать обработчик на асме(не сам обработчик, а метку): ---все это хорошо только если ты знаешь ассемблер))))--я занимался им очень давно и недолго))) Quote Заодно скажу, в протоне есть помимо on interrupt label, инструкция on_interrupt label, которая моментально переводит рабочую точку программы на обработчик label. Просто, для справки... --с протона начинал--но непомню точно почему ушел с него--толи инфы на него немог тогда найти толи еще что--щас остановился на microbasic--единственное что ненравиться в нем так это геморойность вывода на LCD --преобразовывать значение в строку--потом обрезать пустые символы--а в остальном все ок!!!))
|
|
|
|
DeveloperX |
Дата: Пн, 28.01.2008, 11:09 | Сообщение # 123 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
Yrok, basicpic, из последних постов понял, что не зная асма без потери драгоценных импульсов не получится сделать кнопку и монитор питания... а если раз в секнду (например после вывода на экран) проверять PORTA.0=0 и ставить соответствующий флаг? единственный минус - кнопку держать нужно мах 1 секунду на всякий пожарный... и в случае с падением напряжения тот же минус - пик узнает, что отключили внешнее питание мах через 1 сек! сколько по времени будет выполняться код? Code if PORTA.0=0 then btn=1 endif не сильно ли он повлияет на подсчет импульсов? и какой нужен кондер, чтобы от него пик проработал несколько секунд пока узнает, что питание ушло и запишет переменные в ЕЕПРОМ?
|
|
|
|
Yrok |
Дата: Пн, 28.01.2008, 11:25 | Сообщение # 124 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 27.09.2007
Статус:
Offline
|
DeveloperX, --в твоем случае этот код никак неповлияет на подсчет импульсов--потому как самую большую погрешность вводят операторы вывода на LCD движешься в верном направлении --только незабудь сконфигурить порт А как вход))
|
|
|
|
evgenb |
Дата: Пн, 28.01.2008, 11:39 | Сообщение # 125 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
basicpic, Максим, если я правильно понял, эта команда предоставляет приоритет только в среде бейсика между двумя событиями. ON_INTERRUPT GOTO TMR1_ISR ' Point to the HIGH priority interrupt subroutine ON_LOW_INTERRUPT GOTO TMR3_ISR ' Point to the LOW priority interrupt subroutine Прочитав пояснение к прерыванию на ФОТОНЕ там указываются теже болячки. Конкретно ON_LOW_INTERRUPT не выделен по условиям. Или я что то не усмотрел. DeveloperX, а конкретно под picbasic что-нибудь подсказать можете? Если есть необходимость могу выложить коллекцию разных подпрограмм накопившихся на винте. Они с буржуинских сайтов, но для обучения и примеров годятся.
Сообщение отредактировал
evgenb - Пн, 28.01.2008, 11:42
|
|
|
|
DeveloperX |
Дата: Пн, 28.01.2008, 11:46 | Сообщение # 126 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
Quote (evgenb) Если есть необходимость могу выложить коллекцию разных подпрограмм накопившихся на винте. Они с буржуинских сайтов, но для обучения и примеров годятся. да Yrok, вроде всё сделал как учил Чак Х., но не ловит пик нажатие/удержание кнопки, отключение питания. и если в цепь питания внедрить кондер, то пик не заводится... вот проект http://slil.ru/25408189 а можно ли одной командой LCDOUT вывести на 2 строки? это сэкономит время? помогите
Сообщение отредактировал
DeveloperX - Пн, 28.01.2008, 11:50
|
|
|
|
evgenb |
Дата: Пн, 28.01.2008, 11:59 | Сообщение # 127 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
DeveloperX, http://slil.ru/25408244 Принимай, за примитивный машинный перевод не обессудь. Но позволяет побыстрей сориентироватся.
|
|
|
|
DeveloperX |
Дата: Пн, 28.01.2008, 13:06 | Сообщение # 128 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
evgenb, Yrok, вывод на экран сделал одной командой. выводит теперь быстрее! по поводу кнопок, питания, конденсатора вопрос в силе. ничего не выходит...
Сообщение отредактировал
DeveloperX - Пн, 28.01.2008, 13:08
|
|
|
|
ADMIN |
Дата: Пн, 28.01.2008, 13:12 | Сообщение # 129 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Quote ON_INTERRUPT GOTO TMR1_ISR ' Point to the HIGH priority interrupt subroutine ON_LOW_INTERRUPT GOTO TMR3_ISR ' Point to the LOW priority interrupt subroutine здесь поясняется именно по лоу_интеррупт, то есть, когда есть вероятность возникновения одновременно двух прерываний, эта директива устанавливает приоритет выполнения( в основном, для 18 и выше серии) Quote When ON INTERRUPT is used, the compiler simply flags that the interrupt has happened and immediately goes back to what it was doing before it was rudely interrupted. Unlike a hardware interrupt, the code does not immediately jump to the interrupt handler. And since the compiler's commands are non re-entrant, there could be a considerable delay before the interrupt is actually handled. For example, if the program has just started to execute a DelayMS 2000 command when an interrupt occurs, the compiler will flag the interrupt and continue with the delay. It could be as much as 2 seconds later before the interrupt handler is executed. Any time critical routines dependant on the interrupt occurring regularly will be ruined. For example, multiplexing seven segment display. Здесь приводится пример, что если выполняется команда delayms 2000, и вдруг происходит прерывание( on interrupt), то просто выставляется флаг прерывания и программа продолжается( то есть также delayms 2000 продолжится). После окончания, программа перепрыгнет на обработчик. ON_INTERRUPT - аппаратное прерывание, которое выполнит переход на обработчик в любом случае(если разрешено прерывание, естественно). Вот так вот...
|
|
|
|
DeveloperX |
Дата: Пн, 28.01.2008, 13:17 | Сообщение # 130 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
Quote (basicpic) Вот так вот... мне это может как-нибудь помочь?
|
|
|
|
ADMIN |
Дата: Пн, 28.01.2008, 13:19 | Сообщение # 131 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Quote --все это хорошо только если ты знаешь ассемблер))))--я занимался им очень давно и недолго))) я вообще им не занимался, но немного встрял, что к чему.
|
|
|
|
ADMIN |
Дата: Пн, 28.01.2008, 13:21 | Сообщение # 132 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
DeveloperX, давай заново проект, исправленный, смотреть будем. И подробней, что именно не получается
|
|
|
|
DeveloperX |
Дата: Пн, 28.01.2008, 13:22 | Сообщение # 133 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
basicpic, http://slil.ru/25408555 по поводу кнопок, питания, конденсатора вопрос в силе. ничего не выходит... - по нажатию кнопки должен обнуляться суточный счетчик - при размыкании кнопки на питании, пик должен забыть о прерываниях и сохранить переменные (10 штук) в еепром. - с кондером работать не хочет, не знаю как его надо поставить...
Сообщение отредактировал
DeveloperX - Пн, 28.01.2008, 13:51
|
|
|
|
ADMIN |
Дата: Пн, 28.01.2008, 13:53 | Сообщение # 134 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
по поводу порта а сразу могу сказать: не отключен компаратор( вот так он отключается cmcon=7). Во-вторых, зачем подключен порта 2. В-третьих, давай, чтобы не путаться в дебрях, ты опишешь, что означает каждая переменная. Честное слово, в глазах рябит от bbbb и 1111. В-четвертых, зачем в lcdout из нескольких слов составляется одно слово. Пойми, в этой команде, чем меньше букв, тем она быстрее. В-пятых, на какой общий пробег ты рассчитываешь? Я не понимаю вот это: b1 var word ' импульсы b11 var word ' десятки км b111 var word ' сотни км b1111 var word ' тыс. км b11111 var word ' десятки тыс. км b111111 var word ' сотни тыс. км когда в два слова можно уместить весь пробег. Ответь на эти вопросы, пожалуйста, многое должно проясниться
|
|
|
|
ADMIN |
Дата: Пн, 28.01.2008, 14:02 | Сообщение # 135 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Quote по поводу кнопок, питания, конденсатора вопрос в силе. ничего не выходит... - по нажатию кнопки должен обнуляться суточный счетчик - при размыкании кнопки на питании, пик должен забыть о прерываниях и сохранить переменные (10 штук) в еепром. - с кондером работать не хочет, не знаю как его надо поставить... Куда ставишь кондер и как? ты в протеусе этот кондер выкинь, там другие есть - там в библиотеке есть тоже CAPASITOR, только с индексом ACTIVE, поищи.
|
|
|
|