roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 02:38

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: 36khz на микропаскале помогите...
СообщениеДобавлено: 05 май 2007, 16:12 
Не в сети

Зарегистрирован: 30 мар 2007, 15:00
Сообщения: 80
Откуда: litva
Skype: bloodaxe777
прог. языки: pascal, delphi, C, ( basic, asm)-со словарём.
уважаемый форум.
Как на микропаскале роботат с тсоп сенсороми  т.е как наставит таимер на 36khz :(  :( ?ну не как неполучаетса.
помогите...благадорю..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 май 2007, 16:33 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
к форуму  бесполезно обращатся
это машина бездушная и она тебе ничего не ответит :)
лучше спрашивай у форумчан или у великого ALL


а вобще надо калькулятор взять и посчитать
один раз в 14 микросекунд должен срабатывать таймер


как там в паскале это будет выглядеть я незнаю но на Си и без таймеров это
выглядит так
Код:
void send(void)
{
for(i=0;i<14;i++)  // количество импульсов минимум 10 но для надёжности я  думаю надо больше, но не больше 70
хотя у меня и с 14 всё отлично работает
{
PORTC.2 = 0;  // начало импульса
delay_us(14);  // задержка чтоб получить 36 кГц
PORTC.2 = 1;  // конец  импульса
delay_us(14);
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 май 2007, 19:27 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Это я бы сказал неграмотный код, тут нужно использовать таймеры, как на паскале это писать я не знаю, но на Си юзаю. смысл примерно такой:
Код:
настраиваем TIMSK и TCCRx на соответствующий таймер
подсчитываем какую частоту нам нужно получить и выставляем TCNTx
пишем теперь в прерывании(в ВинАВР это так SIGNAL(SIG_OVERFLOWx) - это при переполнении будет выполнено прерывание)
Теперь в нем пишем код, можно написать PORTx ~=&0xXX при этом выставив DDRx, и на эти ножки таким образом будет подаваться сигнал. Или можно еще проще, выбрать режим работы таймера CTC(вроде) и управлять соответствующей ножкой МК подключенной к этому таймеру, и при переполнении или совпадении будет ножка менять состояние, то есть теже импульсы. Отличие от варианта Мура в том что это выполняется на "заднем плане" и не мешает выполнению программы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 май 2007, 19:41 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
[off]а у меня программе не мешает ни капли=) даже наоборот помогает
это процедура, и вызывается только тогда когда нужна =)

например если робот стоит на месте или управляется в ручную
когда мне совершенно не нужны бамперы я не буду вызывать эту процедуру[/off]
Цитата:
[off]Это я бы сказал неграмотный код[/off]

[off]а почему неграмотный?? =/[/off]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 май 2007, 19:47 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Вопервых экономия памяти: ты будешь вызывать функцию кучу раз и хранение такой функции занимает несколько больше место чем в прерывании.
Воторых чтобы запустить такое прерывание достаточно выставить одно значение в регистре и также можно его остановить и это занимает меньше памяти и скорости.
Втретьих ты когда будешь выполнять действия по таймеру сможешь за это(допустим) короткое время выполнить еще какиенибудь операции, например остановка другово таймера и тд и тп. Понятно?
А не грамотный код это я имел ввиду вышеперечисленное. Но я нивкоем случае не хотел говорить что ты не умеешь писать проги, код выполнен синтаксически правиильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 май 2007, 20:10 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
Сергей писал(а):
[off]Вопервых экономия памяти: ты будешь вызывать функцию кучу раз и хранение такой функции занимает несколько больше место чем в прерывании.
Воторых чтобы запустить такое прерывание достаточно выставить одно значение в регистре и также можно его остановить и это занимает меньше памяти и скорости.
Втретьих ты когда будешь выполнять действия по таймеру сможешь за это(допустим) короткое время выполнить еще какиенибудь операции, например остановка другово таймера и тд и тп. Понятно?
А не грамотный код это я имел ввиду вышеперечисленное. Но я ни в коем случае не хотел говорить что ты не умеешь писать проги, код выполнен синтаксически правиильно.[/off]

[off]
гы ну за синтаксиком компилятор следит, за синтаксис я не опасаюсь=)
а за пояснение спасибо

имхо на этой стадии проектирования я ооочень далёк от вопросов экономии памяти и ресурсов
а я накарябал так как мне самому понятней=)

кстати там время совсем и не маленькое... 280 микросекунд на процедуру это вам не хухры мухры =)
тем более что для надёжности надо 2 раза процедуру вызывать а это уже в сумме с паузой 500 мкс на отдых тсопа
будет 0.001 секунды ...[/off]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 май 2007, 20:28 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Самое главное это тебе понятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 май 2007, 10:35 
Не в сети

Зарегистрирован: 04 апр 2007, 20:00
Сообщения: 3
Откуда: Таганрог
Уважаемый bloodaxe, а какой версией паскаля пользуетесь и есть ли у Вас к ней keygen? Был бы очень признателен если бы Вы выложили keygen где нибудь с соответствующей версией паскаля.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 май 2007, 13:17 
Не в сети

Зарегистрирован: 30 мар 2007, 15:00
Сообщения: 80
Откуда: litva
Skype: bloodaxe777
прог. языки: pascal, delphi, C, ( basic, asm)-со словарём.
вот проблема в том что  на баскомеАВР настроика 36кhz проблем не сотворяет ,так как такои код:
Код:
for a=1 to 200
led=1
waitms=14
led1=0
waitms=13
loop

в полне роботает а вот на микропаскале непашет вот и всё а как таймеры на паскале вклучат то нигде не нахожу.
а что касаетса кеыген дляп паскаля так первый запрос в гоогле и всё:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 май 2007, 13:21 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
Код:
for a=1 to 200
led=1
waitms=14
led1=0
waitms=13
loop

ну это неправильный код =)
надо
Код:
for a = 1 to 10 //достаточно 10-15 , но не больше 70 раз!!!!

во вторых чё это?
включаете один лед а выключаете другой
Код:
led=1
led1=0


вы бы скинули сюда то что у вас не работает а мы бы посмотрели


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 май 2007, 14:33 
Не в сети

Зарегистрирован: 30 мар 2007, 15:00
Сообщения: 80
Откуда: litva
Skype: bloodaxe777
прог. языки: pascal, delphi, C, ( basic, asm)-со словарём.
nu vot kod progi:
Код:
program button_test;
var
a:integer;
procedure ir_led; //procedura ir_leda na 36khz.
begin
for a:=1 to 200 do
begin
portd.4:=1;
delay_us(14);
portd.4:=0;
delay_us(14);

end;

end;

begin
DDRD := $FF; // portd vyxod
PORTD := $00;// kidajem 0 na wes portd.
portb.0:=$FF; //podciazka na tsop1
portb.1:=$ff; // podciazka na tsop2
ir_led;

while TRUE do
begin
if Button(PORTB,0,0,0) or Button(PORTB,1,0,0) then // jesli liuboi tsop srabotal togda=>

portd.2:=1 // wkliuciajem portd.2

else // jesli knopka nenazata
begin
portd.2:=0; // vykliuciajem portd.2
ir_led; //i vkliuciajem ir_led

end;
end;
end.

===========================================
a eto kod na baskome a zdes vot wsio pashet:)

Код:
$crystal = 1000000
$regfile = "ATtiny2313.dat"
$lib "mcsbyte.lbx"
Config Pind.2 = Output
Config Pind.1 = Output
Config Pind.4 = Output : Ir_led Alias Portd.4
Config Pinb.1 = Input
Config Pinb.0 = Input
Dim Temp As Byte
Set Portb.0
Set Portb.1
1:

For Temp = 1 To 200
Ir_led = 1
Waitus 14
Ir_led = 0
Waitus 14
Next
S:
Do
Debounce Pinb.0 , 0 , R : Debounce Pinb.1 , 0 , L
Debounce Pinb.0 , 1 , 1 : Debounce Pinb.1 , 1 , 1
R:
Set Portd.2
Wait 2
Reset Portd.2
Goto S
L:
Set Portd.1
Wait 2
Reset Portd.1
Goto S
Loop
End


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 май 2007, 14:08 
Не в сети

Зарегистрирован: 30 мар 2007, 15:00
Сообщения: 80
Откуда: litva
Skype: bloodaxe777
прог. языки: pascal, delphi, C, ( basic, asm)-со словарём.
NAROD nu pomogite ze aaa?
Танслит на форуме запрещен. Сергей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 май 2007, 15:11 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
[off]посмотрел
имхо по алгоритму всё должно работать
проверить не могу ибо на си пишу
по тому не отвечаю
[/off]
это не компилится или не работает в конечном устройстве???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 май 2007, 21:26 
Не в сети
Правохранитель
Аватара пользователя

Зарегистрирован: 23 фев 2007, 02:23
Сообщения: 197
Откуда: Зеленоград
[off]Сергей, пусть покупают русскую клаву? В литве же он...[/off]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 май 2007, 22:08 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
[off]Ну дык предыдущие сообщения на русском писал он.[/off]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO