roboforum.ru

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

 

Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

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

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 19 сен 2011, 10:17

Когда в программе используются коды
Код: Выделить всёРазвернуть
Config Servos = 1 , Servo1 = Portb.3 , Reload = 11 

и
Код: Выделить всёРазвернуть
Прием3_rc5:
     Getrc5(address , Command)
     If Address <> 255 And Command <> 255 Then
        Command = Command And &B01111111
     End If
Return


то она не компилируется, стоит убрать код с настройкой сервоприводов, всё компилируется. на скрине видно ошибку которую выдаёт компилятор при компиляции кода "Dublicate label". Почему может быть так?
Вложения
1.jpg
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение galex1981 » 19 сен 2011, 11:25

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

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 19 сен 2011, 11:35

Вот проект, так он в полном объёме должен быть

Добавлено спустя 3 минуты 16 секунд:
даже банально, обрезать весь код по максимуму:


Код: Выделить всёРазвернуть
$regfile = "m16def.dat"                                     'используем мк ATmega16
$crystal = 16000000                                         'частота кварцевого резонатора 16mHz
$baud = 19200                                               'устанавливаем скорость для UART


Ddrc = &B11111111                                           ' Все порты B выставляем на выход

Config Servos = 5 , Servo1 = Portc.3 , Servo2 = Portc.4 , Servo3 = Portc.5 , Servo4 = Portc.6 , Servo5 = Portc.7 , Reload = 12       ' Указываем кол-во серв, присваеваем имя Servo№ PC№ , указываем длину импульса.



Config Rc5 = Pind.2


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





'************************Переменные и константы*********************************
'*******************************Переменные**************************************

Dim Address As Byte , Command As Byte



Do
   Gosub Прием_rc5
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


всё равно почти тоже самое (последней третьей ошибки нет)
Вложения
1.jpg
Архив WinRAR.rar
(15.07 КиБ) Скачиваний: 0
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение galex1981 » 19 сен 2011, 12:24

В общем проблем было несколько:
1) Раз ты используешь для чего непонятно - кучу файлов - где определяешь конфиги, где функции, причем не пишешь их прототипы, в результате чего у тебя во всем проекте каша; так приводи проект в нормальный порядок а не функция там а основной файл ее не видит по вышеуказанным причинам
2) Используешь названия функции с маленькой буквы а вызываешь с большой (для английских вариантов названия функций регистр неважен, а если называешь функции русскими буквами - то очень важен)
3) В хелпе по Config servo написано что можно менять таймер. То есть у тебя для 2х функций использовался один таймер, потому шли конфликты
Код: Выделить всёРазвернуть
'as an option you can use TIMER1
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1


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

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 19 сен 2011, 13:07

galex1981 писал(а):В общем проблем было несколько:
1) Раз ты используешь для чего непонятно - кучу файлов - где определяешь конфиги, где функции, причем не пишешь их прототипы, в результате чего у тебя во всем проекте каша; так приводи проект в нормальный порядок а не функция там а основной файл ее не видит по вышеуказанным причинам

потому что найти так проще :) Если всё в одном файле, то нужный кусок искать тяжело, а так всё по полочкам :)
galex1981 писал(а):3) В хелпе по Config servo написано что можно менять таймер. То есть у тебя для 2х функций использовался один таймер, потому шли конфликты
Код: Выделить всёРазвернуть
'as an option you can use TIMER1
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1


В общем переделанный проект прилагаю - смотри какие у тебя были ошибки.
А вообще советую все таки русские названия не использовать как и в других языках программирования.

Понял :) Спасибо, про таймер я и забыл :-|


Ток не понял зачем это:
Код: Выделить всёРазвернуть
Declare Sub Прием_rc5
- Прием_rc5 же не процедура, а всего лишь метка, или это тот самый прототип??))

Добавлено спустя 23 минуты 24 секунды:
вот только проблема, с timer1 сервы не крутятся вообще
переделанный код залил прям чтоб проверить и всё, на пульт реакции нет.

прошил тестовую прогу для пульта, которую не давно писал ие-приёмник работает, сигналы принимает

может для таймера ещё какие настройки надо сделать?
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение galex1981 » 19 сен 2011, 13:50

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

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 19 сен 2011, 19:42

попробовал и timer1 и timer2
вообще ладно, смысл понятен, потом отдельно код состряпаю и попробую, за помощь спасиб :)
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 25 сен 2011, 02:27

пробую щас работать с энкодером. В программе сделал управление сервоприводом. Меняется переменная W в диапозоне от 33 до 150. При вращение энкодера переменная уменьшается или увеличивается, в зависимости от направления вращения, на единицу. Для этого использую команды Incr, Decr. Надо сделать чтобы переменная увеличивалась не на единицу, а сразу единиц на 10-15. Собственно в этом и затруднение

Код: Выделить всёРазвернуть
$regfile = "m16def.dat"                                     ' файл спецификации Меги32
$crystal = 16000000                                         ' указываем на какой частоте будем работать

$lib "lcd4.lbx"

$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

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
Config Servos = 1 , Servo1 = Portd.7 , Reload = 11

Dim W As Integer

Config Int0 = Falling

On Int0 Getencoder

Enable Interrupts
Enable Int0

Cha Alias Pind.2
Chb Alias Pind.3

Config Cha = Input
Config Chb = Input

Cls
Cursor Off



Do

If W > 150 Then W = 33

If W < 33 Then W = 150

  Servo(1) = W

   Locate 1 , 1

    Lcd "encounter: " ; W ; "     "

     Waitms 100
Loop

Getencoder:

If Cha = 0 Then
If Chb = 0 Then Incr W Else Decr W
End If
Waitms 5
Gifr = 64
Return


End
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение vadinator » 25 сен 2011, 02:55

вместо Incr W используйте W = W + 10 , а вместо Decr W соответственно W = W - 10...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 25 сен 2011, 02:58

:) я пробовал так не катит

Добавлено спустя 2 минуты 30 секунд:
а нет :D работает. решил попробовать ещё раз)) Видать когда пробовал, не так что то прописал)) спасиб :wink:
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение CFox » 30 сен 2011, 19:48

Блин объясните почему нельзя транслитом пользоваться... А если хочеться?
CFox
 
Сообщения: 25
Зарегистрирован: 19 май 2006, 18:30
Откуда: Великие Луки

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение Vooon » 30 сен 2011, 20:42

Потому что разбирать что ты там понаписал в таком случае - дополнительная трата времени. Я такие сообщения в лучшем случае игнорирую.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3326
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 01 окт 2011, 23:28

Использую сдвиговый регистр 74HC595. Светодиоды за счёт него научился включать. Ни чего сложного, но вот как управлять сервоприводом за счёт сдвигового регистра в BascomAVR? Почитал теорию в вике, но понятней не стало
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение avr123.nm.ru » 01 окт 2011, 23:37

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

Re: Учебный курс по Bascom AVR Basic для ЧАЙНИКОВ

Сообщение space » 01 окт 2011, 23:43

не вижу смысла использования другой микросхемы
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Пред.След.

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

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

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

Mail.ru counter