Технический форум по робототехнике.
yak-40 » 29 сен 2009, 15:31
DiNoZawR писал(а):Если можно дайте код на си.
Есть же в Wiki проект ИК бампера с кодом.
Может стоит там посмотреть?
DiNoZawR » 29 сен 2009, 16:13
Вот код.
Но что странно (для меня
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
). Когда в протеусе проверяю частоту сигнала с пина d5 она какаято странная.
По идее при таких задержках (16 мкс), должна частота быть 30 kHz.
А она, как я понял, всего 3700 герц.
- Код: Выделить всё • Развернуть
while (1)
{
PORTD.5 = 1;
delay_us(16);
PORTD.5 = 0;
delay_us(16);
};
Да не халявщик я. Просто плохо во всем этом разбираюсь. Я вообще программист изначально
Добавлено спустя 6 минут 22 секунды:А судя по осциллографу задержки вообще 130 мкс.
- Вложения
-
![osc.JPG (103.08 КиБ) Просмотров: 1286 osc.JPG](./download/file.php?id=11281&t=1&style=9&sid=30ae9baa4ac4f62401202a7a7f662445)
-
![prot.JPG (51.51 КиБ) Просмотров: 1290 prot.JPG](./download/file.php?id=11280&t=1&style=9&sid=30ae9baa4ac4f62401202a7a7f662445)
galex1981 » 29 сен 2009, 16:27
А частоту кварца кто будет указывать? Причем и в программе, и в свойстве самой модели МК
DiNoZawR » 29 сен 2009, 16:35
Спасибо! Просто в проге еще не разобрался.
Я вообще в CVAVR делаю. Там вроде при создании проекта указывается частота кварца.
galex1981 » 29 сен 2009, 16:41
Там указывается, и в Протеусе по-умолчанию тоже какая то указывается - может глючить...
DiNoZawR » 29 сен 2009, 16:44
Прошил контроллер.
(указал в проге частоту)
Включаю. Диоды горят, но реакции ни на руку ни на лист бумаги нету.
Код такой собственно.
- Код: Выделить всё • Развернуть
while (1)
{
for(i=0; i<10; i++)
{
PORTD.5 = 1;
delay_us(17);
PORTD.5 = 0;
delay_us(17);
if(PIND.6 == 0) // на всекий случай и сюда поставил.
{
walk(1);
}
}
delay_us(500); //500 это исходя из того что между пачками задержка 14 тактов.
if(PIND.6 == 0)
{
walk(1);
}
};
galex1981 » 29 сен 2009, 16:54
По моему что то не то, частота скорее всего ниже, нужно осциллографом проверить
Добавлено спустя 1 минуту 52 секунды:
Какая хоть частота кварца?
DiNoZawR » 29 сен 2009, 17:06
Кварц на 8 MHz.
Померил выход с контроллера, тестером (тестер на больше 20KHz берет)
Показывает 3.45 kHz
![Sad :(](http://roboforum.ru/images/smilies/sad.gif)
galex1981 » 29 сен 2009, 17:10
Сделай ШИМ не в цикле а по таймеру - точнее во-первых, во вторых проще получить нужную частоту
yak-40 » 29 сен 2009, 17:23
DiNoZawR писал(а):Померил выход с контроллера, тестером (тестер на больше 20KHz берет)
Показывает 3.45 kHz
Осцилографом бы обычным посмотреть.
Yuraskas » 29 сен 2009, 17:44
Заранее извиняюсь за возможный бред...
DiNoZawR, как ты высчитал что тебе нужен период импульса в 34мкс? 1МГц/30кГц=34мкс - продолжительность одного импульса, правильно? Если так, то почему 1МГц, а не 8, как у твоего кварца...
DiNoZawR » 29 сен 2009, 19:13
Сделал через таймер. Вроде правильно)
Протеус показывает нормальную частоту.
Но на выходе все так же 3 с чемто.
- Код: Выделить всё • Развернуть
void wait(void){
TCNT1=0;
while(TCNT1<120){};
}
...
TCCR1A=0x00;
TCCR1B=0x01;
...
while (1)
{
PORTD.5 = 1;
wait();
PORTD.5 = 0;
wait();
if(PIND.6 == 0)
{
walk(1);
}
};
Добавлено спустя 3 минуты 14 секунд:Ну мне нужна частота 30 000 герц.
Это 30 000 за 1 секунду или 30 за 1 миллисекунду.
1 миллисекунда равна 1000 микросекунд.
1000/30 = 32 (примерно)
Добавлено спустя 1 час 25 минут 26 секунд:Интересная вещь.
Если в протеусе не указывать частоту кварца, то на выходе частота будет как раз 3.4-3.8
Я в коде указал частоту
- Код: Выделить всё • Развернуть
#define F_CPU 8000000
Это верно? Может что-то еще нужно?
EdGull » 29 сен 2009, 19:55
а у тебя мега на какой частоте работает?
DiNoZawR » 29 сен 2009, 20:05
Кварц я к ней подключил на 8 MHz.
В общем я проверил. Что с кварцем что без все равно она такую же частоту на выход выдает.
EdGull » 29 сен 2009, 20:11
и правильно выдает, потому как я понимаю что в фусибитах ты этот кварц не включил.
т.е. реально у тебя сейча смега работает на внутренем 1МГц
така город свой заполни
или не читай что я тебе тут пишу.
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)