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

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

Статус: Offline

Yrok, что означает TMR0=5 и почему if s=250 then s=0 и т.д.
ЯНДЕКС Дата: 31.10.2007
Yrok Дата: Ср, 31.10.2007, 14:18  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Ну вот--я же просил тебя почитать мануал про таймеры.
Если бы почитал думаю таких вопросов невозникало бы.
Ну попытаюсь тогда объяснить на пальцах:
У микроконтроллера есть такой таймер TMR0 размером 8 бит--т.е. после 255 счета он обнуляется и начинает считать занова.
Его можно настроить чтоб он считал внешние импульсы а можно как в моей программе импульсы внутреннего генератора считать т.е.--
частота кварца /4--т.е. при кварце 4 МГц--на счетчик идут импульсы 1МГц.
Перед счетчиком можно включить предделитель с разными коэффициентами кратными 2
В моем случае выбран делитель 1:16
При этом на таймер TMR0 будет приходить 62500 импульсов за 1 сек
Т.к.--счетчик умеет считать только до 255--нам придется использовать дополнительную переменную для организации счета до 62500
Еще раз напоминаю чтобы прошла 1 секунда и мы выставили флаг разрешающий вывод на экран-нам нужно подсчитать 62500 импульсов.
Т.е. переменная s считает у нас переполнения TMR0.
Если мы возьмем 62500/255 то получим что 1 сек переполнения произойдут 245,098 раз--дабы небыло большой погрешности нам нужно чтоб за 1 сек
переполнения происходили целое число раз.
Поэтому мы записываем в TMR0 число 5--тогда таймер будет переполняться 255-5=250 через 250 импульсов
62500/250=250--поэтому мы смотрим как только s будет равно 250--значит прошла 1 секунда и разрешаем вывод на экран
DeveloperX Дата: Ср, 31.10.2007, 14:25  |                                                                                                                Сообщение # 33
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Quote (Yrok)
В моем случае выбран делитель 1:16

а какая это строка в коде?
Yrok Дата: Ср, 31.10.2007, 14:43  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

OPTION_REG = $43 ' Включаем подтягивающие резисторы и настраиваем предделитель для TMR0
DeveloperX Дата: Ср, 31.10.2007, 14:45  |                                                                                                                Сообщение # 35
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

а где здесь 16? 43 ни в одной системе счисления не равно 16!
Yrok Дата: Ср, 31.10.2007, 15:01  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

OPTION_REG --это регистр специального назначения
с помощью него и конфигурируют Pic
1:16 это 011 --2,1,0 бит в этом регистре
DeveloperX Дата: Ср, 31.10.2007, 15:07  |                                                                                                                Сообщение # 37
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

я так понял, что переменные od100 и т.д. для подсчета километров?
а успеет ли пик вывести на экран и скорость (имп*0,6 за секудну) и километраж?
а после отключения питания ещё и записать пробег в еепром!
я читал, что можно повесить большущий конденсатор и после отключения питания запитаться на него для сохранения данных в память.
Yrok Дата: Ср, 31.10.2007, 15:09  |                                                                                                                Сообщение # 38
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

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

Статус: Offline

какой размер у word? поместится ли туда информация о количестве импульсов при пробеге например 500 км без остановки?
(6000имп*500км=1800000имп)
Quote (DeveloperX)
я читал, что можно повесить большущий конденсатор и после отключения питания запитаться на него для сохранения данных в память.

с реализацией сего поможете (возможно в другой ветке) потом?
Yrok Дата: Ср, 31.10.2007, 15:40  |                                                                                                                Сообщение # 40
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

А зачем тебе пробег считать импульсами--считай его километрами--т.е. как только пришло 6000 импульсов +1 км и опять считаем 6000 импульсов

Я же тебе незря ссылку на готовый борткомп присылал--погляди как там это реализовали--там неплохо придумали и что самое главное скока времени потребуется стока и будет.

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

Статус: Offline

готовый борткомп я понять не смог...
вот какая мысль у меня: проехали мы 10 км и 999 м, остановились, в еепром записали +10. потом поехали, а 999 потерялись!!!
или в еепром ничего не писать, а хранить в переменной и при отключении зажигания переходить на питание от батарейки и sleep до старта.
вообще учет вести считаю разумным в метрах! или я не прав?

Сообщение отредактировал DeveloperX - Ср, 31.10.2007, 16:23
ЯНДЕКС Дата: 31.10.2007
Yrok Дата: Ср, 31.10.2007, 16:21  |                                                                                                                Сообщение # 42
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Правильно
Я тебе про это говорил выше--но ты решил в километрах--ну думаю тебе видней biggrin
DeveloperX Дата: Ср, 31.10.2007, 16:25  |                                                                                                                Сообщение # 43
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

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

но обидно будет, если батарейка закончится или ещё что-нибудь и все данные потеряются!!!
Yrok Дата: Ср, 31.10.2007, 16:46  |                                                                                                                Сообщение # 44
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

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

Да я тоже считаю это глупо--тем более при заводе питание проседает до 8-10 вольт --что приведет либо к зависанию Pic либо к его перезагрузке--и тогда тю тю все данные-ведь мы их нигде нехраним.

В ссылке что я тебе присылал сделанно все просче:
Стоит управляемый стабилизатор(а стабилизатор всеравно ведь ставить будем для питания Pic)--на сам стабилизатор подается +12В постоянно от аккумулятора а при включении зажигания напряжение подается на управляющий вход стабилизатора а также на один из входов пика, а один из выходов подключен через диод тоже к управляющему входу стабилизатора--т.е. Pic начинает работать и ставит на управляющий выход уровень 1--тем самым недает выключить Pic пока он(Pic) сам этого незахочет.
В программе реализованна проверка напряжения на входе куда подается напряжение при включении зажигания--как только мы выключаем зажигание--Pic это ловит , сохраняет все данные в EEPROM и только после этого подает на выход управляющий стабилизатором уровень 0--тем самым выключает себя---мудрёно да????

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

Статус: Offline

на той схеме используется управляемый стаб KA78R05?
а батарейка там зачем? для часов?
такая ситуация: ехали-ехали, проехали 500 км. вдруг что-то случилось в проводке (например аккумулятор сел совсем или клемма отскочила или вообще замыкание), мы остановились, и в таком случае километраж не запишется в еепром, данные будут потеряны, т.к. +12в не будет!!!
можно ли сделать так ,чтобы пик запитался от батарейки (или большущего конденсатора) +3в, чтобы сохранить данные?

Сообщение отредактировал DeveloperX - Ср, 31.10.2007, 18:30
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Поиск: