Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Cчет импульсов
ADMIN Дата: Пн, 28.01.2008, 10:48  |                                                                                                                Сообщение # 121
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

button отнимает много программного времени и кода. проще,имхо, использовать btfss или btfsc на асме
ЯНДЕКС Дата: 28.01.2008
Yrok Дата: Пн, 28.01.2008, 10:57  |                                                                                                                Сообщение # 122
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Quote
для того, чтобы компилятор отрабатывал прерывание без задержек попробуйте просто написать обработчик на асме(не сам обработчик, а метку):
---все это хорошо только если ты знаешь ассемблер))))--я занимался им очень давно и недолго)))

Quote
Заодно скажу, в протоне есть помимо on interrupt label, инструкция on_interrupt label, которая моментально переводит рабочую точку программы на обработчик label. Просто, для справки...
--с протона начинал--но непомню точно почему ушел с него--толи инфы на него немог тогда найти толи еще что--щас остановился на microbasic--единственное что ненравиться в нем так это геморойность вывода на LCD --преобразовывать значение в строку--потом обрезать пустые символы--а в остальном все ок!!!))
DeveloperX Дата: Пн, 28.01.2008, 11:09  |                                                                                                                Сообщение # 123
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

DeveloperX, --в твоем случае этот код никак неповлияет на подсчет импульсов--потому как самую большую погрешность вводят операторы вывода на LCD
движешься в верном направлении --только незабудь сконфигурить порт А как вход))
evgenb Дата: Пн, 28.01.2008, 11:39  |                                                                                                                Сообщение # 125
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 3   ±
Замечания:   ±
На сайте с 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
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

DeveloperX,
http://slil.ru/25408244
Принимай, за примитивный машинный перевод не обессудь.
Но позволяет побыстрей сориентироватся.
DeveloperX Дата: Пн, 28.01.2008, 13:06  |                                                                                                                Сообщение # 128
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

evgenb, Yrok, вывод на экран сделал одной командой. выводит теперь быстрее!

по поводу кнопок, питания, конденсатора вопрос в силе. ничего не выходит...

Сообщение отредактировал DeveloperX - Пн, 28.01.2008, 13:08
ADMIN Дата: Пн, 28.01.2008, 13:12  |                                                                                                                Сообщение # 129
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Quote (basicpic)
Вот так вот...

мне это может как-нибудь помочь?
ADMIN Дата: Пн, 28.01.2008, 13:19  |                                                                                                                Сообщение # 131
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote
--все это хорошо только если ты знаешь ассемблер))))--я занимался им очень давно и недолго)))

я вообще им не занимался, но немного встрял, что к чему. dry

ЯНДЕКС Дата: 28.01.2008
ADMIN Дата: Пн, 28.01.2008, 13:21  |                                                                                                                Сообщение # 132
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

DeveloperX, давай заново проект, исправленный, смотреть будем. И подробней, что именно не получается
DeveloperX Дата: Пн, 28.01.2008, 13:22  |                                                                                                                Сообщение # 133
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

basicpic, http://slil.ru/25408555
по поводу кнопок, питания, конденсатора вопрос в силе. ничего не выходит...
- по нажатию кнопки должен обнуляться суточный счетчик
- при размыкании кнопки на питании, пик должен забыть о прерываниях и сохранить переменные (10 штук) в еепром.
- с кондером работать не хочет, не знаю как его надо поставить...

Сообщение отредактировал DeveloperX - Пн, 28.01.2008, 13:51
ADMIN Дата: Пн, 28.01.2008, 13:53  |                                                                                                                Сообщение # 134
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote
по поводу кнопок, питания, конденсатора вопрос в силе. ничего не выходит...
- по нажатию кнопки должен обнуляться суточный счетчик
- при размыкании кнопки на питании, пик должен забыть о прерываниях и сохранить переменные (10 штук) в еепром.
- с кондером работать не хочет, не знаю как его надо поставить...

Куда ставишь кондер и как? ты в протеусе этот кондер выкинь, там другие есть - там в библиотеке есть тоже CAPASITOR, только с индексом ACTIVE, поищи.
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Поиск: