roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 20:41

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




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 01:32 
Не в сети
Аватара пользователя

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

Вот начал код писать потихоньку, для своего второго робота, но чет никак немогу осилить один момент:
Ни как немогу померить логический уровень на ноге мк, точнее установить поддтяжку, нога сконфигурирована как вход. Кто силен в Баскоме подскажите плиз.
Речь идет о 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:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 08:15 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 08:27 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
pashteet писал(а):
Ни как немогу померить логический уровень на ноге мк

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

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

Надо 1 записать в соотв бит PORTx - это подробно расписано на страничке Устройство микроконтроллера AVR - ссылка удалена.


Последний раз редактировалось avr123.nm.ru 30 сен 2009, 08:39, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 08:32 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 08:41 
Не в сети
отсылающий читать курс
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 08:44 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 09:01 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
EdGull писал(а):
то программная подтяжка делается так, конфигурируем ногу на выход, выставляем единичку, конфигурируем ногу на вход.


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

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

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

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

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

===================================================


Вложения:
bascom.rar [21.95 КиБ]
Скачиваний: 15
Комментарий к файлу: Учебный курс микроконтроллер AVR для начинающих с нуля - Самоучитель - avr123.nm.ru
bascom.png
bascom.png [ 25.29 КиБ | Просмотров: 3216 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 09:10 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
а каким боком тут твой код???
Код:
'----------------------------------------------------------------------
'                         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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 09:12 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Я просто убедился что и в Баскоме не надо вначале делать ножку вЫходом чтобы сделать ее "с подтяжкой" и проверил это в примере Баскома.

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

Код:
Portb.0 = 1


Затем проверил в PROTEUS вольтметром, что нога стала подтяжкой. Но можно и в регистрах посмотреть.


Последний раз редактировалось avr123.nm.ru 30 сен 2009, 09:15, всего редактировалось 1 раз.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 09:16 
Не в сети
отсылающий читать курс
Аватара пользователя

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


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

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

Цитата:
конфигурируем ногу на выход, выставляем единичку, конфигурируем ногу на вход.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: 30 сен 2009, 09:25 
Не в сети
отсылающий читать курс
Аватара пользователя

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


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

Зарегистрирован: 20 мар 2009, 12:45
Сообщения: 682
Откуда: Украина, Одесса
ФИО: Сергей
Цитата:
по необяснимым причинам в васике нужно писать

конфигурируем ногу на выход, выставляем единичку, конфигурируем ногу на вход.
тогда Васик "ацтой" :roll:


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

Зарегистрирован: 28 авг 2009, 12:50
Сообщения: 930
Откуда: Волжский
Skype: pashok0988
ФИО: Павел Петрович
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:


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

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


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

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


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

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