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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 25.08.2012, 19:15  
Flopix
Гражданин KAZUS.RU
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от miwutka Посмотреть сообщение
tim0_ovf_cnt - 65535 хранит макс значение? Какой тип переменной, непойму ?
uint16_t tim0_ovf_cnt;//счетчик переполнений таймера 0, для вычисления больших задержек

uint16_t = unsigned int (16 бит со знаком)
Реклама:
Flopix вне форума  
Непрочитано 25.08.2012, 19:19  
Flopix
Гражданин KAZUS.RU
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от miwutka Посмотреть сообщение
переменнач cnt что считает?
cnt хранит номер принимаемого бита в ИК последовательности.
Flopix вне форума  
Непрочитано 25.08.2012, 19:26  
Flopix
Гражданин KAZUS.RU
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от miwutka Посмотреть сообщение
pulseTime , sigTime , что считают переменные?
sigArr[cnt] , testArr[cnt] , - тоже что пишеться в масив?
sigTime - время первого полупериода сигнала
pulseTime - время второго полупериода сигнала
не совсем удачно обозвал эти переменные

sigArr[cnt] , testArr[cnt] , - это для отладки в них хранил последовательности задержек.
sigArr[cnt] = sigTime;
testArr[cnt] = pulseTime;
Эти массивы можно убрать.
В прерывании по изменению сигнала потому так и много кода чтобы сэкономит ОЗУ. Значение задержек сразу же декодируется.
Flopix вне форума  
Непрочитано 25.08.2012, 19:35  
Flopix
Гражданин KAZUS.RU
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: RC5+atmega 8

PHP код:
pulseTime tim0_ovf_cnt 256 TCNT0;//расчет времени между этим и предыдущим изменением сигнала на ножке с датчиком
if (VB(PIND3) › 0)
{
//если на ножке с датчиком 0 то значит задержка которая сейчас в переменной pulseTime  отвечает за первый полупериод сигнала поэтоум копируем ее значение в sigTime 
    
sigTime pulseTime;
}
else
{
//иначе задержка которая сейчас в переменной pulseTime отвечает за второй полупериод сигнала, а раз так значит импульс принят (значения хранятся в sigTime и pulseTime) и ниже происходит его обработка
...

Flopix вне форума  
Непрочитано 25.08.2012, 19:42  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: RC5+atmega 8

ага понятно ... надо пробовать значит... Дальше код прожую еще, а то не пойму как срабатывает после простоя больше 20 мс... время простоя храниться же в переменной tim0_ovf_cnt. Значит когда прийдет первый полупериод импульса то умножиться время простоя на 256+TCNT0 и потом после условия запишеться в sigTime. А там дальше усливие не выполниться так как читсло будет вне диапазона (больше чем 3000).... Вот это немножко не пойму... Это я в голове и на листике просчитываю код...
miwutka вне форума  
Непрочитано 25.08.2012, 20:14  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от miwutka Посмотреть сообщение
ага понятно ... надо пробовать значит...
Не стоило обижаться. Я ведь без перехода на личности. А уже и "кента" заработал...
Нашел в своем очень древнем архиве программу, которая работала в устройстве ДУ проектора офтальмолога. Переключала слайды для показа на экране. Если сможешь разобраться, буду рад. Там это самое комментирование самодостаточно.
зы Программа абсолютно работоспособная. С небольшими модификациями в области исполнительных устройств трудится и по сей день во многих "Оптиках" нашего города.
Вложения:
Тип файла: zip RC5 decoding.zip (17.0 Кб, 112 просмотров)
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Сказали "Спасибо" ut1wpr
miwutka (25.08.2012)
Непрочитано 25.08.2012, 20:18  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от ut1wpr Посмотреть сообщение
Не стоило обижаться. Я ведь без перехода на личности. А уже и "кента" заработал...
Нашел в своем очень древнем архиве программу, которая работала в устройстве ДУ проектора офтальмолога. Переключала слайды для показа на экране. Если сможешь разобраться, буду рад. Там это самое комментирование самодостаточно.
зы Программа абсолютно работоспособная. С небольшими модификациями в области исполнительных устройств трудится и по сей день во многих "Оптиках" нашего города.
Огромное спасибо это прям через чур... качну, изучу. Просто тот тип так достал не одного меня что аж пипец ))) Буду изучать два кода и выводить золотую серединку.
miwutka вне форума  
Непрочитано 25.08.2012, 20:48  
Flopix
Гражданин KAZUS.RU
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от miwutka Посмотреть сообщение
а то не пойму как срабатывает после простоя больше 20 мс... время простоя храниться же в переменной tim0_ovf_cnt. Значит когда прийдет первый полупериод импульса то умножиться время простоя на 256+TCNT0 и потом после условия запишеться в sigTime. А там дальше усливие не выполниться так как читсло будет вне диапазона (больше чем 3000).... Вот это немножко не пойму... Это я в голове и на листике просчитываю код...
Ниже расписал как работает программа при начале приема сигнала?

PHP код:
pulseTime tim0_ovf_cnt 256 TCNT0;
//так как ИК приемник работает инертно то при наличии сигнала на ноге МК будет 0 
if (VB(PIND3) › 0)
{
    
sigTime pulseTime;
}
else
{
//соотвевенно сразу начнет выполнятся эта ветка кода
if ((cnt ‹ 100) && (sigTime › 0))
{
  
//все что находится в этом блоке выполнится и что то там неправильно посчитает

  
....
  
//но в конце блока идет проверка
  //isTimeout  тут будет равным 1
  
if (isTimeout == 0)
  {
    
cnt++;
  }
  else
  {
  
//и выполнится этот блок
  //да получилось немного через одно место, можно было сделать и красивее
    
cnt 0;
    
isTimeout 0;
  }
}

//ну в ы конце значение этих переменных обнуляются и к следующему срабатыванию прерывания все будет красиво 
Flopix вне форума  
Непрочитано 25.08.2012, 20:53  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: RC5+atmega 8

ну чтото так понятно, но надо это дело отследить в железе весь код понятен, и даже очень начало интересно как проходит пока сажусь за переписывание под себя кода. Еще напишу... спасибо.
miwutka вне форума  
Непрочитано 25.08.2012, 22:11  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: RC5+atmega 8

Сообщение от Flopix Посмотреть сообщение
минимальная задержка измеряемая таймером = 0,88Мс
максимальная 88Мс (пауза между повторными посылками при зажатии кнопки)
Разница в длительности в 100 раз. Как вы предлагаете в 1 байте хранить эти задержки с достаточной точностью?
Блин, а по моим подсчётам (1/250000)*256=1,024мкс...
Сообщение от Flopix Посмотреть сообщение
1 инкремент и 2 команды сравнения это разве много?
чуть больше...
PHP код:
//подпрограмма прерывания по INT1
ISR(SIG_INTERRUPT1)
{
    
pulseTime tim0_ovf_cnt 256 TCNT0;
    if (
VB(PIND3) › 0)
    {
        
sigTime pulseTime;
    }
    else
    {
        if ((
cnt ‹ 100) && (sigTime › 0))
        {
            
pult_bit error_bit;
            if ((
sigTime › 2100) && (sigTime ‹ 2500) && (pulseTime › 1000) && (pulseTime ‹ 1200))//старт бит
            
{
                
cnt 0;
                
pult_bit start_bit;
                
pult_state PULT_NONE;
            }
            else if ((
sigTime › 100) && (sigTime ‹ 200))
            {
                if ((
pulseTime › 350) && (pulseTime ‹ 600))
                {
                    
pult_bit one_bit;
                }
                else if ((
pulseTime › 100) && (pulseTime ‹ 200))
                {
                    
pult_bit zero_bit;
                }
                else if ((
pulseTime › 23000) && (pulseTime ‹ 25000))
                {
                    
pult_bit repeat_bit;
                    
pult_state PULT_REPEAT_KEY;
                    
SendPacketToUSB(13);
                }
            }                
                
            
sigArr[cnt] = sigTime;
            
testArr[cnt] = pulseTime;
                
            if ((
pult_bit == one_bit) || (pult_bit == zero_bit))
            {
                if ((
cnt ›= 1) && (cnt ‹= 8))
                {
                    
pult_a1 = (pult_a1 ‹‹ 1);
                    
pult_a1 = (pult_a1 pult_bit);
                }
                else if ((
cnt ›= 9) && (cnt ‹= 16))
                {
                    
pult_a2 = (pult_a2 ‹‹ 1);
                    
pult_a2 = (pult_a2 pult_bit);
                }
                else if ((
cnt ›= 17) && (cnt ‹= 24))
                {
                    
pult_c1 = (pult_c1 ‹‹ 1);
                    
pult_c1 = (pult_c1 pult_bit);
                }
                else if ((
cnt ›= 25) && (cnt ‹= 32))
                {
                    
pult_c2 = (pult_c2 ‹‹ 1);
                    
pult_c2 = (pult_c2 pult_bit);
                }
                if (
cnt == 32)//принят весь код
                
{
                    
pult_state PULT_PRESS_KEY;
                    
SendPacketToUSB(13);
                }                    
            }
            if (
isTimeout == 0)
            {
                
cnt++;
            }
            else
            {
                
cnt 0;
                
isTimeout 0;
            }
        }
        else
        {
            if (
cnt › 100)
                
printf_P(PSTR("cnt › 100\n\r"));
        }
    }
        
    
//обнуляем таймер
    
tim0_ovf_cnt 0;
    
TCNT0 0;

Сообщение от Flopix Посмотреть сообщение
таймер будет использоваться и для других задач
Сорри, я ж не телепат...
miwutka, определитесь с протоколом пульта для начала.
http://www.google.ru/url?sa=t&rct=j&...-x27Tg&cad=rjt
omercury вне форума  
Сказали "Спасибо" omercury
miwutka (26.08.2012)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Декодер RC5 vmax1987 Микроконтроллеры, АЦП, память и т.д 38 25.08.2010 22:26
RC5 transmitter Saadov Микроконтроллеры, АЦП, память и т.д 12 22.12.2008 21:08
Приемник RC5 в малом корпусе? Muzicant Микроконтроллеры, АЦП, память и т.д 1 17.02.2008 11:57
Совмещение динамической индикации и приема команд RC5 megAdriVeR Микроконтроллеры, АЦП, память и т.д 22 24.07.2007 21:18
Декодирование команд RC5 R_V_A Микроконтроллеры, АЦП, память и т.д 10 20.12.2006 19:52


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


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