roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 02 дек 2008, 16:13 
Не в сети
Аватара пользователя

Зарегистрирован: 10 янв 2005, 12:18
Сообщения: 189
Откуда: Санкт-Петербург
Проблема с программой. Программу скачал из какого-то проекта...
Програма на BASCOME. Запускаю её в симуляторе, и на 57 строке висит, то есть не совсем висит, просто выбирает только движение вперед...
симулирую сигнал от бампера, переходит на отъезд засвечивается 106 строка и опять висяк. К выполнению основной программы не возвращается. Просто тупо висит.
Такое чувство что что-то с таймерами... слишком долго длятся 2,5 сек.
вот сама прога
Код:
' Программа произвольного движения для робота "RoBi"
' RoBi.bas - главный файл проекта , в котором реализована программа
' мобильного робота;
' Автор Space:
' -программа для мк ATmega16
' -используется кварц на 16мГц
' -компилятор Bascom AVR
' Программа 2008 для робота "RoBi" - http://www.robptsspace.ucoz.ru
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$regfile = "m16def.dat"                                     'используем мк ATmega16
$crystal = 16000000                                         'частота кварцевого резонатора 16mHz
$lib "lcd4.lbx"                                             'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
$baud = 19200                                               'Скорость COM-порта
' указываем конфигурацию подключения дисплея к портам МК
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2                                         'используем дисплей на 2 строчки по 16 знакомест в каждой

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pina.0 = Output : Fr Alias Porta.0                   'PA 0 устанавливаем на выход и присваиваем имя Fr(вперёд-вправо);
Config Pina.1 = Output : Br Alias Porta.1                   'PA 1 устанавливаем на выход и присваиваем имя Br(назад-вправо);
Config Pina.2 = Output : Bl Alias Porta.2                   'PA 2 устанавливаем на выход и присваиваем имя Bl(назад-влево);
Config Pina.3 = Output : Fl Alias Porta.3                   'PA 3 устанавливаем на выход и присваиваем имя Fl(вперёд-влево).
Config Pind.4 = Output                                      'ногу ШИМа левого движка сконфигурировали как выход
Config Pind.5 = Output                                      'ногу ШИМа правого движка  сконфигурировали как выход

Config Pind.2 = Input : Bumper_r Alias Pind.2               'PD 0 устанавливаем на вход и присваиваем имя Bumper_r(правый бампер);
Config Pind.3 = Input : Bumper_l Alias Pind.3               'PD 1 устанавливаем на вход и присваиваем имя Bumper_l(левый бампер).

Config Pinc.2 = Input : Кнопка_старт Alias Pinc.2           'PC 2 устанавливаем на вход и присваиваем имя Кнопка_старт;
Config Pinc.3 = Input : Кнопка_стоп Alias Pinc.3            'PC 3 устанавливаем на вход и присваиваем имя Кнопка_стоп;
Config Pinc.4 = Input : Кнопка_3 Alias Pinc.4               'PC 4 устанавливаем на вход и присваиваем имя Кнопка_3;
Config Pinc.5 = Input : Кнопка_4 Alias Pinc.5               'PC 5 устанавливаем на вход и присваиваем имя Кнопка_4.

Config Pinb.0 = Output : Red_0 Alias Portb.0                'PB 0 устанавливаем на выход и присваиваем имя Red_0;
Config Pinb.1 = Output : Red_1 Alias Portb.1                'PB 1 устанавливаем на выход и присваиваем имя Red_1;
Config Pinb.2 = Output : Red_2 Alias Portb.2                'PB 2 устанавливаем на выход и присваиваем имя Red_2.

Enable Interrupts                                           ' разрешаем прерывания

Dim Rand As Byte

Print "Start RoBi"                                          ' выводим стартовую надпись в терминали через COM-порт

Cls                                                         'команда очистки дисплея
Cursor Off                                                  ' отключаем корсор на LCD
Lcd "I am RoBi!"                                            'выводим надпись
Lowerline                                                   ' переходим на нижнюю строчку
Lcd "Gotov k rabote."                                       'выводим надпись

Основная_программа:
Do                                                          'Основной цикл программы
Rand = Rnd(50)

If Rand = 48 Then : Gosub Стоп : Waitus 10 : End If
If Rand = 1 Then : Gosub Стоп : Waitus 10 : End If
If Rand = 49 Then : Gosub Вперёд : Wait 2 : End If    ' СТРЕЛКА ГЛУХО СТОИТ НА ЭТОЙ СТРОКЕ И НИ ТУДА НИ СЮДА
If Rand = 17 Then : Gosub Вперёд : Wait 1 : End If
If Rand = 27 Then : Gosub Вперёд : Wait 2 : End If
If Rand = 32 Then : Gosub Вперёд : Wait 1 : End If
If Rand = 44 Then : Gosub Назад : Wait 1 : End If
If Rand = 4 Then : Gosub Назад : Wait 1 : End If
If Rand = 45 Then : Gosub Вправо : Wait 1 : End If
If Rand = 2 Then : Gosub Вправо : Wait 1 : End If
If Rand = 22 Then : Gosub Влево : Wait 1 : End If
If Rand = 3 Then : Gosub Влево : Wait 1 : End If

Debounce Bumper_r , 0 , L                                   'сработал правый датчик, переходим на выполнение команды Bl
Debounce Bumper_l , 0 , R                                   'сработал левый датчик, переходим на выполнение команды Br

Loop

'' -----------------------------------------------------------------------------
'' Включение комбинации моторов для движения в заданном направлении
'' -----------------------------------------------------------------------------
Стоп:                                                       ' стоим на месте
Fr = 0 : Br = 0 : Bl = 0 : Fl = 0 :
Return
Вперёд:                                                     ' едим вперёд
Fr = 1 : Br = 0 : Bl = 0 : Fl = 1 :
Return
Вперёд_вправо:                                              ' поварачиваем вправо
Fr = 0 : Br = 0 : Bl = 0 : Fl = 1 :
Return
Вперёд_влево:                                               ' поворачиваем влево
Fr = 1 : Br = 0 : Bl = 0 : Fl = 0 :
Return
Назад:                                                      ' назад
Fr = 0 : Br = 1 : Bl = 1 : Fl = 0 :
Return
Назад_вправо:                                               ' поворачиваем назад-вправо
Fr = 0 : Br = 1 : Bl = 0 : Fl = 0 :
Return
Назад_влево:                                                ' поворачиваем назад-влево
Fr = 0 : Br = 0 : Bl = 1 : Fl = 0 :
Return
Вправо:                                                     ' разворот на метсе вправо
Fr = 0 : Br = 1 : Bl = 0 : Fl = 1 :
Return
Влево:                                                      ' разворот на месте влево
Fr = 1 : Br = 0 : Bl = 1 : Fl = 0 :
Return

R:                                                          ' выполнять после срабатывания правого датчика
Gosub Назад                                                 ' переходим в подпрограмму "Назад"
Wait 1                                                      ' выполняем её в течение 2,5 секунд
Gosub Назад_влево
Wait 1
Gosub Стоп
Goto Основная_программа                                     ' переходим к началу основного цикла после выполнения команд
L:
Gosub Назад
Wait 1                       ' А ПРИ ВЫПОЛНЕННИИ БАМПЕРА ВСТАЕТ ЗДЕСЬ И ОПЯТЬ ЖЕ СТРЕЛКА НИКУДА ОТ СЮДА НЕ УХОДИТ
Gosub Назад_вправо
Wait 1
Gosub Стоп
Goto Основная_программа


Модератор "Digit":Если в следующий раз не будешь использовать тег [code] для выделения листингов программ - я буду очень ругаться, а это страшно, поверь! :evil:


Добавлено спустя 3 минуты 54 секунды:
Виноват, исправлюсь. Не хотел ничего плохого.


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

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

имхо это симулятор тупит симулируя задержку...

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с симулятором bascoma
СообщениеДобавлено: 02 дек 2008, 16:31 
Не в сети
Аватара пользователя

Зарегистрирован: 10 янв 2005, 12:18
Сообщения: 189
Откуда: Санкт-Петербург
Не такоя уж я умный. Как в баскоме это делать? Если можно с примером. Только начал баском изучать.


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

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

чото у меня идеи кончились

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с симулятором bascoma
СообщениеДобавлено: 02 дек 2008, 17:25 
Не в сети
Аватара пользователя

Зарегистрирован: 10 янв 2005, 12:18
Сообщения: 189
Откуда: Санкт-Петербург
Короче причина найдена.... У меня демо версия баскома. Работает только с прогами не более 4кб... а моя прога 6кб.
У кого есть полная версия, подскажите где взять.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с симулятором bascoma
СообщениеДобавлено: 02 дек 2008, 17:26 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
...EdGull вот купил, например...

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с симулятором bascoma
СообщениеДобавлено: 02 дек 2008, 18:05 
Не в сети
Аватара пользователя

Зарегистрирован: 10 янв 2005, 12:18
Сообщения: 189
Откуда: Санкт-Петербург
А кряканой ни у кого нет? Прошу прощения за назойливость.

Добавлено спустя 20 минут 44 секунды:
Народ, не будьте жмотами дайте поюзать, плз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с симулятором bascoma
СообщениеДобавлено: 02 дек 2008, 18:23 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
1. для корректной работы симулятора нужно вставлять что-то типа $sim, юзай хелп.
2. ищи по форуму, я выкладывал когда-то давно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с симулятором bascoma
СообщениеДобавлено: 06 дек 2008, 21:06 
Не в сети

Зарегистрирован: 20 окт 2005, 16:11
Сообщения: 432
Откуда: Вильнюс,Литва
прог. языки: Basic
вот, авр123 выкладывал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 23 мар 2009, 01:53 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2009, 21:39
Сообщения: 1266
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич
Вложение:
serrerwer.JPG
serrerwer.JPG [ 20.91 КиБ | Просмотров: 3640 ]

Помогите.
Вот подключил семисегментный индикатор к порту D на рисунке показано какие сегменты подключены к каким контактам.
При выводе на порт сигналы, загораются сегменты. Сегменты от "a" до "e" (PDO-PD4) работают нормально, а вот сегменты подключенные к PD5-PD7(f g DP) не светятся стабильно, они перемаргивают, горят тускло, иногда выключаюся...короче выключаются включаются, слабо горят и перемаргивают...
Скажите почему? Может чтото надо настроить?
контакты PD5-T1 PD6-AIN0 PD7-AIN1, может это как то связано с альтернативными функциями контактов T1, AIN0,AIN1 помогите пожалуйста.

Atmega8L, 8 МГц, внутренний генератор.

_________________
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 23 мар 2009, 02:05 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Выложи пожалуйста код, может как раз с альтернативными функциями и связана проблема

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 23 мар 2009, 02:35 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2009, 21:39
Сообщения: 1266
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич
Код:
$regfile = "m8def.dat"
$crystal = 8000000

Config Portb = Output
Config Portc = Output
Config Portd = Output
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Portd = 255

Portc.5 = 1
Portc.4 = 1

Do
Portd = 6
Wait 2
Portd = 91
Wait 2
Portd = 79
Wait 2
Portd = 102
Wait 2
Portd = 109
Wait 2
Portd = 125
Wait 2
Portd = 7
Wait 2
Portd = 127
Wait 2
Portd = 111
Wait 2
Portd = 63
Wait 2
Portd.7 = 1
Wait 2
Loop
End


Вывожу цифры поочереди на индикатор 1,2,3,4,5,6,7,8,9,0 и точку.

Portc.5 Portc.4 - это контакты выбора разряда на индикаторе, у меня 2 разрядный индикатор , и в обоих разрядах сегменты g f DP перемаргивают.

_________________
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 23 мар 2009, 09:43 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Но на вывод конфигурировать то должен так:
Код:
Config Pinb = Output
.....
Config Pind.0 = Output


Попробуй, должно помочь

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 23 мар 2009, 12:35 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2009, 21:39
Сообщения: 1266
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич
galex1981 писал(а):
Но на вывод конфигурировать то должен так:
Код:
Config Pinb = Output
.....
Config Pind.0 = Output


Попробуй, должно помочь


Сегмент F остается моргать.

_________________
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BASCOM AVR вопросы и ответы
СообщениеДобавлено: 23 мар 2009, 12:41 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
полную схему и новый код в студию!
телепаты на каникулы ушли


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

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


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

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


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

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