roboforum.ru

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

Помогите с кодом

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

Помогите с кодом

Сообщение pashteet » 30 сен 2009, 01:32

Всем привет!

Вот начал код писать потихоньку, для своего второго робота, но чет никак немогу осилить один момент:
Ни как немогу померить логический уровень на ноге мк, точнее установить поддтяжку, нога сконфигурирована как вход. Кто силен в Баскоме подскажите плиз.
Речь идет о PinD.4 и PinD.5
Код: Выделить всёРазвернуть
Config Pind.4 = Input                                       
Config Pind.5 = Input                                       

'*******************************************************************************

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

'*******************************************************************************

Dim Speed As Integer


Do
Gosub Вперёд
If Pind.4 = 0 Then
Gosub Разворот_вправо
Waitms 400
Gosub 1
End If
Return

If Pind.5 = 0 Then
Gosub Разворот_влево
Waitms 400
Gosub 1
End If
Return

Loop


Пытаюсь организовать поворот впрао при замыкании ноги (portd.4) на землю,а получается наоборот - пока нога в воздухе висит - едет вправо, как только на +5 замкнул - едет прямо :pardon:
Аватара пользователя
pashteet
 
Сообщения: 930
Зарегистрирован: 28 авг 2009, 12:50
Откуда: Волжский
Skype: pashok0988
ФИО: Павел Петрович

Re: Помогите с кодом

Сообщение EdGull » 30 сен 2009, 08:15

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

Re: Помогите с кодом

Сообщение avr123.nm.ru » 30 сен 2009, 08:27

pashteet писал(а):Ни как немогу померить логический уровень на ноге мк

Он сам его меряет вам надо только прочитать рещультат измерения из регистра PINx

pashteet писал(а): точнее установить поддтяжку, нога сконфигурирована как вход.

Надо 1 записать в соотв бит PORTx - это подробно расписано на страничке Устройство микроконтроллера AVR - ссылка удалена.
Последний раз редактировалось avr123.nm.ru 30 сен 2009, 08:39, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Помогите с кодом

Сообщение EdGull » 30 сен 2009, 08:32

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

Re: Помогите с кодом

Сообщение avr123.nm.ru » 30 сен 2009, 08:41

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

Re: Помогите с кодом

Сообщение EdGull » 30 сен 2009, 08:44

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

Re: Помогите с кодом

Сообщение avr123.nm.ru » 30 сен 2009, 09:01

EdGull писал(а):то программная подтяжка делается так, конфигурируем ногу на выход, выставляем единичку, конфигурируем ногу на вход.


Это не Баском ! Это назвается псевдокод - т.е. описание алгоритма программы разговорным языком. Выполнить его можно на любом языке программирования.

И зачем 3 движения ( нафига на вЫход то конфигурировать ??????? ) если достаточно двух - выставляем единичку, конфигурируем ногу на вход

а в начале программы и одного - выставляем единичку.

Проект BASCOM - PROTEUS приложил. И скрин напряжения подтяжки тоже.

>EdGull< Для обсуждения твоей манеры пиара твоего курса идем в соответсвующие ветки

===================================================
Вложения
bascom.rar
(21.95 КиБ) Скачиваний: 15
bascom.png
Учебный курс микроконтроллер AVR для начинающих с нуля - Самоучитель - avr123.nm.ru
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Помогите с кодом

Сообщение EdGull » 30 сен 2009, 09:10

а каким боком тут твой код???
Код: Выделить всёРазвернуть
'----------------------------------------------------------------------
'                         serin_out.bas
'                    (c) 2002-2005 MCS Electronics
' demonstration of DYNAMIC software UART
'----------------------------------------------------------------------

'tip : Also look at OPEN and CLOSE

'tell the compiler which XTAL was used
$crystal = 8000000

'tell the compiler which chip we use
$regfile = "m48def.dat"

'some variables we will use
Dim S As String * 10
Dim Mybaud As Long
'when you pass the baud rate with a variable, make sure you dimesion it as a LONG

Portb.0 = 1

Ucsr0b = 0                                                  ' DISABLE HW UART

Mybaud = 19200
Do
  'first get some data
  Serin S , 0 , D , 0 , Mybaud , 0 , 8 , 1
  'now send it
  Serout S , 0 , D , 1 , Mybaud , 0 , 8 , 1
  '                                      ^ 1 stop bit
  '                                  ^---- 8 data bits
  '                                ^------ even parity (0=N, 1 = E, 2=O)
  '                        ^-------------- baud rate
  '                  ^-------------------- pin number
  '               ^----------------------- port so PORTA.0 and PORTA.1 are used
  '           ^--------------------------- for strings pass 0
  '      ^-------------------------------- variable
  Wait 1
Loop
End

'because the baud rate is passed with a variable in theis example, you could change it under user control
'for example check some DIP switches and change the variable mybaud
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Помогите с кодом

Сообщение avr123.nm.ru » 30 сен 2009, 09:12

Я просто убедился что и в Баскоме не надо вначале делать ножку вЫходом чтобы сделать ее "с подтяжкой" и проверил это в примере Баскома.

Просто взял попавшийся пример и вписал в него

Код: Выделить всёРазвернуть
Portb.0 = 1


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

Re: Помогите с кодом

Сообщение EdGull » 30 сен 2009, 09:14

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

Re: Помогите с кодом

Сообщение avr123.nm.ru » 30 сен 2009, 09:16

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

Re: Помогите с кодом

Сообщение EdGull » 30 сен 2009, 09:20

эт ты меня не понял... :D
по необяснимым причинам в васике нужно писать

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

Re: Помогите с кодом

Сообщение avr123.nm.ru » 30 сен 2009, 09:25

Но в моем примере видно что это не обязательно. Я ведь .hex симулирую и в АВР студии можно увидеть что пишется в регистры. Если в регистре ПОРТ есть 1 то подтяжка включена.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Помогите с кодом

Сообщение SERGEY_M » 30 сен 2009, 09:31

по необяснимым причинам в васике нужно писать

конфигурируем ногу на выход, выставляем единичку, конфигурируем ногу на вход.
тогда Васик "ацтой" :roll:
Аватара пользователя
SERGEY_M
 
Сообщения: 682
Зарегистрирован: 20 мар 2009, 12:45
Откуда: Украина, Одесса
ФИО: Сергей

Re: Помогите с кодом

Сообщение pashteet » 30 сен 2009, 10:26

EdGull писал(а):1. подтяжку лучше делать аппаратную, не жлобись, цнеа вопроса 5коп.
2. но если уж амфибральная асфиксия замучала, то программная подтяжка делается так, конфигурируем ногу на выход, выставляем единичку, конфигурируем ногу на вход.


Спасибо Эд!
А как аппаратно сделать подтяжку?
Просто мне нужно 6 портов с подтяжкой, это реально сделать аппаратно?
И еще, если я собираюсь датчики опрашивать в цикле и между делом двигателями крутить, порты нужно будет конфигурировать тоже в цикле? или хватит одного раза в начале программы?
Код должен выглядеть так?
Код: Выделить всёРазвернуть
config PinD.4 = output
PortD.4 = 1
Config PinD.4 = input

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

'*******************************************************************************

Dim Speed As Integer


Do
Gosub Вперёд
If Pind.4 = 0 Then
Gosub Разворот_вправо
Waitms 400
Gosub 1
End If
Return
Loop


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

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

'*******************************************************************************

Dim Speed As Integer


Do
Gosub Вперёд
config PinD.4 = output
PortD.4 = 1
Config PinD.4 = input
If Pind.4 = 0 Then
Gosub Разворот_вправо
Waitms 400
Gosub 1
End If
Return
Loop


Или в главном теле цикла вообще нельзя конфигурировать порты? Я просто еще далеко не со всем разобрался :pardon:

П.С. с утра в клавиатуре батарейки сели, пока старую нашел - тут уже дисскусия целая образовалась :D
П.С.С. Спасибо АВР-у за его курс! Начинал с него, но Васик оказался проще :pardon:

Добавлено спустя 34 минуты 55 секунд:
Все! Разобрался! Всем спасибо :beer:
Особенно Эду :friends:

П.С. программно не так уж и геморно организовывать подтяжку :wink:
Аватара пользователя
pashteet
 
Сообщения: 930
Зарегистрирован: 28 авг 2009, 12:50
Откуда: Волжский
Skype: pashok0988
ФИО: Павел Петрович

След.

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

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

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