BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: BASCOM AVR в вопросах и ответах

Сообщение serg_svd »

Да если начистоту, то все не так делаете.
PortB назначили на выход. Тут светодиоды сидят или кнопки?
во-вторых Config Pinb.0 = Input это неверная запись. Порту назначается вход или выход. А пин можно либо опросить, либо установить и сбросить.
В третьих оператор Toggle может только изменить состояние устройства на противоположное.

Ну и уж самое мистическое это строчки
A = 5
Incr A
A = Portb
сюда программа вообще не попадет. Это островок получился. да и не будет это работать в том виде. про который вы спрашиваете.
PS. могу за вас написать прогу для переключения светодиодов, если скажите на каком порту сидят кнопки и светодиоды. Или попытаетесь разобраться сами?
Ну и собственно такую программу можно написать разными путями
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

serg_svd писал(а):Да если начистоту, то все не так делаете.
PortB назначили на выход. Тут светодиоды сидят или кнопки?
во-вторых Config Pinb.0 = Input это неверная запись. Порту назначается вход или выход. А пин можно либо опросить, либо установить и сбросить.
В третьих оператор Toggle может только изменить состояние устройства на противоположное.

Ну и уж самое мистическое это строчки
A = 5
Incr A
A = Portb
сюда программа вообще не попадет. Это островок получился. да и не будет это работать в том виде. про который вы спрашиваете.
PS. могу за вас написать прогу для переключения светодиодов, если скажите на каком порту сидят кнопки и светодиоды. Или попытаетесь разобраться сами?
Ну и собственно такую программу можно написать разными путями

PortB назначил на выход тут сидят светодиоды, а на порт PortB.0 кнопка переключающая их.
Приведите пример или натолкните пожалуйста на путь истинный........
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение dimon-790 »

Код: Выделить всё

$regfile = "m8def.dat"
$Crystal=4000000
$hwstack=40
$swstack=50
$framesize = 50
Dim A As Byte

Config Portb = Output

Config Pinb.0 = Input

A = 2
Portb = A
Do
Debounce Pinb.0 , 0 , En , Sub
Loop

En:

A = A * 2
If A > 32 Then A = 2
Portb = A

Return

cattus если я тебя правильно понял , то должно работать...
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
Kill17
Открыл глаза
Сообщения: 63
Зарегистрирован: Вс май 30, 2010 20:27:33
Откуда: Санкт-Петербург
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Kill17 »

Подскажите пожалуйста.

Код: Выделить всё


$regfile = "m32def.dat"
$Crystal=11059200
$hwstack=40
$swstack=16
$framesize = 32

Do
Open "comd.6:9600,8,n,1" For Output As #0
   Printbin #0 , &H0096
   Wait 1
Close #0


Open "comd.6:115200,8,n,1" For Output As #0    <---------- Ругается здесь
  Printbin #0 , &H0024
  Wait 1
Close #0

Loop
End




Компилятор ругается 66 ошибкой, мол порт уже открыт. Что не так делаю?
Аватара пользователя
Kill17
Открыл глаза
Сообщения: 63
Зарегистрирован: Вс май 30, 2010 20:27:33
Откуда: Санкт-Петербург
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Kill17 »

Назрел другой вопрос, при использовании Baud #1, 14400 возможно ли подставить переменную в место скорости?
Делаю так. Мини пример

Код: Выделить всё

Dim A as Long

Open "coma.1:9600,8,n,1" for output #1

Do

A = 14400
Baud #1, A
Printbin #1, &H11223344

Loop
Close #1
End


В таком виде передача просто падает, передается, только 00.
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

$regfile = "m8def.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Dim I As Integer
Dim H As Integer

Config Portc.0 = Input
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output

Portb = 0

Do
Portc.0 = I
Incr I
For I = 0 To 2
H = 2 ^ I

Portd = H
Next I
Loop
End
Посмотрите пожалуйста на мою программу и скажите что не так в ней.....
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Re: BASCOM AVR в вопросах и ответах

Сообщение Adagumer »

Что-то не совсем понятно, Вы пин 0 порта С приравняли двухбайтному числу?
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

8)
Adagumer писал(а):Что-то не совсем понятно, Вы пин 0 порта С приравняли двухбайтному числу?

........
Последний раз редактировалось cattus Пт мар 08, 2013 15:31:58, всего редактировалось 1 раз.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

cattus писал(а):я понимаю что вы тут все такие умные


Умные конечно, это вне всяких сомнений. Только дело в том, что никто таким не родился. По Вашему же поведению сразу стало понятно, что проще писать откровенную чушь, а потом задавать коварные вопросы типа "что на этой картинке не так?". Вместо того чтобы изучать сайты, посвященные баскому. Коих более чем предостаточно. И уже потом задавать вполне конкретные вопросы (которых сразу станет гораздо меньше). Вместо этого Вы собираете ересь в кучу (по которой прекрасно видно, что Вы вообще не разбираетесь в данной теме, даже на минимальном уровне), а затем упрекаете всех в насмехательстве. Вы чего решили-то, нагородить всего в кучу, а оно там само как-нибудь разберется?

Вам уже и варианты предлагали, и даже за Вас написать, а Вы только ноете, какие все злые и бессердечные. Так что же Вам нужно-то? Рисуйте схему, что и куда подключено, пишите ТЗ, как оно должно работать. Там и поговорим...

P.S. А вот править свое сообщение после ответа на него - нехорошо.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Re: BASCOM AVR в вопросах и ответах

Сообщение max50 »

cattus писал(а):P.S. А вот править свое сообщение после ответа на него - нехорошо.

Ага, здесь он же(МХ5) вообще тему удалил с моим ответом, а здесь mpx, сказал, что понял свои ошибки.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

Я хочу извиниться перед всеми за то что так наговорил, помогите с программой переключение трех светодиодов одной кнопкой, по очереди. И если можно с комментариями, что бы я мог понять принцип программы.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Совсем другое дело.

edm2007 писал(а):Рисуйте схему, что и куда подключено, пишите ТЗ, как оно должно работать.


Ладно, пусть на словах. Например: 5 светодиодов подключено к выводам PB1, PB2, PB3, PB4, PB5 микроконтроллера Atmega 8. Кнопка подключена к выводу PD0. При нажатии зажигается первый светодиод. При следующем нажатии зажигается второй (первый при этом гаснет) и все в том же духе. Понятно же, я думаю...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Re: BASCOM AVR в вопросах и ответах

Сообщение max50 »

Как-то так:

Код: Выделить всё

$regfile = "m8def.dat"                                      'установка модели микроконтроллера
$crystal = 1000000                                          'частота генератора1МГц
Config Portd.0 = Output                                     'настройка пинаd0 на выход(LED1)
Config Portd.1 = Output                                     'настройка пинаd1 на выход(LED2)
Config Portd.2 = Output                                     'настройка пинаd2 на выход(LED3)
Config Portc.0 = Input                                      'настройка пинаc0 на вход(S1)
Dim Effect As Byte
'инициализация светодиодов
Portd = 7                                                   '@@@'
Waitms 300
Portd = 0                                                   'OOO'
Waitms 300
'----------
Do  'начало цикла
'опрос кнопки и присвоение переменной Effect соответствующего значения
If Pinc.0 = 0 Then
Waitms 100
Incr Effect                              'с каждым нажатием увеличиваем Effect на 1
End If

If Effect >= 4 Then Effect = 0                              'Effect равен 4, то обнуляем

Select Effect
Case 0 : Portd = 0                                          'OOO'
Case 1 : Portd = 1                                          '@OO'
Case 2 : Portd = 2                                          'O@O'
Case 3 : Portd = 4                                          'OO@'
End Select

Loop  'конец цикла
'----------
End
Вложения
Безымянный.PNG
Схема
(30.77 КБ) 608 скачиваний
Последний раз редактировалось max50 Сб мар 09, 2013 15:22:13, всего редактировалось 1 раз.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Угу, можно и так. Осталось только при тестовом включении нормальную задержку вместо WaitmsTemp сделать.

P.S. Но я все же сделал бы именно подпрограмму опроса. Ну или включение светодиодов загнал бы именно в цикл проверки кнопки. А то постоянная запись в порт одного и того же значения как-то не очень красиво...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Re: BASCOM AVR в вопросах и ответах

Сообщение max50 »

edm2007 писал(а):Осталось только при тестовом включении нормальную задержку вместо WaitmsTemp сделать.

Спасибо, поправил.
edm2007 писал(а):P.S. Но я все же сделал бы именно подпрограмму опроса. Ну или включение светодиодов загнал бы именно в цикл проверки кнопки. А то постоянная запись в порт одного и того же значения как-то не очень красиво...

Проще не придумал. Для ознакомления, думаю, пойдет.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

max50 писал(а):Проще не придумал. Для ознакомления, думаю, пойдет.


Да конечно пойдет, самое оно. Я просто к тому, что можно весь код заключить в If Pinc.0 = 0 Then ... End If. Тогда он будет выполняться только по факту нажатия. Сейчас же при каждом проходе даже в отстутствие нажатия все равно работает блок Select. И запись в порт. Страшного-то ничего, это просто уже мои тараканы. :wink:

P.S. Схему посмотрел, подтяжки-то у нас нет внешней. Тогда в коде включить нужно...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

Всем большое спасибо за помощь. Теперь немного понятно, стало... буду дальше пробовать разбираться...
tomas111
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Вс мар 10, 2013 10:10:41

Re: BASCOM AVR в вопросах и ответах

Сообщение tomas111 »

Добрый всем день, решил сделать свою меленькую программу на bascom, но уже запутался, И думаю в след раз буду на С писать.
Но суть не в этом. Нашел схему с исходником цифровой мономер... Но решил вместо сигментиков повесить LCD...
Но по образцу с того кода не хочет что то компилироваться... Ругается :((

Сам код

'
$regfile = "m8def.dat" ' используем ATmega8
$crystal = 8000000
$lib "lcd4.lbx" 'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
$lib "mcsbyte.lbx" 'подключаем библиотеку функций

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 'используем дисплей на 2 строчки по 16 знакомест в каждой


Config Adc = Single , Prescaler = Auto , Reference = Avcc 'конфигурация АЦП
'объявляем переменные
Dim Wa As Word , Wb As Word , Wc As Word , Wd As Word , Any_var As Single , 'Ad_1 As Integer
Dim Chvar_1 As Single , Channel_1 As Integer , ' , Pst As String * 4 , Ad_2 As String * 4

Const Negativ = -1

Start Adc 'запускаем аналого-цифровое преобразование

Do

Wa = Getadc(0) 'считываем результат с пина 0 порта А.

Chvar_1 = Wa
Any_var = Chvar_1 / 2000 ' 2000 - можно задавать изгиб линии
Any_var = Negativ * Any_var
Any_var = Exp(any_var)
Chvar_1 = 1023 - Chvar_1
Chvar_1 = Chvar_1 / 12.035 'пересчет тут любая формула для требуемого диапазона или необходимой характеристики ==============
Any_var = Chvar_1 * Any_var
Chvar_1 = Any_var

'If Wa < 1023 Then
'If Chvar_1 > 0 Then Channel_1 = Chvar_1 ' присваиваем значения переменных для индикации
'If Chvar_1 > 80 Then Channel_1 = 80 'верхний предел показаний
'Else
'Channel_1 = 0
'End If

'End If


Locate 1 , 1 ' позиция курсора
Lcd "C0:" ; Chvar_1 ; " " 'выводим результат преобразования на ЖК

Waitms 100 ' зедержка 0,1 секунды

Loop


End

Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Все прекрасно компилируется. На что ругается-то? Если Вы про закомментированый код, то просто пишите правильно:

Код: Выделить всё

If Wa < 1023 Then

If Chvar_1 > 0 Then Channel_1 = Chvar_1      ' присваиваем значения переменных для индикации

If Chvar_1 > 80 Then
Channel_1 = 80                                              'верхний предел показаний
Else
Channel_1 = 0
End If

End If


tomas111 писал(а):И думаю в след раз буду на С писать.


Угу, там-то оно само напишется и все ошибки исправит. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
tomas111
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Вс мар 10, 2013 10:10:41

Re: BASCOM AVR в вопросах и ответах

Сообщение tomas111 »

Да я уже пробовал по разному .... о у меня error 61 ....
Может с баскомом что не так ...
Вложения
Безымянный.JPG
(151.83 КБ) 433 скачивания
Ответить

Вернуться в «AVR»