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

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

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

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

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

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

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

 
Опции темы
Непрочитано 27.11.2010, 22:54  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
Вопрос Re: Задержки при плавной регулировке. Диммер с ДУ

Я вот так сделал:
Код:
...
OCR1A = nagruzka[status];
OCR1B = nagruzka[status]+200;        // импульс 100 мкс 
...
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
  { 
  PORTC.5 = 1;    // открыли симистор
  }
  
// Timer 1 output compare B interrupt service routine
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
{
PORTC.5 = 0;    // вернулись в режим ожидания
}
По совпадению А включили, по совпадению В выключили (через 100 мкс). На текущей яркости проблем нет. Стабильно горит на заданной яркости. Проблемы именно при регулировании. Иногда, когда полностью выключено, нажатие кнопки увеличения яркости приводит к плавному включению на 100%. Как будто команды путаются...

(cmd == 0b11111000) { // кнопка "Display" - увеличение яркости
(cmd == 0b11011000) { // кнопка "TV" - вкл/выкл диммера
Реклама:
mr_smit вне форума  
Непрочитано 28.11.2010, 02:06  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

mr_smit, привет!
Кой чего поправил а Вашем файле. В начале написал письмо - почитайте. Если будет продолжать "путать педали" - будем думать...

dimmer(ровно 13000байт).zip
omercury вне форума  
Непрочитано 28.11.2010, 15:19  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Только не нашел где Ressieve_Complete обратно в 0 сбрасывается.

Последний раз редактировалось mr_smit; 28.11.2010 в 15:25.
mr_smit вне форума  
Непрочитано 28.11.2010, 15:33  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от mr_smit Посмотреть сообщение
Только не нашел где Ressieve_Complete обратно в 0 сбрасывается
В самом конце файла, после обработки принятой команды.
omercury вне форума  
Непрочитано 29.11.2010, 22:22  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Проверка правильности команды у вас есть, сорри не заметил.

Но в вашем коде, после правильного декодирования не хватает сброса b_cnt = 0; и start_cond = 0; т.е. b_cnt будет присваиваться по очереди 33,34 аж до 255, вот вам и задержки при регулировании.

Код:
                
if ((cmd_1 + cmd_0) == 0xFF) {                                  //проверили правильность приема команды
                  cmd = cmd_1;
                 }
У вас в
Код:
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
не обрабатывается сигнал короткой помехи (это когда tick ‹10)
Да и на приемник может действовать длинная помеха, что конечно мало вероятно (это когда tick ›96)

Неплохо бы по условию (tick ‹10) как и по условию (tick ›96)
сбрасывать
b_cnt = 0;
start_cond = 0;
tick = 0;
Это позволит программке искать начало посылки сразу, а не после того как
Код:
if (b_cnt == 32)
Судя по
Нажмите на изображение для увеличения
Название: remo_07.gif
Просмотров: 71
Размер:	1.4 Кб
ID:	15251
длина стартового импульса должна быть 9 мс импульс и +4,5 мс пауза = 13,5 мс.
при повторе команды 9+2,25=11,25 мс.

Вы отлавливаете
Код:
       
if (tick ›= 92 && tick ‹ 96)                                           
 //если прошло от 8,832 мс до 9,216 мс
Так для интереса сигнал осциллографом вы смотрели на пульте или после TSOP ?
CodeNameHawk вне форума  
Непрочитано 04.12.2010, 18:56  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Конечно же на выходе TSOP. Пульт не разбирал.

Спасибо за то что указали на ошибки в коде. Сейчас попробую.

Последний раз редактировалось mr_smit; 04.12.2010 в 21:08.
mr_smit вне форума  
Непрочитано 04.12.2010, 20:56  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от CodeNameHawk Посмотреть сообщение
Но в вашем коде, после правильного декодирования не хватает сброса b_cnt = 0; и start_cond = 0; т.е. b_cnt будет присваиваться по очереди 33,34 аж до 255, вот вам и задержки при регулировании.
Гениально!!!!!!!!!!!! Теперь всё работает как надо. CodeNameHawk спасибо огромное!!!!!!
mr_smit вне форума  
Непрочитано 04.12.2010, 21:07  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
Вопрос Re: Задержки при плавной регулировке. Диммер с ДУ

Осталась только не решенной проблема случайного моргания при плавном включении

Сначала думал на 100 мкс задержку в прерывании:
Код:
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
  { 
  PORTC.5 = 1;    // открыли симистор
  delay_us(100);  // импульс 100 мкс
  PORTC.5 = 0;    // вернулись в режим ожидания
  }
Мало ли, может при этом прерывание по синхронизации сбоило. Сделал так:
Код:
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
  { 
  PORTC.5 = 1;    // открыли симистор
  }
  
// Timer 1 output compare B interrupt service routine
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
{
// Place your code here
PORTC.5 = 0;    // вернулись в режим ожидания
}
Т.е. по совпадению А включаю симистор, по совпадению В выключаю, через 100 мкс.
Код:
OCR1A = nagruzka[status];
OCR1B = nagruzka[status]+200;
Но случайные моргания при плавном включении так и остались. В остальном: горит стабильно, регулируется плавно. Т.е. помехи из сети исключаем. Именно при пуске моргания. И то иногда.

В чём может быть причина морганий?
mr_smit вне форума  
Непрочитано 04.12.2010, 22:13  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от mr_smit Посмотреть сообщение
Теперь всё работает как надо. CodeNameHawk спасибо огромное!!!!!!
Пожалуйста.
Сообщение от mr_smit Посмотреть сообщение
Осталась только не решенной проблема случайного моргания при плавном включении
Если схему переделали, так как я писал(чтобы исключить аппаратную часть), может быть у вас, во время плавного включения, приходит повторная команда на плавное включение, например пульт послал вторую посылку.
Такие вещи отлавливаются отладкой. Для начала Протеус, потом в железе, а как вы пытались отлаживать ?
CodeNameHawk вне форума  
Непрочитано 06.12.2010, 01:40  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Стабилитрона пока в наличии нет. Поэтому схему не изменял.

Прошиваю проц и запускаю макетку. Вот и вся отладка.

Насчет повторной посылки хорошее предположение. Но моргание может произойти как сразу, так и под конец, когда уже кнопка давным давно отпущена. Что то в программе... 100%. Горит то стабильно. Если бы помехи из сети шли то и при малой яркости дергалось бы. А так только при плавном вкл/выкл.
mr_smit вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Нужна схема автоматического закрывания дверей автомобиля при движении Aviasined Электроника средств транспорта 17 28.09.2010 06:14


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


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