Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
29.12.2008, 11:12
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
А вот еще загвостка
Код:
|
void transmit_IR(unsigned char data) // пердача данных по ИК порту
{
// инициализация порта светодиода
DDRD.5=1; // порт на выход
PORTD.5=0; // светодиод погашен
#asm("cli")
// Старший бит передается первым
PORTD.5=1;
if(data&0x80) delay_us(t1*1000); else delay_us(t0*1000); // 7
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x40) delay_us(t1*1000); else delay_us(t0*1000); // 6
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x20) delay_us(t1*1000); else delay_us(t0*1000); // 5
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x10) delay_us(t1*1000); else delay_us(t0*1000); // 4
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x08) delay_us(t1*1000); else delay_us(t0*1000); // 3
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x04) delay_us(t1*1000); else delay_us(t0*1000); // 2
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x02) delay_us(t1*1000); else delay_us(t0*1000); // 1
PORTD.5=0;
delay_us(t_int*1000);
PORTD.5=1;
if(data&0x01) delay_us(t1*1000); else delay_us(t0*1000); // 0
PORTD.5=0;
#asm("sei")
// деинициализация порта светодиода
DDRD.5=0; // порт на вход
PORTD.5=0; // pull-up disable
}
Не фига не зажигается когда ставишь вместо delay_us delay_ms не знаю чем они отличаются _us (мкс), а _ms (мс)? |
|
|
|
|
05.01.2009, 01:13
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Господа всех с Новым годом,творческих Вам успехов и
удачи.
Вот отлаженная функция read_IR приема байта по ИК (в предыдущих были ошибки)
Прикрепленный файл: 6824819.rar
|
|
|
|
30.01.2009, 11:14
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо за поздравления и за файлик отдельное. Почти получилось только вот в одном месте проверка не проходит вываливаемся за пределы значений ни фига вкурить не могу осциллограф показывает что длина импульса около 10мсек т.е. мы должны пройти в ворота от 6 до 12 заданные а мы блин в них не входим с чем это может быть связано (просто я не могу понять как работает таймер что в одном случае мы проходим а в другом нет хотя этот осциллограф показывает что импульсы около 10 мсек) вот повторяца начал.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:54.
|
|