Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 04.04.2008, 06:24   #1
eleorka
Частый гость
 
Регистрация: 23.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
eleorka на пути к лучшему
По умолчанию Вопрос начинающего по программированию PIC16F84A

Не подумайте что злоупотребляю «эфирным» временем, но все еще проектирую устройство для замера оборотов двигателя. Хотел дойти до сути сам, без копирования других проектов. Только так можно чему либо научиться. Сидел два дня, пока не получается…..

Хочу довести до конца, или все брошу.....Это не угроза
Подскажите по какому пути идти.
Напоминаю суть: предполагаю считать число оборотов двигателя на тест работает или нет.
Если двигатель делает 300 об/мин =значит он заведен, если меньше = значит стоит.

Моя алгебра:
300 об/мин = 5 об/сек.
Если двигатель четырех-цилиндровый, один оборот двигателя = четыре ТАХО импульса.
5 об/сек Х 4 импульса = 20 импульсов в 1 сек.

Предполагаю что счетчик нужен на 20 импульсов, т.е. однобайтовый.
Значит предделитель в TMRO не нужен, т.к. переполнения TMRO не будет.
Время подсчета = 1 сек
Т.е. если двигатель работает, то число импульсов в 1 сек должно быть больше 20.
20 (десятич.) = 14 НЕХ
Предполагаю загонять это число в регистр и отнимать его от числа импульсов.

До этого момента сообразил только следущее:

– установил порт А как входной, порт B как выходной.

- в OPTION регистре 4-ый бит PSA устанавливаю в 0 (т.е. предделителя нет).
5-ый бит TOCS устанавливаю в 1 (внешний сигнал). Остальные биты OPTION сброшены.

- сбрасываю TMRO (новый счет)
- физически закорачиваю выводы RA3, RA4 для включения и выключения счетчика. (RA3 включает/выключает, RA4 принимает сигналы)

- В течении секунды предполагаю замерять число принимаемых импульсов.
Для этого вписываю число 0001 1000 в TRSA для включения счетчика и через ровно 1 сек нужно вписать число 0000 0000 в TRSA (вырубаю счетчик).


Дальше у меня ничего не получается. Полагаю, что здесь мне надо «придумать» задержку в одну секунду. Кстати имеется от другой более эффективный способ задержки времени ??? ежели чем загонять число FF (256) в регистр и применять команду DECFSZ , что при использовании 4 мГц кристалла дает задержку всего лишь в 255 Х 2=510мкСек....МИКРО!
Скольже мне нужно задействовать регистров, что бы получить задержку в 1 сек?

Повыдёргивал микропроцессор из платы программирования в макетную плату столько раз, что болят пальцы левой руки и они кажется стали длиннее.
Пока не получается и исполняю петли Нестерова.

Кстати, нужно ли сбрасывать 2-ой бит регистра INTCON флаг переполнения TMRO ?


Всем спасибо!!!!!!!!
Реклама:
eleorka вне форума  
Непрочитано 04.04.2008, 07:06   #2
stri
Прописка
 
Аватар для stri
 
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
stri на пути к лучшему
По умолчанию

а почему бы в протеусе не отлаживать? не придется проц зря выдергивать...
Задержки есть 2-х видов (по крайней мере я столько знаю).1-циклами, складывать или вычитать что то с чем то нужное время. 2-с исп. таймера. Програмируется таймер скажем на 100мс, в прерывании уменьшает переменную. Плюс этого метода-проц в это время может делать другие дела.
stri вне форума  
Непрочитано 04.04.2008, 07:45   #3
sanitar249
Почётный гражданин KAZUS.RU
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Способов реализации подобного довольно много...
Чем например плохо так: сбрасывать, считающий ТС по сигналу с датчика,перед этим считав отсчет, по результату отсчета (переоду) принимать решение о том с какой частотой крутиться мотор...
Удачи!
__________________
Я, думаю, нужно подумать...
sanitar249 вне форума  
Непрочитано 04.04.2008, 07:58   #4
eleorka
Частый гость
 
Регистрация: 23.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
eleorka на пути к лучшему
По умолчанию

Товарищи ведь я говорил что я начинающий, но видно вы и не предполагали насколько я начинающий
Теперь мне надо обЪяснение того что есть Протеус? где его берут?
и что ето за "считающий ТС".
Только не жалейте времени и не опускаите меня в глазах моих соотечественников.

спасибо
eleorka вне форума  
Непрочитано 04.04.2008, 08:16   #5
sanitar249
Почётный гражданин KAZUS.RU
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Сообщение от eleorka
Товарищи ведь я говорил что я начинающий, но видно вы и не предполагали насколько я начинающий
Теперь мне надо обЪяснение того что есть Протеус? где его берут?
и что ето за "считающий ТС".
Только не жалейте времени и не опускаите меня в глазах моих соотечественников.

спасибо
Все когда-то такими были...
протеус- мощная интегр. среда разработки от рисования принципиалки до проектир ПП через этап отладки в симуляторе.
Найти, если поискать , можно на этом форуме.
Считающий в смысле- работающий. Делаем так запуск- счет 0-1-2...итд, по сигналу с датчика(желательно прерыванием) считываем значение хххх, ТС сбрасываем, далее опять отсчет итд. Работаем с полученным значением хххх длительности периода.
Удачи!
__________________
Я, думаю, нужно подумать...
sanitar249 вне форума  
Непрочитано 04.04.2008, 08:53   #6
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Сообщение от eleorka
Дальше у меня ничего не получается. Полагаю, что здесь мне надо «придумать» задержку в одну секунду. Кстати имеется от другой более эффективный способ задержки времени ??? ежели чем загонять число FF (256) в регистр и применять команду DECFSZ , что при использовании 4 мГц кристалла дает задержку всего лишь в 255 Х 2=510мкСек....МИКРО!
Скольже мне нужно задействовать регистров, что бы получить задержку в 1 сек?
Вот держи,програмка которая автоматом пишет задержки,выбираеш только сколько надо циклов задержку.

Если хочеш чтоб задержка не ела время проца сделай через другой таймер(я тока уже не помню скока таймеров в пик16ф84а),если нужна большая задержка примени регистр который будет уменьшатся или увеличиватся и сравнивай с нужным число и если есть совпадения то подымай флаг,того что время отсчета кончилось и пусть главная программа обработает его.Надесь не заумно наговорил

Прикрепленный файл: 2801278.rar
CERGEI1982 вне форума  
Непрочитано 04.04.2008, 09:54   #7
eleorka
Частый гость
 
Регистрация: 23.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
eleorka на пути к лучшему
По умолчанию

Спасибо Сережка! буду пробовать
eleorka вне форума  
Непрочитано 07.04.2008, 03:44   #8
eleorka
Частый гость
 
Регистрация: 23.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
eleorka на пути к лучшему
По умолчанию

stri

Можешь ли пояснить чуть подробнее что значит «Програмируется таймер скажем на 100мс, в прерывании уменьшает переменную.»




CERGEI1982

Поясни пожалуйста как поднимать флаг о том что отсчет закончился и что ты имел ввиду под «пусть главная программа обработает его»
И еще в маленькой программке с программируемой задержкой имеется маленький тик обозначенный ClrWdt для чего он?




sanitar249


Спасибо. Поясни .... зачем делать несколько измерений и почему «желательно с прерыванием»?
Длительность периода...? Ведь это величина обратная частоте. Нужно делать преобразования (деление) которые я еще не делал. Конечно интересно то но я не очень понял принципа.
eleorka вне форума  
Непрочитано 07.04.2008, 06:59   #9
stri
Прописка
 
Аватар для stri
 
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
stri на пути к лучшему
По умолчанию

смысл такой. заводишь переменную, к примеру time, при инициализации программы включаешь и настраиваешь аппаратные таймеры, включаешь их прерывания, пишешь процедуру обработки прерываний, вида "если прерывание, и если прерывание от таймера, уменьшить time на 1". Далее, когда тебе нужна большая задержка, делаешь цикл (в виде вызываемой подпрограммы или прямо в теле проги), вида: "пока time не равно нулю, выполнять эту строчку". Программа, попав в него, будет крутиться на одном месте, время от времени будут срабатывать прерывание, уменьшая переменную time. Когда time обнулится условие цикла нарушится и программа продолжит работу.
stri вне форума  
Непрочитано 07.04.2008, 07:36   #10
eleorka
Частый гость
 
Регистрация: 23.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
eleorka на пути к лучшему
По умолчанию

stri

Звучит очень рационализаторски !
Вот сделаю основную модель которая работает и затем буду "улучшать" и модернизировать.

спасибо[/b]
eleorka вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленький вопрос по программированию в ПРОТЕУСе lolodin Микроконтроллеры, АЦП, память и т.д 29 10.11.2008 15:10
Советы по программированию МК konstsm Микроконтроллеры, АЦП, память и т.д 2 04.09.2008 07:43
Вопрос по программированию PIC eleorka Микроконтроллеры, АЦП, память и т.д 8 03.04.2008 06:34
Для начинающего PCAD или EAGLE ? gurwin Proteus, KiCAD и другие ECAD 3 24.10.2007 11:35


Часовой пояс GMT +4, время: 00:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot