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

Обсуждаем контроллеры компании Atmel.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

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

Сообщение ut1wpr »

edm2007 писал(а):
осторожно! леоныч!!! писал(а):Чувствую себя идиотом.... :oops:


Пора уже прекращать с этим. :) Можно подумать, кто-то родился сразу со знаниями...
Солидарен. Я себя таковым постоянно чувствую, когда подхожу к новой линейке МК. До тех пор, пока в руки не возьму книгу+отладчик. Но признаваться в этом не очень люблю, тем более во всеуслышание... :)
С уважением,
Виктор.
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Подскажите пожалуйста, каким образом я могу вводить текст в устройство.
Так понимаю что символы можно хранить в переменной типа "String". Но как мне организовать ввод по средствам четырех кнопок - вверх/вниз - выбор символа, ок - кнопка подтверждения выбранного символа, кнопка - стереть последний символ.

Если есть примеры работы таких программ. Для начала хоть ввести пару слов, вывести их на ЖКИ и отправить в терминал.
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

Доброго времени суток,
Подскажите, пожалуйста, как правильно подключить кнопку к лапке меги?
Программно я сделал так:
Config Debounce = 30
Config Pinc.2 = Input
Portc.2 = 1
Debounce Pinc.2
В протеусе работает, это понятно...
А вот как в железе правильно подключить кнопку, чтоб не подпалить меге лапки?
Спасибо.
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

C +5В на вывод контроллера резистор 10К,
На вывод контроллера кнопку, другая сторона кнопки, на GND.
Вот и всё, кнопка должна срабатывать при изменении состояния вывода с 1 на 0.
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

us5caa
Спасибо, я как то так и думал. :)
Мне нужно 4 кнопки подключить.
Вот такое подключение правильно будет?
(схемка без привязки к конкретным лапкам меги)
Вложения
схемка_на_кнопки.JPG
(26.76 КБ) 662 скачивания
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

http://chipenable.ru/index.php/how-conn ... icros.html посмотрите здесь варианты подключения
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

pavel123 писал(а):В протеусе работает, это понятно...


Интересно, как оно работает, если в коде вообще никакой обработки нажатия нет. Даже стандартная команда Debounce не дописана.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

pavel123 писал(а):us5caa
Спасибо, я как то так и думал. :)
Мне нужно 4 кнопки подключить.
Вот такое подключение правильно будет?
(схемка без привязки к конкретным лапкам меги)


Изображение
Вложения
222.gif
(2.87 КБ) 2310 скачиваний
С уважением,
Алексей.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

amv2000 писал(а):http://chipenable.ru/index.php/how-connection/13-connection-buttons-to-micros.html посмотрите здесь варианты подключения


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


А вот этого я не знал - что резисторы можно не ставить. Только не очень понятно - как собственно включить
эти внутренние подтягивающие резисторы ? Или достаточно будет:

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

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

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

Сообщение edm2007 »

Если пин порта настроен на ВЫХОД, то запись 1 или 0 в порт сответственно выставит этот уровень на пине. Если же пин настроен на ВХОД, то запись 1 включит подтягивающий резистор, запись 0 же переведет вывод в высокоимпедансное состояние (оставит болтаться в воздухе).

Потому так:

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

Config PINB.1 = Input   ' настраиваем вывод порта на вход
PORTB.1 = 1                  ' включаем внутренний подтягивающий резистор (или Set PORTB.1)


По умолчанию внутренние резисторы отключены.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

edm2007 писал(а):

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

Config PINB.1 = Input   ' настраиваем вывод порта на вход
PORTB.1 = 1                  ' включаем внутренний подтягивающий резистор (или Set PORTB.1)


По умолчанию внутренние резисторы отключены.


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

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

Сообщение edm2007 »

Пожалуйста.

В даташите указывается номинал этих резисторов. Для Attiny2313:

Изображение

Разброс конечно большой, потому в ответственных конструкциях лучше ставить внешний резистор. Ведь на линии RESET тоже есть внутренний подтягивающий резистор, но все равно предпочтительнее ставить внешний. Что во всех конструкциях и делается...

Кстати, pavel123, у Вас как раз в коде и включен внутренний резистор. И это при том, что Вы подключаете внешний. Так что определяйтесь. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

Спасибо всем, кто откликнулся на мою просьбу. :))
edm2007 писал(а):Интересно, как оно работает, если в коде вообще никакой обработки нажатия нет.

Обработка нажатия есть, :) , просто я не весь код показал...
edm2007 писал(а):Кстати, pavel123, у Вас как раз в коде и включен внутренний резистор. И это при том, что Вы подключаете внешний. Так что определяйтесь. :)

С оглядкой на то, что:
edm2007 писал(а):Разброс конечно большой, потому в ответственных конструкциях лучше ставить внешний резистор. Ведь на линии RESET тоже есть внутренний подтягивающий резистор, но все равно предпочтительнее ставить внешний. Что во всех конструкциях и делается...

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

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

Сообщение edm2007 »

pavel123 писал(а):просто я не весь код показал...


Оригинально. Я те та бу соо пи. Ну а что, ответ же есть, просто я не весь текст показываю. :)) А правильно будет и так и этак. Тут всего лишь желательно для определенных задач.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

edm2007 писал(а):Оригинально. Я те та бу соо пи. Ну а что, ответ же есть, просто я не весь текст показываю. :))

Я прошу прощения, посмотрел еще раз хелп, и понял где был неправ.
У меня в коде кнопка проверяется на 0
Debounce Pinc.2, 0, подпрограмка
Я так понял что если не использовать строку Portc.2 = 1 , то внутренний резистор не подключается. И нужно "механическим" способом резистором 10к выводить этот порт в состояние 1.
Для ограничения тока через порт нужно применить еще один резистор 0,3к
Получится подключение по схеме:
Вложения
2_кнопка_.gif
(1.73 КБ) 549 скачиваний
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

pavel123 писал(а):Я так понял что если не использовать строку Portc.2 = 1 , то внутренний резистор не подключается. И нужно "механическим" способом резистором 10к выводить этот порт в состояние 1.


Да, все верно. Для опроса кнопки нужно чтобы на выводе был какой-то определенный уровень. Нельзя оставлять болтающийся в воздухе вывод, после отпускания кнопки на выводе должен установиться противоположный уровень. Вот как раз подтягивающий резистор и обеспечит 1 на выводе, а нажатая кнопка - 0. А какой резистор будет, внутренний или внешний - решать Вам.

Резистор же на 330R ограничит ток в случае неправильной конфигурации вывода порта. Если Вы по ошибке настроите этот вывод на ВЫХОД и выставите 1, то при нажатии кнопки пин порта скорее всего выйдет из строя. Резистор же спасет от такой неприятности. Если код написан без ошибок, то этот резистор не нужен. Но если Вы делаете первые шаги или это отладочная плата, то этот резистор просто обязателен.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

Доброго времени суток !

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


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

Config Int0 = Rising
On Int0 Read1307

do
'опрос кнопок
loop

read1307:

'читаем ds1307

'выводим на lcd

return


Вот "выводим на LCD" нужно запихнуть в подпрограмму, так как обращаться к ней будем не только из подпрограммы прерывания. Потому что выводить на LCD будем очень хитро и через одно место (об этом позже, если всё получится). И если это "выводим на LCD" писать несколько раз где это нужно, то никакой памяти не хватит.
С уважением,
Алексей.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

А если в цикл включить опрос не подходит?

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

Config Int0 = Rising
On Int0 Read1307

do
'опрос кнопок
'выводим на lcd

loop

read1307:

'читаем ds1307


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

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

Сообщение edm2007 »

Ну вывод на дисплей-то можно оформить как подпрограмму. Касаемо вызова: по идее можно и из прерывания вызвать, но это конечно неправильно. Может просто в прерывании выставлять флаг необходимости обновления дисплея, а в основном цикле уже его щупать?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

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

Сообщение ut1wpr »

edm2007 писал(а):Ну вывод на дисплей-то можно оформить как подпрограмму. Касаемо вызова: по идее можно и из прерывания вызвать, но это конечно неправильно. Может просто в прерывании выставлять флаг необходимости обновления дисплея, а в основном цикле уже его щупать?
Главная проблема в таком подходе, что вывод на дисплей из прерывания может произойти во время... вывода на дисплей из основной программы. Да и сам вывод на дисплей - процедура ну очень длинная. Обработчики прерываний должны занимать минимум времени. Не забывайте, что они ПРЕРЫВАЮТ основную задачу программы.
Безусловно, лучший вариант - задрать флаг обновленных данных от датчика, а в теле программы выводить эти данные по флагу готовности и тут же его гасить, чтобы не было повторного вывода одного и того же.
С уважением,
Виктор.
Ответить

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