Помогите с программой ))
|
|
Krish | Дата: Воскресенье, 17.04.2011, 15:49 | Сообщение # 16 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Блин хочется что нибудь интересное спаять)) кроме робота)) В столе у меня деталей на 10 роботов хватит )) а идей нет(Добавлено (17.04.2011, 15:48) --------------------------------------------- короче, не могу подключить ДД.. :( http://robotsspace.ucoz.ru/publ/7-1-0-50 вот ДД Вот программа... Code $regfile = "m16def.dat" ' файл спецификации Меги16 $crystal = 16000000 ' указываем на какой частоте будем работать
'---------------------------------------------------------------------------- Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Pinc.4 = Output : Drl Alias Portc.4 'ногу сконфигурировали как выход и обозвали Drl Config Pinc.5 = Output : Drr Alias Portc.5 'ногу сконфигурировали как выход и обозвали Drr Config Pinc.3 = Output : Dre Alias Portc.3 'ногу сконфигурировали как выход и обозвали Dre Config Pinc.2 = Output : Drw Alias Portc.2 'ногу сконфигурировали как выход и обозвали Drw '----------------------------------------------------------------------------
Dim Speed As Byte Speed = 200 ' указываем скорость робота
Config Rc5 = Pinc.7 Enable Interrupts Dim Address As Byte , Command As Byte Print "Start" ' выводим в терминал отладочное сообщение
Do Gosub Прием_rc5 If Command = 255 Then Gosub Стоп Waitms 0 Elseif Command = 32 Then Gosub Прямо Waitms 0 Elseif Command = 33 Then Gosub Назад Waitms 0 Elseif Command = 17 Then Gosub Влево Waitms 0 Elseif Command = 16 Then Gosub Вправо Waitms 0 End If Loop
Прием_rc5: Getrc5(address , Command) If Address <> 255 And Command <> 255 Then Command = Command And &B01111111 'Print Chr(12); ' выводим в терминал символ 'Print "Address - " ; Address; ' выводим в терминал адрес 'Print "Command - " ; Command; ' выводим в терминал номер команды End If Return
Влево: Drl = 0 : Drr = 1 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed: Return
Вправо: Drl = 1 : Drr = 0 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed: Return
Прямо: Drl = 1 : Drr = 0 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed: Return
Назад: Drl = 0 : Drr = 1 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed: Return
Стоп: Drl = 0 : Drr = 0 : Dre = 0 : Drw = 0 : Pwm1b = 0 : Pwm1a = 0: Return Исправь плиз что не так, space, и напиши к какому порту ты что подключил)) Напиши плиз правильно, чтоб вопросов лишних не было... а то я не понимаю((Добавлено (17.04.2011, 15:49) --------------------------------------------- Мозг atmega16, у меня есть возможность подключения только к портам A и C :(
LacOS
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 16:00 | Сообщение # 17 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| Читай и разбирайся . Для управления одним мотором требуется 3 вывода. Тебе надо ещё 2 добавить вот так: Code Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Pinc.4 = Output : Drl Alias Portc.4 'ногу сконфигурировали как выход и обозвали Drl Config Pinc.5 = Output : Drr Alias Portc.5 'ногу сконфигурировали как выход и обозвали Drr Config Pind.4 = Output 'ногу ШИМа сконфигурировали как выход Config Pinc.3 = Output : Dre Alias Portc.3 'ногу сконфигурировали как выход и обозвали Dre Config Pinc.2 = Output : Drw Alias Portc.2 'ногу сконфигурировали как выход и обозвали Drw Config Pind.5 = Output Pd5 и Pd4 через эти выводы подаётся шим сигнал. Отмечается ка OC1A, OC1B
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 17:05 | Сообщение # 18 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Space, Я En1 и En2 контакты не ставил... Они нужны?
LacOS
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 17:07 | Сообщение # 19 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| если шим не собирался использовать, то убирай строки Code Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Code Dim Speed As Byte Speed = 200 ' указываем скорость робота И все такие строки: Code Pwm1b = Speed : Pwm1a = Speed:
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 17:08 | Сообщение # 20 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| А выводы En1 и En2 подсоедини на +5Вольт
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 17:39 | Сообщение # 21 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Если судить по твоей схеме то En1 и En2 соединён через резистор с "+" и также через резистор к "минусом" , для чего это? тоесть я так понимаю я подключаю En2, in3, in4 к одному мотору. En1, in1, in2 ко второму мотору? Если да, то тогда всё ясно...Добавлено (17.04.2011, 17:39) --------------------------------------------- И вот ещё, я подключал сервы по твоему примеру, вот статья: http://robotsspace.ucoz.ru/publ/podkljuchaem_servoprivod/8-1-0-67 Они не крутят:((( не знаю что делать.. питание подаю, порт мк живой
LacOS
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 17:43 | Сообщение # 22 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Вот короче: 1) ДД: 2) Платформа: 3) Мозг 4)RC5
LacOS
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 17:43 | Сообщение # 23 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| Quote (Krish) Если судить по твоей схеме то En1 и En2 соединён через резистор с "+" и также через резистор к "минусом" , для чего это? подтяжка так сделана. где-то видал похожую схему, по её примеру и собирал. Quote (Krish) тоесть я так понимаю я подключаю En2, in3, in4 к одному мотору. En1, in1, in2 ко второму мотору? Если да, то тогда всё ясно... да. проверяй правильно ли подключил серву. прога рабочая 100% ищи проблему в электронике
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 18:33 | Сообщение # 24 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Бываю подключаю питание на ДД и моторы левый самопроизвольно крутиться из за чего это? Схемы проверял нету ошибок... А вообще есть разница к какому порту подключать? я могу же в принципе серву к обсолютно любому порту поставить?Добавлено (17.04.2011, 18:33) ---------------------------------------------
Quote (Space) Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Pinc.4 = Output : Drl Alias Portc.4 'ногу сконфигурировали как выход и обозвали Drl Config Pinc.5 = Output : Drr Alias Portc.5 'ногу сконфигурировали как выход и обозвали Drr Config Pind.4 = Output 'ногу ШИМа сконфигурировали как выход Config Pinc.3 = Output : Dre Alias Portc.3 'ногу сконфигурировали как выход и обозвали Dre Config Pinc.2 = Output : Drw Alias Portc.2 'ногу сконфигурировали как выход и обозвали Drw Config Pind.5 = Output Смотри, М1: pinc.4 - in3 pinc.5 - in4 pind.4 - En2 М2: pinc.3 - in1 pinc.2 - in2 pind.5 - En1 Я так подключаю.
LacOS
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 19:19 | Сообщение # 25 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| Смотри, М1: pinc.4 - in3 pinc.5 - in4 +5в - En2 (шим не используешь, а значит на порт мк вешать не надо) М2: pinc.3 - in1 pinc.2 - in2 +5в - En1 Quote (Krish) А вообще есть разница к какому порту подключать? я могу же в принципе серву к обсолютно любому порту поставить? на любой порт
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 19:39 | Сообщение # 26 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Я фьюзы на атмегу 16 не прошивал, мож из за этого серва не работает? Добавлено (17.04.2011, 19:39) --------------------------------------------- Вот прога моя для управления c RC5 ошибок надеюсь тут нет? Code $regfile = "m16def.dat" ' файл спецификации Меги8 $crystal = 16000000 ' указываем на какой частоте будем работать
'---------------------------------------------------------------------------- Config Pinc.7 = Output : Drl Alias Portc.7 'ногу сконфигурировали как выход и обозвали Drl Config Pinc.6 = Output : Drr Alias Portc.6 'ногу сконфигурировали как выход и обозвали Drr Config Pinc.5 = Output : Dre Alias Portc.5 'ногу сконфигурировали как выход и обозвали Dre Config Pinc.4 = Output : Drw Alias Portc.4 'ногу сконфигурировали как выход и обозвали Drw '----------------------------------------------------------------------------
Dim Speed As Byte Speed = 200 ' указываем скорость робота
Config Rc5 = Pina.0 Enable Interrupts Dim Address As Byte , Command As Byte Print "Start" ' выводим в терминал отладочное сообщение
Do Gosub Прием_rc5 If Command = 255 Then Gosub Стоп Waitms 0 Elseif Command = 32 Then Gosub Прямо Waitms 0 Elseif Command = 33 Then Gosub Назад Waitms 0 Elseif Command = 17 Then Gosub Влево Waitms 0 Elseif Command = 16 Then Gosub Вправо Waitms 0 End If Loop
Прием_rc5: Getrc5(address , Command) If Address <> 255 And Command <> 255 Then Command = Command And &B01111111 'Print Chr(12); ' выводим в терминал символ 'Print "Address - " ; Address; ' выводим в терминал адрес 'Print "Command - " ; Command; ' выводим в терминал номер команды End If Return
Влево: Drl = 0 : Drr = 1 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed: Return
Вправо: Drl = 1 : Drr = 0 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed: Return
Прямо: Drl = 1 : Drr = 0 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed: Return
Назад: Drl = 0 : Drr = 1 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed: Return
Стоп: Drl = 0 : Drr = 0 : Dre = 0 : Drw = 0 : Pwm1b = 0 : Pwm1a = 0: Return
LacOS
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 19:47 | Сообщение # 27 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| вот, на сколько правильно приём команд по RC5 каналу написан не знаю. дел не имел. Подключи светодиод на PORTB.1, в проге я тебе вписал его, после пришивания он должен загореться и потухнуть: Code $regfile = "m16def.dat" ' файл спецификации Меги8 $crystal = 16000000 ' указываем на какой частоте будем работать
'---------------------------------------------------------------------------- Config Pinc.7 = Output : Drl Alias Portc.7 'ногу сконфигурировали как выход и обозвали Drl Config Pinc.6 = Output : Drr Alias Portc.6 'ногу сконфигурировали как выход и обозвали Drr Config Pinc.5 = Output : Dre Alias Portc.5 'ногу сконфигурировали как выход и обозвали Dre Config Pinc.4 = Output : Drw Alias Portc.4 'ногу сконфигурировали как выход и обозвали Drw '----------------------------------------------------------------------------
Config Portb.1 = Output : Led Alias Portb.1
Config Rc5 = Pina.0
Dim Address As Byte , Command As Byte
Enable Interrupts
Led = 1 Waitms 500 Led = 0 Waitms 500
Do Gosub Прием_rc5 If Command = 255 Then Gosub Стоп Waitms 100 Elseif Command = 32 Then Gosub Прямо Waitms 100 Elseif Command = 33 Then Gosub Назад Waitms 100 Elseif Command = 17 Then Gosub Влево Waitms 100 Elseif Command = 16 Then Gosub Вправо Waitms 100 End If Loop
Прием_rc5: Getrc5(address , Command) If Address <> 255 And Command <> 255 Then Command = Command And &B01111111 End If Return
Влево: Drl = 0 : Drr = 1 Dre = 1 : Drw = 0 Return
Вправо: Drl = 1 : Drr = 0 Dre = 0 : Drw = 1 Return
Прямо: Drl = 1 : Drr = 0 Dre = 1 : Drw = 0 Return
Назад: Drl = 0 : Drr = 1 Dre = 0 : Drw = 1 Return
Стоп: Drl = 0 : Drr = 0 Dre = 0 : Drw = 0 Return
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 19:55 | Сообщение # 28 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Электронику проверил, всё должно работать... Добавлено (17.04.2011, 19:50) --------------------------------------------- Space, светодиод работает. Добавлено (17.04.2011, 19:51) --------------------------------------------- а можно чтобы он мигал )) Добавлено (17.04.2011, 19:55) --------------------------------------------- Я щас каждый порт проверю... если все будут работать, то дело в фьюзах... других вариантов нет:(
LacOS
|
|
|
|
Space | Дата: Воскресенье, 17.04.2011, 19:57 | Сообщение # 29 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
| не получится, чтоб он мигал нужно засунуть те строки что я вписал между новым циклом Code do Led = 1 Waitms 500 Led = 0 Waitms 500 loop но одновременно к сожалению два цикла работать не могут
|
|
|
|
Krish | Дата: Воскресенье, 17.04.2011, 20:31 | Сообщение # 30 |
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
| Серьезно, если я фьюзы не прошил из за этого проблем не может быть? Добавлено (17.04.2011, 20:31) --------------------------------------------- Нашёл проблемку... можно ДД подключить к разьему АДС port A?
LacOS
|
|
|
|