Солидарен. Я себя таковым постоянно чувствую, когда подхожу к новой линейке МК. До тех пор, пока в руки не возьму книгу+отладчик. Но признаваться в этом не очень люблю, тем более во всеуслышание...edm2007 писал(а):осторожно! леоныч!!! писал(а):Чувствую себя идиотом....![]()
Пора уже прекращать с этим.Можно подумать, кто-то родился сразу со знаниями...
BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
С уважением,
Виктор.
Виктор.
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Подскажите пожалуйста, каким образом я могу вводить текст в устройство.
Так понимаю что символы можно хранить в переменной типа "String". Но как мне организовать ввод по средствам четырех кнопок - вверх/вниз - выбор символа, ок - кнопка подтверждения выбранного символа, кнопка - стереть последний символ.
Если есть примеры работы таких программ. Для начала хоть ввести пару слов, вывести их на ЖКИ и отправить в терминал.
Так понимаю что символы можно хранить в переменной типа "String". Но как мне организовать ввод по средствам четырех кнопок - вверх/вниз - выбор символа, ок - кнопка подтверждения выбранного символа, кнопка - стереть последний символ.
Если есть примеры работы таких программ. Для начала хоть ввести пару слов, вывести их на ЖКИ и отправить в терминал.
- pavel123
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Чт май 17, 2007 09:44:13
- Откуда: Украина, г. Кривой Рог
Re: BASCOM AVR в вопросах и ответах
Доброго времени суток,
Подскажите, пожалуйста, как правильно подключить кнопку к лапке меги?
Программно я сделал так:
Config Debounce = 30
Config Pinc.2 = Input
Portc.2 = 1
Debounce Pinc.2
В протеусе работает, это понятно...
А вот как в железе правильно подключить кнопку, чтоб не подпалить меге лапки?
Спасибо.
Подскажите, пожалуйста, как правильно подключить кнопку к лапке меги?
Программно я сделал так:
Config Debounce = 30
Config Pinc.2 = Input
Portc.2 = 1
Debounce Pinc.2
В протеусе работает, это понятно...
А вот как в железе правильно подключить кнопку, чтоб не подпалить меге лапки?
Спасибо.
-
us5caa
- Первый раз сказал Мяу!
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
C +5В на вывод контроллера резистор 10К,
На вывод контроллера кнопку, другая сторона кнопки, на GND.
Вот и всё, кнопка должна срабатывать при изменении состояния вывода с 1 на 0.
На вывод контроллера кнопку, другая сторона кнопки, на GND.
Вот и всё, кнопка должна срабатывать при изменении состояния вывода с 1 на 0.
- pavel123
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Чт май 17, 2007 09:44:13
- Откуда: Украина, г. Кривой Рог
Re: BASCOM AVR в вопросах и ответах
us5caa
Спасибо, я как то так и думал.
Мне нужно 4 кнопки подключить.
Вот такое подключение правильно будет?
(схемка без привязки к конкретным лапкам меги)
Спасибо, я как то так и думал.
Мне нужно 4 кнопки подключить.
Вот такое подключение правильно будет?
(схемка без привязки к конкретным лапкам меги)
- Вложения
-
- схемка_на_кнопки.JPG
- (26.76 КБ) 662 скачивания
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
http://chipenable.ru/index.php/how-conn ... icros.html посмотрите здесь варианты подключения
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
pavel123 писал(а):В протеусе работает, это понятно...
Интересно, как оно работает, если в коде вообще никакой обработки нажатия нет. Даже стандартная команда Debounce не дописана.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
pavel123 писал(а):us5caa
Спасибо, я как то так и думал.
Мне нужно 4 кнопки подключить.
Вот такое подключение правильно будет?
(схемка без привязки к конкретным лапкам меги)
- Вложения
-
- 222.gif
- (2.87 КБ) 2310 скачиваний
С уважением,
Алексей.
Алексей.
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
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 в вопросах и ответах
Если пин порта настроен на ВЫХОД, то запись 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 в вопросах и ответах
edm2007 писал(а):Код: Выделить всё
Config PINB.1 = Input ' настраиваем вывод порта на вход
PORTB.1 = 1 ' включаем внутренний подтягивающий резистор (или Set PORTB.1)
По умолчанию внутренние резисторы отключены.
Спасибо !
С уважением,
Алексей.
Алексей.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Пожалуйста.
В даташите указывается номинал этих резисторов. Для Attiny2313:

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

Разброс конечно большой, потому в ответственных конструкциях лучше ставить внешний резистор. Ведь на линии RESET тоже есть внутренний подтягивающий резистор, но все равно предпочтительнее ставить внешний. Что во всех конструкциях и делается...
Кстати, pavel123, у Вас как раз в коде и включен внутренний резистор. И это при том, что Вы подключаете внешний. Так что определяйтесь.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- pavel123
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Чт май 17, 2007 09:44:13
- Откуда: Украина, г. Кривой Рог
Re: BASCOM AVR в вопросах и ответах
Спасибо всем, кто откликнулся на мою просьбу.
Обработка нажатия есть,
, просто я не весь код показал...
С оглядкой на то, что:
Вот я и пытаюсь определиться, как сделать правильно.
edm2007 писал(а):Интересно, как оно работает, если в коде вообще никакой обработки нажатия нет.
Обработка нажатия есть,
edm2007 писал(а):Кстати, pavel123, у Вас как раз в коде и включен внутренний резистор. И это при том, что Вы подключаете внешний. Так что определяйтесь.
С оглядкой на то, что:
edm2007 писал(а):Разброс конечно большой, потому в ответственных конструкциях лучше ставить внешний резистор. Ведь на линии RESET тоже есть внутренний подтягивающий резистор, но все равно предпочтительнее ставить внешний. Что во всех конструкциях и делается...
Вот я и пытаюсь определиться, как сделать правильно.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
pavel123 писал(а):просто я не весь код показал...
Оригинально. Я те та бу соо пи. Ну а что, ответ же есть, просто я не весь текст показываю.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- pavel123
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Чт май 17, 2007 09:44:13
- Откуда: Украина, г. Кривой Рог
Re: BASCOM AVR в вопросах и ответах
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 в вопросах и ответах
pavel123 писал(а):Я так понял что если не использовать строку Portc.2 = 1 , то внутренний резистор не подключается. И нужно "механическим" способом резистором 10к выводить этот порт в состояние 1.
Да, все верно. Для опроса кнопки нужно чтобы на выводе был какой-то определенный уровень. Нельзя оставлять болтающийся в воздухе вывод, после отпускания кнопки на выводе должен установиться противоположный уровень. Вот как раз подтягивающий резистор и обеспечит 1 на выводе, а нажатая кнопка - 0. А какой резистор будет, внутренний или внешний - решать Вам.
Резистор же на 330R ограничит ток в случае неправильной конфигурации вывода порта. Если Вы по ошибке настроите этот вывод на ВЫХОД и выставите 1, то при нажатии кнопки пин порта скорее всего выйдет из строя. Резистор же спасет от такой неприятности. Если код написан без ошибок, то этот резистор не нужен. Но если Вы делаете первые шаги или это отладочная плата, то этот резистор просто обязателен.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Доброго времени суток !
Уважаемые знатоки, а как грамотно сделать такую вещь : подпрограмма прерывания int0. Из подпрограммы нужно как-то
обратиться к другой подпрограмме, в которой написано одно и то-же монотонное действие (чтобы это действие несколько раз не писать). Ведь подпрограммы в подпрограмме прерывания быть не может ?...
Вот "выводим на LCD" нужно запихнуть в подпрограмму, так как обращаться к ней будем не только из подпрограммы прерывания. Потому что выводить на LCD будем очень хитро и через одно место (об этом позже, если всё получится). И если это "выводим на LCD" писать несколько раз где это нужно, то никакой памяти не хватит.
Уважаемые знатоки, а как грамотно сделать такую вещь : подпрограмма прерывания 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 в вопросах и ответах
А если в цикл включить опрос не подходит?
Код: Выделить всё
Config Int0 = Rising
On Int0 Read1307
do
'опрос кнопок
'выводим на lcd
loop
read1307:
'читаем ds1307
return
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Ну вывод на дисплей-то можно оформить как подпрограмму. Касаемо вызова: по идее можно и из прерывания вызвать, но это конечно неправильно. Может просто в прерывании выставлять флаг необходимости обновления дисплея, а в основном цикле уже его щупать?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Главная проблема в таком подходе, что вывод на дисплей из прерывания может произойти во время... вывода на дисплей из основной программы. Да и сам вывод на дисплей - процедура ну очень длинная. Обработчики прерываний должны занимать минимум времени. Не забывайте, что они ПРЕРЫВАЮТ основную задачу программы.edm2007 писал(а):Ну вывод на дисплей-то можно оформить как подпрограмму. Касаемо вызова: по идее можно и из прерывания вызвать, но это конечно неправильно. Может просто в прерывании выставлять флаг необходимости обновления дисплея, а в основном цикле уже его щупать?
Безусловно, лучший вариант - задрать флаг обновленных данных от датчика, а в теле программы выводить эти данные по флагу готовности и тут же его гасить, чтобы не было повторного вывода одного и того же.
С уважением,
Виктор.
Виктор.