roboforum.ru

Технический форум по робототехнике.

ПомоЩЪ =)

ПомоЩЪ =)

pL » 14 ноя 2006, 14:17

Господа! Я новичоГ  :) , решил собрать простого робота по схеме в журнале радио. Все детали есть , вот только МК у меня не AT90S2313-10PI , а ATmega16-16PU , леплю ножку в ножку  :D  , вот только AVR123 предупредил что регистры могут не подойти  :( . Прошу Вас
помоч мне по написанию програмки или переделки родной (в "радио" , написанна на бэйесике) на Си ... Посвещение меня в новых конструктивных идеях поддерживается !!! :wink:  :)
ЗЫ Читал курс.. (многое вылетело.. :( ) , но в си так и не разобралсА....
Вложения
2.gif

avr123.nm.ru » 14 ноя 2006, 14:37

тогда вам нужно взять БЭЙСИК который указан в статье и откомпилить в нем прогу чтоб убедится что все ОК.

затем заменить хидер - XXXXdef.dat - на тот что для Меги16 и возможно в свойствах проекта указать мегу16 и снова компилировать.

если будут ошибки то смотреть в чем дело.
Последний раз редактировалось avr123.nm.ru 14 ноя 2006, 14:41, всего редактировалось 1 раз.

avr123.nm.ru » 14 ноя 2006, 14:40

Если вы выложите тут ТЕКСТ программы (скачав на сайте РАДИО)  то думаю вам быстрей помогут.

pL » 14 ноя 2006, 23:01

Воть.  :D

$crystal = 4000000            'Частота кварца ZQ1, Гц
$regfile = "2313def.dat"      'Подключаем описание МК
$lib "mcsbyte.lbx"            'Подключаем библиотеку функций
Config Rc5 = Pind.0           'PD0 - вход RC-5
Config Pinb.7 = Output        'PB7 - выход
Config Pinb.6 = Input         'PB6 - вход
Config Pinb.5 = Input         'PB5 - вход
Config Pinb.4 = Output        'PB4 - выход
Config Pinb.3 = Output        'PB3 - выход
Config Pinb.2 = Output        'PB2 - выход
Config Pinb.1 = Output        'PB1 - выход
Config Pinb.0 = Output        'PB0 - выход
Config Pind.6 = Output        'PD6 - выход
Dim Address As Byte           'Объявляем переменные
Dim Command As Byte
Dim A As Byte
Enable Interrupts             'Разрешаем прерывания
Set Portb.0                   'Включаем HL1
Waitms 100                    'и через 100 мс
Reset Portb.0                 'выключаем его.
Sound Portd.6 , 50 , 800      'Подаем зв.сигнал
1:                            'Основной цикл программы
Do
Debounce Pinb.5 , 0 , Prl     'Сработал SF2 -> на Prl
Debounce Pinb.6 , 0 , Prr     'Сработал SF1 -> на Prr
Getrc5(address , Command)     'Прием команды ПДУ
If Address = 0 Then           'Затем – ее выполнение
Command = Command And &B01111111
If Command = 12 Then         'Выключаем все (клавиша ОN-OFF)
For A = 0 To 7
 Reset Portb.a : Reset Portd.a
Next A
End If
If Command = 2 Then          'Малый вперед (клавиша 2)
 Set Portb.4 : Set Portb.1   'Включаем М1, М2 вперед
 Waitms 45                   'и через 45 мс выключаем
 Reset Portb.4 : Reset Portb.1
End If
If Command = 6 Then          'Малый назад (клавиша 6)
 Set Portb.2 : Set Portb.3   'Включаем М1, М2 назад
 Waitms 45                   'и через 45 мс выключаем
Reset Portb.2 : Reset Portb.3
End If
If Command = 7 Then          'Направо (клавиша 7)
 Set Portb.4 : Set Portb.2   'Включаем M1 назад, М2 вперед
 Waitms 45                   'и через 45 мс выключаем
 Reset Portb.4 : Reset Portb.2
End If
If Command = 5 Then          'Налево (клавиша 5)
 Set Portb.3 : Set Portb.1   'Включаем М1 вперед, М2 назад
 Waitms 45                   'и через 45 мс выключаем
 Reset Portb.3 : Reset Portb.1
End If
If Command = 32 Then         'Средний вперед (клавиша P+)
 Set Portb.4 : Set Portb.1   'Включаем М1, М2 вперед
 Waitms 180                  'и через 180 мс выключаем
 Reset Portb.4 : Reset Portb.1
 Set Portb.2 : Set Portb.3   'Тормозим в течение 20 мс
 Waitms 20
Reset Portb.2 : Reset Portb.3
End If
If Command = 33 Then         'Средний назад (клавиша P-)
 Set Portb.2 : Set Portb.3   'Включаем М1, М2 назад
 Waitms 180                  'и через 180 мс выключаем
 Reset Portb.2 : Reset Portb.3
 Set Portb.4 : Set Portb.1   'Тормозим в течение 20 мс
 Waitms 20
 Reset Portb.4 : Reset Portb.1
End If
If Command = 16 Then         'Резко направо (клавиша VOL+)
 Set Portb.4 : Set Portb.2   'Включаем M1 назад, М2 вперед
 Waitms 80                   'и через 80 мс выключаем
 Reset Portb.4 : Reset Portb.2
 Set Portb.3 : Set Portb.1   'Тормозим в течение 20 мс
 Waitms 20
 Reset Portb.3 : Reset Portb.1
End If
If Command = 17 Then         'Резко налево (клавиша VOL-)
 Set Portb.3 : Set Portb.1   'Включаем M1 назад, М2 вперед
 Waitms 80                   'и через 80 мс выключаем
 Reset Portb.3 : Reset Portb.1
Set Portb.4 : Set Portb.2    'Тормозим в течение 20 мс
Waitms 20
Reset Portb.4 : Reset Portb.2
End If
If Command = 4 Then          'Полный вперед (клавиша 4)
 Set Portb.4 : Set Portb.1   'Включаем М1, М2 вперед
 Waitms 250                  'и через 250 мс выключаем
 Reset Portb.4 : Reset Portb.1
End If
If Command = 8 Then          'Полный назад (клавиша 8)
 Set Portb.2 : Set Portb.3   'Включаем М1, М2 назад
 Waitms 250                  'и через 250 мс выключаем
 Reset Portb.2 : Reset Portb.3
End If
If Command = 1 Then          'Включить М3 (клавиша 1)
 Set Portb.7
End If
If Command = 9 Then          'Выключить М3 (клавиша 9)
 Reset Portb.7
End If
If Command = 3 Then          'Включить HL1 (клавиша 3)
Set Portb.0
End If
If Command = 10 Then         'Выключить HL1 (клавиша -/--)
 Reset Portb.0
End If
If Command = 13 Then         'Звуковой сигнал (клавиша MUTE)
Sound Portd.6 , 300 , 600
End If
If Command = 0 Then          'Демонстрация (клавиша 0)
 Sound Portd.6 , 300 , 600   'Подаем звуковой сигнал
 Set Portb.0 : Set Portb.7   'Включаем HL1 и M3
 Waitms 500
 Reset Portb.7               'Через 500 мс выключаем M3
 Set Portb.3 : Set Portb.1
 Waitms 1000                 'и 1000 мс поворачиваем налево
 Reset Portb.3 : Reset Portb.1 : Set Portb.4 : Set Portb.2
 Waitms 1000                 ' еще 1000 мс поворота направо
 Reset Portb.4 : Reset Portb.2 : Set Portb.4 : Set Portb.1
 Waitms 300                  '300 мс вперед
 Reset Portb.4 : Reset Portb.1 : Set Portb.2 : Set Portb.3
 Waitms 300                  '300 мс назад
 Reset Portb.2 : Reset Portb.3 : Set Portb.4 : Set Portb.1
 Waitms 300                  'Еще 300 мс вперед
 Reset Portb.4 : Reset Portb.1 : Set Portb.2 : Set Portb.3
 Waitms 300                  'и 300 мс назад.
 Reset Portb.2 : Reset Portb.3
 Reset Portb.0               'Выключаем HL1
 Sound Portd.6 , 200 , 600   'Подаем звуковой сигнал
End If
End If
Loop                          'Конец основного цикла
Prl:                          'После срабатывания SF2
Set Portb.2 : Set Portb.3     '200 мс движемся назад
Waitms 200
Reset Portb.2 : Reset Portb.3
Waitms 50                     'Через 50 мс подаем зв. сигнал
Sound Portd.6 , 70 , 800
Waitms 40                     'и еще через 40 мс поворачиваем
Set Portb.3 : Set Portb.1     'налево в течение 100 мс
Waitms 100
Reset Portb.3 : Reset Portb.1
Goto 1                        'К началу основного цикла
Prr:                          'После срабатывания SF1
Set Portb.2 : Set Portb.3     '200 мс движемся назад
Waitms 200
Reset Portb.2 : Reset Portb.3
Waitms 50                     'Через 50 мс подаем зв. сигнал
Sound Portd.6 , 70 , 800
Waitms 40                     'и еще через 40 мс поворачиваем
Set Portb.4 : Set Portb.2     'направо в течение 100 мс
Waitms 100
Reset Portb.4 : Reset Portb.2
Goto 1                        'К началу основного цикла
End

avr123.nm.ru » 15 ноя 2006, 01:25

вот начал на Си переписывать.  попробуй продолжить, может кто еще подключится.
Вложения
m16.rar
(2.83 КиБ) Скачиваний: 55


cron
Rambler\'s Top100 Mail.ru counter