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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Cчет импульсов
DeveloperX Дата: Пт, 25.01.2008, 09:52  |                                                                                                                Сообщение # 106
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

меня осенило!
http://slil.ru/25397785
сделал каждый разряд отдельно!

другая проблема: захотел убрать ведущие нули, но после реализации подсчет импульсов заметно замедлился - показания увеличились...
слишком много LCDOUT.
нельзя ли по-другому реализовать это?

ещё задумал добавить кнопку, которая бы обнуляла бы показания маршрутного одометра.
наверное нужно обрабатывать прерывание от нажатия кнопки при котором обнулялись бы некоторые переменные...
помогите внести соответствующие изменения в проект/программу.

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

Сообщение отредактировал DeveloperX - Пт, 25.01.2008, 10:29
Yrok Дата: Пт, 25.01.2008, 11:46  |                                                                                                                Сообщение # 107
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

да-а-а-аа-вот ты наваял))))
проигнорировал все мои советы конечноже--ну да ладно
про
Quote
но после реализации подсчет импульсов заметно замедлился - показания увеличились...
слишком много LCDOUT.
--сам себе правильно ответил

про кнопку--смотри как к 876 пику кнопки приделаны--и сделай опрос соответствующего пина

Quote
а ещё придумал подавать питание на пик через большой конденсатор, а каким-нибудь портом пика проверять падение(наличие) напряжения до конденсатора, и при отключении питания останавливать прерывания и совершать запись переменных в еепром.
не скажется ли такой мониторинг на качестве подсчета импульсов?
--смотря как реализуешь)))--впринципе недолжно
DeveloperX Дата: Пт, 25.01.2008, 11:51  |                                                                                                                Сообщение # 108
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Quote (Yrok)
--смотря как реализуешь)))--впринципе недолжно

1500мкФ на сколько секунд работы пика?
если к порту подать питание до кондера - можно ли поставить порт на прерывание по лог. 0 при падении напряжения ниже лог. 1?
в протеусе внедрил кондер, а пик не работает... помогите наваять.

вот проект http://slil.ru/25398195 - забыл уже, как откалибровать таймер на 1 сек при 20МГЦ кварце?

и состояние кнопки не могу определить!

Сообщение отредактировал DeveloperX - Пт, 25.01.2008, 12:18
Yrok Дата: Пт, 25.01.2008, 14:08  |                                                                                                                Сообщение # 109
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Quote
если к порту подать питание до кондера - можно ли поставить порт на прерывание по лог. 0 при падении напряжения ниже лог. 1?
--можно

20000000/4/256/256=примерно 76--значит s должно быть 76 а предделитель 256

Quote
и состояние кнопки не могу определить!
--а ты порты А перевел из аналоговых входов в цифровые????---нет--тогда вперед))
DeveloperX Дата: Пт, 25.01.2008, 15:02  |                                                                                                                Сообщение # 110
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Quote (Yrok)
20000000/4/256/256=примерно 76--значит s должно быть 76 а предделитель 256

как это указать в программе. там же явно 256 не впишешь?
Quote (Yrok)
--а ты порты А перевел из аналоговых входов в цифровые????---нет--тогда вперед))

не знаю как
Yrok Дата: Пт, 25.01.2008, 16:43  |                                                                                                                Сообщение # 111
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

это прописывается в Option_reg
ЯНДЕКС Дата: 25.01.2008
DeveloperX Дата: Вс, 27.01.2008, 21:57  |                                                                                                                Сообщение # 112
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Quote (Yrok)
это прописывается в Option_reg

с этим вопросом не разобрался...
я уже задавал вопрос про значение OPTION_REG = $43...
почему $43 так и не узнал.
поэтому понятия не имею как изменить это на 76!
в книге про программирование пиков на бейсике Чака Х. только информация о битах регистра OPTION и никаких примеров...

а где и как прописать прерывание от порта (например PortA.0) при лог. 0?
например, в той же книге написано, что "Вывод 0 порта PORTB - единственный вывод, сигнал на котором может вызвать внешнее прерывание"...
так можно ли разрешить прерывание по падению напряжения какого-нибудь вывода PORTA???

Сообщение отредактировал DeveloperX - Пн, 28.01.2008, 01:05
ADMIN Дата: Пн, 28.01.2008, 08:31  |                                                                                                                Сообщение # 113
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

разложи на двоичное число $43 - %01000011 - отсюда имеем:
бит 7 равен 0, значит подтягивающие резисторы не подключены
бит 6 =1 прерывание по portb.0 -по переднему фронту,
бит 5=0 TMR0 тактируется внутренним генератором
бит 4=0 не важен в данном случае, поскольку генератор внутренний для TMR0
бит 3 =0 выбор предделителя - в данном случае предделитель включен перед TMR0
биты 2-0 коэффициент деления предделителя здесь он равен 1:16
Поэтому всегда читай даташит, устанавливай биты в двоичном режиме, а потом переводи в шестнадцатиричную, если хочешь
DeveloperX Дата: Пн, 28.01.2008, 08:49  |                                                                                                                Сообщение # 114
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

basicpic, разобрался наконец-то...
Yrok, s пришлось увеличить до 79, т.к. при 76 скорость показывал 193км/м, а при 333гц должен 200 показывать.

Сообщение отредактировал DeveloperX - Пн, 28.01.2008, 09:02
Yrok Дата: Пн, 28.01.2008, 09:27  |                                                                                                                Сообщение # 115
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Quote
Yrok, s пришлось увеличить до 79, т.к. при 76 скорость показывал 193км/м, а при 333гц должен 200 показывать.
---да к сожалению это издержки PBP((((--из-за чего мне пришлось перелезть на microbasic--прерывания наступают только после выполнения оператора.
DeveloperX Дата: Пн, 28.01.2008, 09:41  |                                                                                                                Сообщение # 116
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Yrok, basicpic, а что можете посоветовать по поводу кнопки или прерывания от порта для мониторинга падения напряжения???
evgenb Дата: Пн, 28.01.2008, 09:51  |                                                                                                                Сообщение # 117
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

DeveloperX,

Здесь выложил описание внутренностей PIC 16ХХХ : http://slil.ru/25407894

Yrok,

Что, microbasic входит в прерывание сразу?

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

Статус: Offline

evgenb, а конкретно под picbasic что-нибудь подсказать можете?
Yrok Дата: Пн, 28.01.2008, 10:38  |                                                                                                                Сообщение # 119
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

evgenb, --да microbasic уходит в прерывания даже во время выполнения операторов!!!!!!!!!!!))))))

DeveloperX, --я же говорил тебе про кнопку--конфигуришь порт А как вход,и в теле программы проверяешь изменение уровня--а еще проще смотри оператор Button --там сразу можно привязать кнопку к конкретной ноге пика и отслеживать нажатие--так что дерзай))

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

Статус: Offline

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

org 0x004
обработчик
retfie
без этих on interrupt просто разрешайте прерывания и все.
Заодно скажу, в протоне есть помимо on interrupt label, инструкция on_interrupt label, которая моментально переводит рабочую точку программы на обработчик label. Просто, для справки...

Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Поиск: