roboforum.ru

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

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

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

nest » 29 июл 2009, 13:45

Zeus писал(а):внутреннюю структуру микроконтроллера все равно надо знать?

я бы советовал писать сразу на асм.
тем более, что внутреннюю структуру микроконтроллера все равно знать надо, а с асм это получится быстрее всего.

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

blindman » 29 июл 2009, 13:52

Советы даны, на этом и остановимся. Даже не пытайтесь здесь устроить очередную свару C vs ASM vs Basic :x Отвечать на мой пост тоже не надо

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

Yuraskas » 09 окт 2009, 10:13

Тема вроде про баском, надеюсь, начинающему можно задавать здесь вопросы...
Немного непонятен момент с включением внутренней подтяжки на ноге сконфигурированной на вход, т.е. пишу Config PINC.0 = Input, смотрю в протеусе - пин находится в состоянии Z. Посмортрел код в АВР-студии, включения подтяжки вроде не нашел... Т.е. подтяжка не включается?

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

galex1981 » 09 окт 2009, 10:20

Подтяжка не включается...
Последний раз редактировалось galex1981 09 окт 2009, 10:58, всего редактировалось 1 раз.

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

EdGull » 09 окт 2009, 10:36

PINC.0 = Input просто включает ногу на вход, без подтяжки

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

avr123.nm.ru » 09 окт 2009, 10:37

Yuraskas писал(а):Т.е. подтяжка не включается?


Посмотрите устройство ножки AVR , его вцелом и его портов
Вложения
avr.png
устройство AVR и его портов http://avr123.nm.ru/02.htm
Последний раз редактировалось avr123.nm.ru 09 окт 2009, 11:20, всего редактировалось 1 раз.

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

Yuraskas » 09 окт 2009, 11:14

2 avr123: Смотрел, и не единожды, то что подтяжка включается установкой бита в регистре PORT - знаю, просто я по наивности своей думал что баском сам подтяжку включает, когда конфигурируешь ногу на вход, :oops: оказалось - был не прав, что и подтвердил EdGull, спасибо ему за это. Значит для подтяжки нужно сделать еще Set PORTC.0

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

pashteet » 16 окт 2009, 23:24

Yuraskas писал(а):Тема вроде про баском, надеюсь, начинающему можно задавать здесь вопросы...
Немного непонятен момент с включением внутренней подтяжки на ноге сконфигурированной на вход, т.е. пишу Config PINC.0 = Input, смотрю в протеусе - пин находится в состоянии Z. Посмортрел код в АВР-студии, включения подтяжки вроде не нашел... Т.е. подтяжка не включается?

Меня когда-то тоже интересовал вопрос подтяжки на баскоме viewtopic.php?f=16&t=6714 советую прочитать в ознакомительных целях

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

Cut » 13 июл 2010, 18:04

встретил в такую строчку - $prog &HFF , &HE4 , &HD9 , &H00 'указываем какие фусибиты надо прошить
Что аткое фусибиты? , что такое "$prog"? Что такое &HFF , &HE4 , &HD9 , &H00???

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

space » 25 июн 2011, 14:30

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

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

Tem1 = A
Tem2 = B

If Temp => Tem1 Then : Реле = 1 : End If

If Temp <= Tem2 Then : Реле = 0 : End If

Вклвыкл_Реле:

Toggle Реле                                                 'Инверсия логического уровня на ножке PORTD.4

Return                                                      'Возврат из подпрограммы в точку где произошло прерывание

End Sub

Реле включается при определённой температуре и также отключается. Но включается и отключается оно также и при нажатие на клавишу. Так вот когда нажимаю на клавишу реле включается и тут же отключается из-за условия:
Код: Выделить всёРазвернуть
If Temp <= Tem2 Then : Реле = 0 : End If

Как бы сделать так чтобы это условие игнорировалось при нажатие клавиши?

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

galex1981 » 25 июн 2011, 14:39

А так не получается?
Код: Выделить всёРазвернуть
If Temp <= Tem2 And Кнопка <> нажата Then : Реле = 0 : End If


Где "Кнопка <> нажата" условие ненажатой кнопки

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

space » 25 июн 2011, 16:09

дело в том, что клавиша без Фиксации. Нажал реле включилось, снова нажал, реле выключилось. То есть сделал за счёт прерываний

Код: Выделить всёРазвернуть
Set Portd.2 : Вкл_выкл Alias Pind.2                         'Клавиша для принудительного вкл. и выкл. реле 
Config Portd.4 = Output : Реле Alias Portd.4   

Config Int0 = Falling                                       'Разрешаем прерывания по спаду напряжения On Int0
On Int0 Вклвыкл_Реле                                        'Задаём метку перехода по прерыванию
Enable Interrupts                                           'Разрешаем прерывания
Enable Int0                                                 'Разрешаем прерывания на ножке int0


Sub Вов

Tem1 = A
Tem2 = B

If Temp => Tem1 Then : Реле = 1 : End If

If Temp <= Tem2 Then : Реле = 0 : End If

Вклвыкл_Реле:

Toggle Реле                                                 'Инверсия логического уровня на ножке PORTD.4

Return                                                      'Возврат из подпрограммы в точку где произошло прерывание

End Sub

вот так более полно выглядит код

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

galex1981 » 25 июн 2011, 19:35

Что то основной цикл программы не вижу. А вообще в основном цикле можно просматривать нажатие/отпускание клавиши по пину pind.2

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

space » 26 июн 2011, 16:21

не стал его просто выкладывать, а так вот:
Код: Выделить всёРазвернуть
Do
Call Температура : Call Вов
Locate 1 , 1
Lcd Time$ ; "**" ; Celsium ; "**"
Locate 2 , 1
Lcd Date$ ; "**" ; Fahrenhei ; "**"
If Меню = 0 Then : Gosub МенюП : End If
Loop


это можно, только что мне это даст не совсем понимаю?

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

space » 26 июн 2011, 20:39

galex1981, спасиб :Yahoo!: Вообщем подумал, как можно использовать то что ты предложил и нашёл решение. Только в цикле фиксировал лишь нажатие клавиши за счёт команды:
Код: Выделить всёРазвернуть
Debounce 

При удержание клавиши просто осущевствляю переход в другой цикл, котором убрал процеду по вкл. и выкл. реле за счёт температуры, и за счёт нажатие клавиши могу вкл. и выкл. реле. Может громоздка, но ведь работает :D
Код: Выделить всёРазвернуть
'*****************************Оcновной_цикл_программы***************************

Вкл._от_перемены_температуры:
Disable Int0                                                'Запрещаем прерывания на Int0
Sound Пищалка , 110 , 213

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

Do

Call Температура                                            'Вызвать подпрограмму(процедуру) "Температура"
Call Вов                                                    'Вызвать подпрограмму(процедуру) "Вов"
Locate 1 , 1
Lcd Time$ ; "**" ; Celsium ; "***"
Locate 2 , 1
Lcd Date$ ; "**" ; Fahrenhei ; "**"
If Меню = 0 Then : Gosub МенюП : End If                     'При нажатие клавиши меню, переходим на метку МенюП
Debounce Вкл_выкл , 0 , Вкл._от_клавиши
Loop

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

Вкл._от_клавиши:
Enable Int0                                                 'Разрешаем прерывания на Int0
Sound Пищалка , 140 , 299

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

Do
Call Температура                                            'Вызвать подпрограмму(процедуру) "Температура"
Locate 1 , 1
Lcd Time$ ; "**" ; Celsium ; "***"
Locate 2 , 1
Lcd Date$ ; "**" ; Fahrenhei ; "**"
If Меню = 0 Then : Gosub МенюП : End If                     'При нажатие клавиши меню, переходим на метку МенюП
Debounce Вкл_выкл , 0 , Вкл._от_перемены_температуры
Loop

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


cron
Rambler\'s Top100 Mail.ru counter