roboforum.ru

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


нужна помощь в Bascom AVR

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

нужна помощь в Bascom AVR

Сообщение EasyTech » 15 июн 2011, 11:21

Такое дело, мне нужно объединить две готовые программы, но в них есть циклы do...loop, как я знаю цикл в программе Bascom AVR может быть только один, как можно обеъдинить программы с циклами? :(

Добавлено спустя 13 минут 44 секунды:
вот два цикла
Код: Выделить всёРазвернуть
 Do
Start Adc : АЦП1 = Getadc(0)
If АЦП1 >= 500 Then : Gosub Отъехать_от_препятствия_спереди : Else : Gosub Вперёд : End If
  Loop

Код: Выделить всёРазвернуть
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
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: нужна помощь в Bascom AVR

Сообщение galex1981 » 15 июн 2011, 11:42

Например склеить обе программы. Например так:
Код: Выделить всёРазвернуть
Do
Start Adc : АЦП1 = Getadc(0)
If АЦП1 >= 500 Then : Gosub Отъехать_от_препятствия_спереди : Else : Gosub Вперёд : End If 
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
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: нужна помощь в Bascom AVR

Сообщение EasyTech » 15 июн 2011, 12:14

Нельзя!
BascomAVR - компилятор пишет, типо что это за фигня, такого быть не может! :(

Добавлено спустя 10 минут 25 секунд:
Кто может дать пример с программой датчика поверхности :(
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: нужна помощь в Bascom AVR

Сообщение =DeaD= » 15 июн 2011, 12:19

Для отдельного вот такое есть: [[OR-BWSENS]]
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: нужна помощь в Bascom AVR

Сообщение EdGull » 15 июн 2011, 12:34

Можно!
Просто он наверно на "Waitms 0" ругается
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: нужна помощь в Bascom AVR

Сообщение EasyTech » 15 июн 2011, 12:42

Гуль, а если всё совмещать, то нужно переменных 2х программ соединить и конфигурации портов, да?
И что можно циклы просто складывать?
А что если циклы по разному назваются?
Do...Loop Until или While ... Wend?
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: нужна помощь в Bascom AVR

Сообщение avr123.nm.ru » 15 июн 2011, 12:51

Посмотрите примеры BASCOM
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: нужна помощь в Bascom AVR

Сообщение Skyline » 15 июн 2011, 13:50

Почитай здесь про циклы.
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: нужна помощь в Bascom AVR

Сообщение EasyTech » 15 июн 2011, 18:50

Вот интересный вопрос, можно ли на Бейсике реализовать такую тему:
При нажатии кнопки, чтобы менялась программа, т.е. не нужно будет каждый раз прошивать МК.
Если можно скажите как, или лучше дайте скелет такой программы.
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: нужна помощь в Bascom AVR

Сообщение EasyTech » 21 июн 2011, 18:39

Люди не кто не знает как расширить порты на Bascom AVR?
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: нужна помощь в Bascom AVR

Сообщение osc » 21 июн 2011, 18:45

Можно расширить при помощи вот такой микросхемы:
http://avrdevices.ru/rasshiritely-portov-mcp23008/
Подключается по I2C, про это наверняка есть в хелпе баскома.
Аватара пользователя
osc
 
Сообщения: 333
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: нужна помощь в Bascom AVR

Сообщение EasyTech » 22 июн 2011, 23:02

Гуль, точно можно "склеивать" программы совмещая циклы? :sorry:
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: нужна помощь в Bascom AVR

Сообщение galex1981 » 22 июн 2011, 23:14

Если переменные и функции не пересекаются - можно

Добавлено спустя 1 минуту 15 секунд:
С другой стороны, можно после склейки программу прогнать дебаггером, проверить в Протеусе и т. д... и там сразу видно все будет, правильно склеил или нет
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: нужна помощь в Bascom AVR

Сообщение Rigo Legio » 29 ноя 2011, 23:50

Не хотел тему создавать, но мне тоже помощь по Баскому нужна. Начал осваивать программирование 2 дня назад, уже и светодиодом помигал, и несколькими светодиодами по очереди, и с кнопкой. А вот сейчас пытаюсь написать код для робота, чтобы с контактными датчиками ездил, и не фурычит. Пробовал пока с одним бампером, но не пашет
Код: Выделить всёРазвернуть
$regfile = "ATtiny2313.DAT"                                 '-Attiny2313
$crystal = 4000000                                          ' указываем на какой частоте будем работать
'--------Описание портов-----------------

Config Pind.2 = Output : Dr1 Alias Portd.2
Config Pind.3 = Output : Dr2 Alias Portd.3
Config Pind.4 = Output : Dr3 Alias Portd.4
Config Pind.5 = Output : Dr4 Alias Portd.5
Config Pind.0 = Input : Pr1 Alias Portd.0

Do
If Pr1 = 1 Then : Gosub Вправо
Else : Gosub Вперёд
Loop Until Pr1 = 0
Return



'-------------------------Движение---------------------------------

Вперёд:                                                     'едем вперёд
Dr1 = 0 : Dr2 = 1 : Dr3 = 1 : Dr4 = 0
Return

Вправо:                                                     'поворачиваем вправо
Dr1 = 1 : Dr2 = 0 : Dr3 = 1 : Dr4 = 0
Return


End If
End
Аватара пользователя
Rigo Legio
 
Сообщения: 50
Зарегистрирован: 28 июн 2010, 12:42
Откуда: Краснодарский край, Выселковский район, ст. Березанская
ФИО: Игорь Олегович

Re: нужна помощь в Bascom AVR

Сообщение cudi » 30 ноя 2011, 11:38

Попробуй так:
Код: Выделить всёРазвернуть

$regfile = "ATtiny2313.DAT"                                 '-Attiny2313
$crystal = 4000000                                          ' указываем на какой частоте будем работать
'--------Описание портов-----------------
Config Pind.2 = Output : Drl Alias Portd.2
Config Pind.3 = Output :  Drr Alias Portd.3
Config Pind.4 = Output : Dre Alias Portd.4
Config Pind.5 = Output : Drw Alias Portd.5
Config Pind.0 = Input : Pr1 Alias Portd.0
Pr1 = 1
Do
Gosub Прямо
If Pr1 = 0 Then : Gosub назад : Waitms 3000 : Gosub Влево : Waitms 3000
End if
Loop
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

Давно я работал на бейсике, сейчас пишу на winavr, если нужно могу написать :)
Вообще посмотри вот здесь: http://cdxp.zx6.ru/sources/?p=61
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

След.

Вернуться в Новичкам или основы основ роботостроения.

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

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