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:

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

EdGull » 30 сен 2009, 08:15

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

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

avr123.nm.ru » 30 сен 2009, 08:27

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

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

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

Надо 1 записать в соотв бит PORTx - это подробно расписано на страничке Устройство микроконтроллера AVR - ссылка удалена.
Последний раз редактировалось avr123.nm.ru 30 сен 2009, 08:39, всего редактировалось 1 раз.

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

EdGull » 30 сен 2009, 08:32

Авр, устное предупреждение, pashteet просил на васике пример.
убери свою ссылку

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

avr123.nm.ru » 30 сен 2009, 08:41

Эд, ты же ответил без баскома ! И я дал линк где написано как это сделать в AVR на чем угодно и на баскоме тоже.

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

EdGull » 30 сен 2009, 08:44

я как раз для васика и ответил :wink:
а как конфигурируется в Сях я не знаю :pardon:

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

avr123.nm.ru » 30 сен 2009, 09:01

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


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

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

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

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

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

===================================================
Вложения
bascom.rar
(21.95 КиБ) Скачиваний: 15
bascom.png
Учебный курс микроконтроллер AVR для начинающих с нуля - Самоучитель - avr123.nm.ru

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

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

avr123.nm.ru » 30 сен 2009, 09:12

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

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

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


Затем проверил в PROTEUS вольтметром, что нога стала подтяжкой. Но можно и в регистрах посмотреть.
Последний раз редактировалось avr123.nm.ru 30 сен 2009, 09:15, всего редактировалось 1 раз.

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

EdGull » 30 сен 2009, 09:14

как показала практика, к сожалению не все примеры в васике работают как в них написано :(

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

avr123.nm.ru » 30 сен 2009, 09:16

Ты не понял. Это не в примере васика так было. Я взял пример и добавил в него код который хотел проверить. Просто чтобы шапку кода не писать.

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

EdGull » 30 сен 2009, 09:20

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

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

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

avr123.nm.ru » 30 сен 2009, 09:25

Но в моем примере видно что это не обязательно. Я ведь .hex симулирую и в АВР студии можно увидеть что пишется в регистры. Если в регистре ПОРТ есть 1 то подтяжка включена.

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

SERGEY_M » 30 сен 2009, 09:31

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

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

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:


Rambler\'s Top100 Mail.ru counter