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

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

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

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

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

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


Ответ
Опции темы
Непрочитано 12.08.2020, 11:45   #1
ptrots
Частый гость
 
Регистрация: 18.09.2005
Сообщений: 26
Сказал спасибо: 72
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
ptrots на пути к лучшему
По умолчанию Помогите с TMR1 на PIC16F873

Суть проблемы такова:
Имеется роликовый транспортер, состоящий из 8 участков. По нему перемещается коробочка.
На каждом участке транспортера имеется оптический датчик, который включает этот транспортер.
Для того, чтобы коробочка доехала до следующего датчика нужна задержка на отключение 0,5 сек.
Управление транспортерами выполнено на PIC16F873.
Вот кусок программы которая управляет транспортерами.

Все бы ничего, но пока таймер отсчитывает 0,5 сек
может происходить какое то событие, которое контроллер не видит.
Сильно не пинайте, в 65 лет мозги совсем не те. Третий день пытаюсь прикрутить таймер TMR1 для этих целей.
Перелопатил кучу документации, но никак не могу понять, как это работает. Может быть кто нибудь может
написать пример, как это делается. Буду очень признателен.
Вложения:
Тип файла: txt PIC16F873.txt (3.2 Кб, 0 просмотров)
Реклама:
ptrots вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 12:09   #2
tomitch
Гражданин KAZUS.RU
 
Аватар для tomitch
 
Регистрация: 28.04.2008
Сообщений: 506
Сказал спасибо: 251
Сказали Спасибо 573 раз(а) в 226 сообщении(ях)
tomitch на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

А не проще выключать предыдущий транспортёр после достижения коробочкой
оптического датчика последующего тр-ра? Тогда "Delay05 & Co" не нужны
tomitch вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 12:28   #3
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

Я конечно уже забыл ассемблер и ПИК16, хотя раньше знал очень хорошо.
Для обнаружения сигнала от датчика используйте либо внешнее прерывание INT, либо постоянный (в цикле) опрос входа от датчика, и если сигнал появился, значит коробочка доехала до датчика.
Если нужно отмерять интервалы по 0,5 секунд, перезапускайте таймер каждый раз, когда обнаруживается сигнал с датчика. Перед перезапуском таймера считывайте его значение, до которого таймер досчитал. Разница между значением при перезапуске таймера и считанным значением перед перезапуском - и будет являться интервалом времени, выраженном в количестве тиков таймера.
NewWriter вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 14:05   #4
ptrots
Частый гость
 
Регистрация: 18.09.2005
Сообщений: 26
Сказал спасибо: 72
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
ptrots на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

Сообщение от tomitch Посмотреть сообщение
А не проще выключать предыдущий транспортёр после достижения коробочкой
оптического датчика последующего тр-ра? Тогда "Delay05 & Co" не нужны
А вот об этом я как то и не подумал... Спасибо за совет.
Но все равно хотелось бы увидеть пример применения TMR1.
Ну никак я не могу вкурить, как это работает и как использовать прерывания.
ptrots вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 14:10   #5
tsb
Прописка
 
Аватар для tsb
 
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
tsb на пути к лучшему
По умолчанию

Сообщение от tomitch Посмотреть сообщение
А не проще выключать предыдущий транспортёр после достижения коробочкой оптического датчика последующего тр-ра? Тогда "Delay05 & Co" не нужны
Думаю, что это не совсем корректная логика управления. Подумайте, что будет в таких, вполне реальных, ситуациях:
1) если коробочку на каком то этапе сняли с транспортера;
2) если на транспортере будет несколько коробочек.

Сообщение от ptrots Посмотреть сообщение
Имеется роликовый транспортер, состоящий из 8 участков. По нему перемещается коробочка.
На каждом участке транспортера имеется оптический датчик, который включает этот транспортер.
Для того, чтобы коробочка доехала до следующего датчика нужна задержка на отключение 0,5 сек.
Управление транспортерами выполнено на PIC16F873.
Что-то это не похоже на реальную задачу автоматизации. Скорее это какое-то учебное задание.

Последний раз редактировалось mike-y-k; 15.11.2021 в 12:32. Причина: 6.6
tsb вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 15:13   #6
sholz
Частый гость
 
Регистрация: 06.08.2005
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 16 сообщении(ях)
sholz на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

организуйте счет TMR например до 0.1 сек. выставляйте флаг, который будете по кругу проверять в основном цикле программы, и переходить по нему на программный счетчик до 5. пока TMR отсчитывает 0.1 можно делать все остальное
sholz вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 16:35   #7
ptrots
Частый гость
 
Регистрация: 18.09.2005
Сообщений: 26
Сказал спасибо: 72
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
ptrots на пути к лучшему
По умолчанию

Сообщение от tsb Посмотреть сообщение
2) если на транспортере будет несколько коробочек.
Вот как раз сейчас и возникла проблема. Коробочки иногда сталкиваются друг с другом, а это нежелательно.

sholz
Хотелось бы увидеть, как это выглядит на ассемблере...

Последний раз редактировалось mike-y-k; 15.11.2021 в 12:34. Причина: 6.6, 7.15
ptrots вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 18:22   #8
sholz
Частый гость
 
Регистрация: 06.08.2005
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 16 сообщении(ях)
sholz на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

пример для 873А. предполагается что основной алгоритм выполняется раз в 200мкс и должен поместится в этот интервал. так же здесь не хватает операции сохранения/восстановления статусного регистра при входе в прерывание.
Вложения:
Тип файла: txt пример01.txt (4.0 Кб, 0 просмотров)

Последний раз редактировалось sholz; 12.08.2020 в 18:26.
sholz вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 19:52   #9
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

Сообщение от tsb Посмотреть сообщение
Скорее это какое-то учебное задание.
Да какое там учебное в 65 лет то
Просто не хватает данных, не совсем ясна конструкция.
Если на каждом участке между датчиками есть электромотор, который приводит в движение транспортер именно на этом участке, то и отключать его нужно после пересечения коробочкой следующего датчика.
NewWriter вне форума   Ответить с цитированием
Непрочитано 12.08.2020, 20:48   #10
tsb
Прописка
 
Аватар для tsb
 
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
tsb на пути к лучшему
По умолчанию Re: Помогите с TMR1 на PIC16F873

Сообщение от NewWriter Посмотреть сообщение
Если на каждом участке между датчиками есть электромотор, который приводит в движение транспортер именно на этом участке, то и отключать его нужно после пересечения коробочкой следующего датчика.
Недостатки такого условия отключения:
1) если коробочку сняли с транспортера когда она не доехала до следующего датчика, то движение этого участка не выключится;
2) если на участке транспортера коробочек может быть несколько (а ТС это подтвердил, так как они у него иногда сталкиваются) - то движение участка прекратится по выходу "первой" коробочки и "вторая" уже не доедет.
Меня в первоначальном условии смущает требуемая задержка всего 0,5 сек. Это было бы приемлемо, если бы "датчик" выдавал сигнал о "присутствии" предметов на всем протяжении участка транспортера. Но я не знаю таких "оптических датчиков". Если датчик работает по пересечению луча, то он "контролирует" достаточно небольшую зону (в начале участка или в его конце). Таким образом, если "коробочка" выехала из зоны датчика в начале участка, то куда она успеет доехать за 0,5 сек? Не думаю, что участки транспортера такие короткие. Может у них "коробочки" такие длинные, что занимают почти весь участок транспортера? Но тогда это весьма специфический случай...
tsb вне форума   Ответить с цитированием
Ответ

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает прерывание от TMR1 Vadimkhl PIC 1 18.04.2016 05:02
Помогите настроить TMR1 Segriv Микроконтроллеры, АЦП, память и т.д 1 28.03.2012 21:47
Помогите русифицировать Anycall Samsung SEC SCHW770, SEC SCHW420, SEC SCHW2700, SEC SCHW570 Rusik_best Автоматика и аппаратура связи 0 27.12.2011 16:13
Помогите, пожалуйста, с PICом и дисплеем VaL_KX Proteus 4 15.11.2010 22:33
[Решено] Ошибка TMR1 в Proteus Виталий К. Proteus 5 17.06.2010 23:00


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


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