Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.01.2012, 10:15
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
На днях думал думал, какой вариант меня-бы устроил!? Я все про эти кнопки для моего проекта, еди его в кювет! (Контроллер, я все таки буду использовать этот же Atmega8515.) Вроде пару пустяков, цепляй к любому пину и строчи программу! Начал с рассмотрения элементарных программ, посмотреть можно выше в моих постах.
Первый вариант без прерываний, второй с прерываниями. Крутил программу и так и сяк, типа - на нажатие, и на отжатие. В этой же теме рассмотрели различные нюансы и т. д. Пока остановился на этом алгоритме:
Потом добавил еще три кнопки в схему. Усложнился алгоритм, соответственно и прога больше. Но опять, меня не устраивает Если захочется штук 20 кнопок навесить на МК, так тогда и пинов не останется. Бороздил просторы нета в поисках моих решений, вариантов тьма! Правда большая часть на С, которого я не знаю, но варианты на ассеблере тоже есть.
Не зря говорил pinco
Цитата:
|
... - в общем разных вариантов много , только успевай реализовывать .
|
Остановился пока на клавиатурной матрице 4x4. Есть возможность реализовать часть клавиш например под коды цифр и оставшуюся часть под коды операций. В дальнейшем, даже если и захочу еще больше клавиш, то можно использовать доплогику дешифраторы, чтобы не расходовать пины.
Еще конечно был рассмотрен проект PC AT клавиатуры к AVR, для меня пока темный лес с алгоритмом, хотя даже не знаю, что сразу делать? Рассматривать матрицу 4x4, или сразу в бой PC AT?
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
08.01.2012, 14:40
|
|
Прописка
Регистрация: 04.12.2010
Сообщений: 243
Сказал спасибо: 9
Сказали Спасибо 51 раз(а) в 32 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
Пока остановился на этом алгоритме:
|
Данный алгоритм я бы алгоритмом не назвал, это больше напоминает общий принцип опроса кнопки. Видно я чёт пропустил, а если не секрет, зачем вам столько кнопок?
Присмотритесь к варианту
Сообщение от omercury
|
Там же проект в Proteus 7.7.
PWM_Key_Led.zip
|
На мой взгляд его можно брать за основу, немножко доработать и будет опрашивать толпу кнопок.
Мой вариант хорош до 5 кнопок:
Сообщение от Pajatel
|
Ну вот подготовил свой код.
knopk.ZIP
|
Если мне захочется допустим больше 5 кнопок, то скорей всего я модернизирую свой, но это сопряжено с увелечением количества используемых регистров или нужно будет использовать ОЗУ.
PS А вообще, чтоб ощутить проблему, советую склепать тестовую схемку с той же матричной клавой 4х4 и позапускать на ней это "море разных вариантов" что есть в нете, глядишь и действительно отковыряете какой стоящий... или воспользоватся кодом предложенным atmel
appnote AVR240
Последний раз редактировалось Pajatel; 08.01.2012 в 15:29.
|
|
|
|
08.01.2012, 16:03
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от Pajatel
|
это больше напоминает общий принцип опроса кнопки.
|
Правильно подметил, я это имел ввиду - принцип действия, а то что будет выполняться после нажатия, меня сейчас это не интересует.
Сообщение от Pajatel
|
А вообще, чтоб ощутить проблему, советую склепать тестовую схемку с той же матричной клавой 4х4
|
Я так то-же уже думаю. Ковырял на наших и забугровых сайтах PC AT клавиатуры к AVR все проги на С. Да и считанные люди занимаются такими проектами. На ASM-е примеров нет, может пропустил где? Смотрел руководство по применению AVR313: Interfacing the PC AT Keyboard алгоритм вроде простой, но не сейчас... во первых так как я этим не часто занимаюсь, короче долго разбираться и сложно!
Сообщение от Pajatel
|
зачем вам столько кнопок?
|
Сейчас не могу сказать конкретно, так как я не определился с схемой. И тем более пока с AVR-ми на вы.
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
08.01.2012, 16:38
|
|
Прописка
Регистрация: 04.12.2010
Сообщений: 243
Сказал спасибо: 9
Сказали Спасибо 51 раз(а) в 32 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
PC AT клавиатуры к AVR все проги на С
|
..ну не обезательно, раньше выкладывал ссылку на сайты где подсматриваю кода, повторю конкретно по теме клавы:
PS2 KEYBOARD EMULATOR FOR 8515
AT KEYBOARD PROGRAM 128
AT/PS2 KEYBOARD PROGRAM
|
|
|
|
08.01.2012, 17:02
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от Pajatel
|
..ну не обезательно, раньше выкладывал ссылку на сайты где подсматриваю кода
|
А заходил же по ссылкам!
Рейтинг у сайта слабенький, того и не нашел в google, в самом конце поиска, пока дойдешь, забудешь что искал!
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
08.01.2012, 23:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от alvadep
|
Честно говоря, к схеме из #400 много вопросов.
Цепи переключателя режимов SA (R4, R20-R23).
Если при опросе этих цепей включены внутренние подтягивающие резисторы порта В, то через сопротивление 3к3 не возможно определить состояние LOW. А если внутренняя подтяжка отключена, то, как тогда определить состояние SA3.2? Есть правда вариант использования емкостного эффекта при переключении порта В с выхода на вход, но это, по-моему, бред.
|
Ессно бред.
Сопротивление внутренних pullUp резисторов порядка 50-100к. При 3к3 внешних чётко фиксируется "0" на входе. На выходы при токе пина 20-25мА они влияния не оказывают.
Сообщение от DAVE_ELEKTRIK
|
Не зря говорил pinco
|
Конечно не зря. Вот тут рассмотрен вариант на ПЛИС. Вариантов масса, осталось выбрать приемлемый для конкретного применения, а чётко понимая алгоритм, несложно сделать и программу.
|
|
|
|
09.01.2012, 02:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от omercury
|
Ессно бред.
Сопротивление внутренних pullUp резисторов порядка 50-100к. При 3к3 внешних чётко фиксируется "0" на входе. На выходы при токе пина 20-25мА они влияния не оказывают.
|
Мои выводы опираются на многолетний опыт использования этих процессоров, и, как правило, экземпляры попадаются не с лучшими параметрами. Внутренние резисторы pull-Up у пиков могут быть в диапазоне 12,5-100к (смотрите datasheet, параметр D070). Так, что при худшем варианте напряжение на ножке порта будет больше 1В, а PIC-процессор такое напряжение уже не однозначно интерпретирует как LOW. Плюс к этому если опрос будет происходить сразу (или через не большое время) после переключения порта с выхода на вход, то будет сказываться еще и емкость пина, т.е. будет влиять предыдущее состояние выхода. Я обычно ставлю резисторы не 3к3, а где-то 470-620 Ом, что тоже не оказывает влияние на выходной сигнал, но зато нет зависимости от разброса параметров процессора.
Кстати AVR в этом плане лучше.
|
|
|
|
09.01.2012, 12:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
AVR- смотря какие ...если 8515 ...хмммм не прав я . Хоть аналогом C52 сделаны, но порт А в 52 AD- там открытые выхода ...подтяжка требовалась...в AVR честные вроде (проверю на днях). в PDF -ALL Ports.
|
|
|
|
10.01.2012, 17:00
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Есть один вопросик по прерываниям. Для чего нужно сохранять значение из temp-а, а также состояние регистра SREG в стеке.
Пример взят из #399
TIM0_OVF:
PUSH temp ;на всякий случай сохраняем в стеке R16
IN temp, SREG ;и SREG
PUSH temp
.
‹***что то там делаем***›
.
INC Rt_ms ; *** счетчик ms *** 0-255 и по новой
.
POP temp ;Вытаскиваю и востанавливаю R16 и SREG
OUT SREG,temp
POP temp
RETI
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
10.01.2012, 18:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
Есть один вопросик по прерываниям. Для чего нужно сохранять значение из temp-а, а также состояние регистра SREG в стеке.
...
PUSH temp ;на всякий случай сохраняем в стеке R16
|
Так как далее будет использоваться temp, его содержимое надо сохранить для восстановления после выхода из обработчика.
Цитата:
|
IN temp, SREG ;и SREG
PUSH temp
|
Содержимое регистра состояния SREG через теперь свободный (его значение спрятано в стеке) temp тоже сохраняем в стеке (SREG напрямую не пушируется/попится). Это делается для того, чтобы при выходе из обработчика восстановились не только регистры с данными, но и статусный регистр (флаги и прочее). Программа ведь должна продолжать выполняться, словно ее и не прерывали, ни в коем случае ничего не меняя.
Цитата:
|
POP temp ;Вытаскиваю и востанавливаю R16 и SREG
OUT SREG,temp
POP temp
RETI
|
В обратном порядке все извлекаем из стека и восстанавливаем статус кво.
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 10.01.2012 в 18:12.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:58.
|
|