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

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

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

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

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

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

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

 
Опции темы
Непрочитано 14.01.2009, 20:14  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от urry
время в прерывании используют только для анализа и установки флага задачи - и ни на что более - само прерывание должно быть как более коротким
Какая разница задача будет выполнятся в прерываниях или в основном цикле..
Главное что бы один проход по ВСЕМ задачам не был более чем необходимый минимальный период времени обработки всех задач. За этот период обрабатывается САМАЯ быстрая задача.. а остальные могут выполнятся 1 раз в несколько проходов... Обычно делаю всё в прерываниях таймеров...

Сообщение от kvark85
deCoder, я не понял сути. у меня команда длится 67,2 ms. тоесть квант времени должен быть больше 67,2 ms?
а это невозможно так как полупериод 10 ms длится. обьясните пожалуйста еще раз
В данном случае я бы взял 1/4 длительности ОДНОГО бита RC5. С этим периодом запустил таймер.

ЗАДАЧА1 ПРИЁМ битов ИК в буфер
За 4 прохода получаеш 1 бит и кладёш его в буфер..
Каждый проход у тебя получится не более 5-10 микросек.
в каждом проходе делаеш...
1) ожидаеш начала посылки, грузиш счётчик длительности бита=4
2) отсчёт счётчика времени бита - 3-5 команд
3) анализ состояния входа и отсчёт счётчика повторных состояний бита +ещё 10-20 команд
4) сохранение бита в РАМ или регистр, в каждом четвёртом проходе +10-20 команд
по окончанию посылки выставляеш флаг что принята команда.

ЗАДАЧА2 УПРАВЛЕНИЯ СИММИСТОРОМ
1) Отсчёт счётчика длительности периода
сравнение счётчика с установленым значением открытого тиристора и управление выходами примерно=
20-30 команд
2) обнаружение перепада входного напряжения +10-20 команд

ЗАДАЧА3 УПРАВЛЕНИЯ яркостью от принятых команд
её можно выполнять в другом таймере, периодом менее чем период посылок ИК. Ждать флага от задачи приёма посылки, и анализируеш буфер и декодируеш команду, Далее изменяеш длительность открытия тиоистора для ЗАДАЧИ2 регулирования яркости.



Когда то на PIC16F877 (20 мгц) регулировал в 3 фазах Симмиторы, измерял 4 канала АЦП и стабилизировал заданую мощность симмисторами в 4 каналах ...
+10 разрядов АЛС индикация параметров, +7 кнопок управления + сохранение параметров в ЕЕПРОМ если они изменялись пользователем.
Реклама:
picavr вне форума  
Непрочитано 15.01.2009, 01:47  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию

у меня нудьт не RS5. вначале посылки стартовый импульс определенной длинны. и через некоторое время посылка. импулься с периодом 2.24 мс я считаю за "1", а импульсы с периодом 1.15 считаю "0". я непонимаю что вы имеете в виду. ниже прикрепил график по которому управляется симистор и по код посылки на фоне него. можете как то показать принцип который вы предлагаете на данном графике?

и еще, что значит: "Главное что бы один проход по ВСЕМ задачам не был более чем необходимый минимальный период времени обработки всех задач."?

и еще добавлю, что в основном теле програмы, в maind, програма опроса сенсорной кнопки. но на время приема посылки буду выключать.

-- Прилагается рисунок: --

kvark85 вне форума  
Непрочитано 15.01.2009, 13:33  
deCoder
Прописка
 
Регистрация: 27.05.2005
Сообщений: 127
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
deCoder на пути к лучшему
По умолчанию

эээ ну как еще объяснить. Подумай почему твой ОДНОЗАДАЧНЫЙ процессор в компьютере может как бы параллельно обрабатывать кучу потоков. Почему ты можешь слушать музыку, читать этот форум, и еще параллельно сжимать файл архиватором.
Потому что (упрощенно говоря) операционная система выделяет квант времени каждому процессу по кругу. А не так как ты мыслишь: что пока твоя функция не сделает все свои дела и не возвратит управление.

Я нарочно описал способ только с одним таймером. Не используя аппаратные возможности. Так как твою задачу можно решить с помощью любого самого дешевого контроллера с 2мя или 4мя килобайтами памяти.
deCoder вне форума  
Непрочитано 15.01.2009, 17:14  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию

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

как сделать программу с квантом времени непонял, понял смутно. а как с квантом времени сделать сенсорную кнопку вобще не представляю. этож какой кван времени нужен чтоб успевал подсчитывать время разрядки конденсатора в 20p.

-- Прилагается рисунок: --

kvark85 вне форума  
Непрочитано 19.01.2009, 21:45  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию

даже если в теле прерывания INT0 пусто - все равно сбои в горении лампочки. ниже прогрма ма с пустым прерыванием обработки ик

Прикрепленный файл: 20961.rar
kvark85 вне форума  
Непрочитано 20.01.2009, 04:47  
dr_Sash
Прописка
 
Регистрация: 28.05.2008
Сообщений: 270
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
dr_Sash на пути к лучшему
По умолчанию Какие руки... Какие ноги... - ХВОСТ !!!

Сообщение от kvark85
даже если в теле прерывания INT0 пусто - все равно сбои в горении лампочки. ниже прогрма ма с пустым прерыванием обработки ик
Какие кванты, какие мультипотоки... ЖЕСТЬ!

1. Симмистор замени на МОС - гальванически развяжешься от сети, а то мне даже смотреть страшно. Аналогично точка нуля - через оптрон. На спичках не экономят.

2. Яркость меняй пропуском Х полупериодов - получишт 101 уровень яркости, для лампочки более чем предостаточно. Плюс - значительно упрстится алгоритм управления.

3. А что мешает взять RC-5 пульт - масса решений...

4. Правильно организуй обработчик ИК пульта. Например настраиваешь прерывание на смену с 1 на 0. В прерывании всего то что запускаешь таймер как счетчик и настраиваешь следующую реакцию прерыванием по смене с 0 на 1... При следующем прерывании имеешь в таймере время, которое длится "провал" лог. нуля. Так же и единицы меряешь, попутно проверяя соответствие протоколу и вдвигая принимаемые "битики"... Это в общих чертах, но - если дойдеш до сути (возможно прийдется немного графики порисовать в тетрадке, зато - какова польза!) - то в каждом из прерываний будет выполняться буквально 60-70 команд, то есть "за глаза" хватит и 4 МГц, причем реально будет "загрузка проца" не более 10%...
Ну а организовать счетчик полупериодов, и включать/выключать МОС по выполнению условия (переполнение и достижение заданного значения) - это вообще десяток команд...

Так что надо-бы решить - копировать уже готовую конструкцию... Или разобраться в принципе работы - и создать свою собственную конструкцию...

Прикрепленный файл: 20961.rar
dr_Sash вне форума  
Непрочитано 20.01.2009, 10:01  
Yegorvin
Прописка
 
Аватар для Yegorvin
 
Регистрация: 05.02.2008
Сообщений: 251
Сказал спасибо: 34
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
Yegorvin на пути к лучшему
По умолчанию

Так как задача приема команды с пульта длительная по времени можно запускать ее в основном потоке (без прерываний, а на управление симистором отвлекаться по прерыванию, как у вас было и сделано.
Но так как для открытия симистора нужно время, плюс ещё необходимо регулировать время открытия (тоесть после перехода через ноль выжидать определенную паузу), предлагаю использовать ещё одно прерывание, но по таймеру. Алгоритм следуюший:
1) При переходе по прерыванию от перехода сигнала в сети через ноль, на ножке PB0 выставляем 1 (симистор закрываеться); записываем в таймер значение задержки и выжодим из прерывания (вся эта процедура займет не больше 20 команд, тоесть основному циклу это не помешало);
2) при переходе по прерыванию по таймеру на ножке PB0 выставляем 0 (симистор открываеться до конца полупериода) и выходим из прерывания.

По такой схеме для реализации управления симистором нужно очень малая часть процесорного времени. Если немного усложнить можно легко реализовать выполнение в фоновом режиме и других задач.

Кстати по поводу оптронов необходимо подумать, если устройство будет стоять где нибудь вместо стандартного выключателя, куда никому не добраться то это лишнее увиличение размера и стоимости конструкции.
Yegorvin вне форума  
Непрочитано 20.01.2009, 15:52  
lyk
Гражданин KAZUS.RU
 
Регистрация: 20.05.2005
Сообщений: 659
Сказал спасибо: 40
Сказали Спасибо 186 раз(а) в 116 сообщении(ях)
lyk на пути к лучшему
По умолчанию

2 kvark85.
***********
Пример ФИУ симистором лежит здесь:
http://www.microchipc.com/sourcecode...BT_50-60Hz.zip
Если в двух словах, то прерывание ловите от 0 линии и от таймера. Все остальное (IR, сенсор, кнопки и т.п) в основном цикле. Как тут уже советовали, обработка прерывания должна занимать как можно меньше времени, что бы сильно не вредить основному циклу.
На мой взгляд, правильную "обвязку" 4-х квадрантного симистора Вы можете "подсмотреть" в статье Прадиденко А.- "Дистанционный регулятор освещения" (Радио 8, 2006).
Советую почитать эту статью http://www.gamma.spb.ru/articles.php?i=57 и применить для управления HiCom симистором MOC без ZeroCross в традиционном включении.
Зы. Не понятно что такое «Sens» и имеет ли оно развязку.
lyk вне форума  
Непрочитано 20.01.2009, 16:18  
lyk
Гражданин KAZUS.RU
 
Регистрация: 20.05.2005
Сообщений: 659
Сказал спасибо: 40
Сказали Спасибо 186 раз(а) в 116 сообщении(ях)
lyk на пути к лучшему
По умолчанию Re: Какие руки... Какие ноги... - ХВОСТ !!!

Сообщение от dr_Sash
2. Яркость меняй пропуском Х полупериодов - получишт 101 уровень яркости, для лампочки более чем предостаточно. Плюс - значительно упрстится алгоритм управления.
Этож не утюг - лампочка. Светить должна, а не блымать.

Прикрепленный файл: 20961.rar
lyk вне форума  
Непрочитано 20.01.2009, 16:53  
dr_Sash
Прописка
 
Регистрация: 28.05.2008
Сообщений: 270
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
dr_Sash на пути к лучшему
По умолчанию Re: Какие руки... Какие ноги... - ХВОСТ !!!

Сообщение от lyk
Этож не утюг - лампочка. Светить должна, а не блымать.
Возможно... Токо в "упрощенном" виде, без гальваноразвязки, да еще наверняка с питанием через резистор со стабилитроном... Тяжко будет, та и помех в сеть пойдет масса... (Хотя фильтр, возможно просто не нарисовал)...

Хотя, конечно можно и подсчетом смещения... Это мало что меняет.
А вот cosF и прочие факты - на Вашу уже совесть...

Прикрепленный файл: 20961.rar
dr_Sash вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггер на несколько секунд rewacom Электроника средств транспорта 9 30.06.2009 11:47
Несколько вопросов по IAR AVR graham Микроконтроллеры, АЦП, память и т.д 15 02.05.2006 17:38
Шим и несколько портов dosikus Микроконтроллеры, АЦП, память и т.д 0 15.04.2006 11:51
Симуляция двух PICов одновременно в MPLAB AndrySivolap Proteus, KiCAD и другие ECAD 5 08.03.2006 21:50


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


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