AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
25.08.2012, 13:50
|
|
Гражданин KAZUS.RU
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: RC5+atmega 8
miwutka, нормальная частота. Вторая задержка обычно не сильно по длительности отличается от первой.
Опишите в двух словах алгоритм подсчета первой и второй задержек.
|
|
|
|
25.08.2012, 13:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: RC5+atmega 8
Ну код взят с одного сайта где чувак пишет все работает чуть ли не под любой пульт )) До майна таймер остановлен
#define Tmin 40 //длинный промежуток
#define Tmax 68
#define TminK 22 //короткий промежуток
#define TmaxK 34
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
rc5_ti_stop(); //останавливаем таймер
rc5_cl_buf(); //очищаем буффер
TIMSK|=0x40; //разрешаем прерывания по входу
GIFR=0x40; //сбрасываем флаг прерывания (если произошло)
}
void rc5_cl_buf(void){ //очищаем буффер
char i = 0;
for (i=0; i‹14; i++){ RC5_buffer [i] = 0; }
}
void rc5_ti_stop(void){ //остановка таймера
TIMSK|=0x00;
TCCR0 = 0x00;
TCNT0 = 0;
sct_bit = 0;
}
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
Timer = TCNT0; //запоминаем значение счетчика
Timer_buffer [x] = Timer;
x++;
TCNT0 = 0; //обнуляем счетчик
not_korr = 1;
if(sct_bit==0){ a++;
TCCR0 = 0x04; //запускаем таймер (31.250 KHz)
RC5_buffer [sct_bit] = !PIND.2;//записываем в эл.массива
sct_bit++; //+1 к счётчику принятых битов
centre = 1;
}else{ b++;
if ((Timer›TminK)&&(Timer‹TmaxK)){c++; // проверка короткого промежутка
if (centre) {d++;
centre = 0;
not_korr = 0;
}else{ e++;
centre = 1;
RC5_buffer [sct_bit] = !PIND.2;
sct_bit++;
not_korr=0;
};
};
if ((Timer›Tmin)&&(Timer‹Tmax)){ f++;// проверка длинного промежутка
RC5_buffer [sct_bit] = !PIND.2;
sct_bit++;
not_korr = 0;
};
if (not_korr == 1) { g++; // если не попали ни в один из промежутков то
rc5_ti_stop(); //останавливаем таймер
rc5_cl_buf(); //очищаем буффер
};
if (sct_bit == 14){k++; // если бит последний то
rc5_ti_stop(); //останавливаем таймер
trigger = RC5_buffer [2]; //формируем переменную тригера
device = (RC5_buffer [3] ‹‹ 4)|(RC5_buffer [4] ‹‹ 3)|(RC5_buffer [5] ‹‹ 2)|(RC5_buffer [6] ‹‹ 1)|RC5_buffer [7]; //формируем адрес ПДУ
command = (RC5_buffer [8] ‹‹ 5)|(RC5_buffer [9] ‹‹ 4)|(RC5_buffer [10] ‹‹ 3 )|(RC5_buffer [11] ‹‹ 2)|(RC5_buffer [12] ‹‹ 1)|RC5_buffer [13]; //формируем команду
//выводим данные на дисплей
//digit_out[0]=command%10; //перевод для 1 цифры
// command=command/10; //подготовка
// digit_out[1]=command%10; //перевод для 2 цифры
GIFR=0x40; // сбрасываем флаг прерывания по входу INT0
};
};
}
вот в двух словах как работает... Прерывание на любой фронт. Есть переменные контрольные х,a,b,c,d,e,f,g,k, чтобы видеть какое условие сколько раз выполнилось.
x=68
a=34
b=34
c,d,e=0
f=1
g=33
k=0
|
|
|
|
25.08.2012, 13:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: RC5+atmega 8
это не весь код, но основа...
|
|
|
|
25.08.2012, 14:02
|
|
Гражданин KAZUS.RU
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: RC5+atmega 8
miwutka, или пишите свой алгоритм с нуля, я обязуюсь помочь советами, или спрашивайте у автора этого исходника.
Если в вашу задачу сейчас не входит развитие навыков программирования, то давайте я вам дам свой рабочий код, мне по нему во всяком случае проще будет советовать.
Контрольные переменные с именами х,a,b,c,d,e,f,g,k... это высший пилотаж оформления кода, который выкладываешь в паблик.
Последний раз редактировалось Flopix; 25.08.2012 в 14:24.
|
|
|
|
25.08.2012, 14:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,982
Сказал спасибо: 0
Сказали Спасибо 4,941 раз(а) в 2,370 сообщении(ях)
|
Re: RC5+atmega 8
Сообщение от miwutka
|
Лог анализатор это тот же осцилограф думаю ))
|
смеется тот, кто не задает таких вопросов (пост #46) чтоб измерять форму этого сигнала, таймер должен минимум раз в 5-10 быстрее работать, чем измеряемая частота
Сообщение от miwutka
|
А за бабки можно всё что угодно. У нас в Запорожье всё и сводят токо к баблу...
|
дык без бабла, милок, писяй под кустиком, пока не сцапают ![Прикольно](images/smilies/icon_wink3.gif)
полез в электронику - раскошеливайся на инструмент, хотя б такой
|
|
|
|
25.08.2012, 14:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: RC5+atmega 8
Сообщение от jump
|
смеется тот, кто не задает таких вопросов (пост #46) чтоб измерять форму этого сигнала, таймер должен минимум раз в 5-10 быстрее работать, чем измеряемая частота
дык без бабла, милок, писяй под кустиком, пока не сцапают ![Прикольно](images/smilies/icon_wink3.gif)
полез в электронику - раскошеливайся на инструмент, хотя б такой
|
понял... ну значит позже надобудет...
|
|
|
|
25.08.2012, 14:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: RC5+atmega 8
Сообщение от Flopix
|
miwutka, или пишите свой алгоритм с нуля, я обязуюсь помочь советами, или спрашивайте у автора этого исходника.
Если в вашу задачу сейчас не входит развитие навыков программирования, то давайте я вам дам свой рабочий код, мне по нему во всяком случае проще будет советовать.
Контрольные переменные с именами х,a,b,c,d,e,f,g,k... это высший пилотаж оформления кода, который выкладываешь в паблик.
|
Я вообще хочу научиться программить, но может по вашему коду легче будет понять что и как, и пойму свои ошибки??.... В любом случае под каждый пульт прийдется плюс/минус переделывать код.....
|
|
|
|
25.08.2012, 14:47
|
|
Гражданин KAZUS.RU
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: RC5+atmega 8
Вот мой код. Там правда много лишнего так как он отсылает данные по USB на ПК. Но думаю разберетесь. Весь прием кода рабатает в подпрограммах прерывания. Да обратите внимания что частота таймера у меня установлена выше чем в вашем примере.
Из моего примера вам понадобятся функции:
//подпрограмма прерывания по переполнению Timer0
ISR(TIMER0_OVF_vect)
//подпрограмма прерывания по INT1
ISR(SIG_INTERRUPT1)
Ну и настройки таймера из void init_devices(void) возьмите.
Последний раз редактировалось Flopix; 25.08.2012 в 14:50.
|
|
|
|
25.08.2012, 14:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: RC5+atmega 8
Сообщение от miwutka
|
Ну код взят с одного сайта где чувак пишет все работает чуть ли не под любой пульт )) До майна таймер остановлен
|
Вообще не моя тема, но глаз споткнулся на портовом вопле грузчиков - "МАЙНА". "Вира" тоже из их лексикона. Главный модуль программы звучит МЭЙН, пишется main. Вы же не озвучиваете ТАБЛИЦА фразой ТАБЛЕ ... ![Улыбка](images/smilies/icon_smile.gif)
Ну и не мешало бы тегами обрамления кода пользоваться. Иначе просто не хочется в текст программы вникать.
Не обижайтесь, легкий комментарий. Я за подобное в свой адрес благодарю... (не напрашиваюсь)
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
25.08.2012, 15:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: RC5+atmega 8
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 20:00.
|
|