0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
1

Диплом на тему "Расширение возможностей клавиатуры"

04.04.2012, 22:19. Показов 6857. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем. Для себя и для дипломного проекта захотел сделать устройство, на котором набирается номер команды и по USB отсылается один или несколько байт, которые представляют собой какие-либо сочетания или последовательность клавиш. Или вообще восполняет недостаток некоторых клавиш (у меня на ноуте нету допустим, кнопки паузы, очень полезной для Turbo C, например). Ничего гениального, но диплом я всё-таки хочу сдать и тема уже заявлена. Я создаю эту тему, чтобы обращаться всякий раз, когда не смогу сам решить проблему.

Для удобства заказал себе Pinboard II. Штука классная, сейчас на ней отлаживаю первый этап - собственно реализацию матричной клавиатуры. Я переделал расширенную демопрограмму, вставив в неё кусок из примера процедуры сканирования (слегка переделав). Теперь контроллер должен реагировать на все 12 кнопок, выводя на экран номер нажатой кнопки (1-0, С и Е). Однако он почему-то всё время считает, что нажата клавиша, причём не какая-нибудь, а именно 7. Это первый столбец и третья строка.

Что я делал в поисках причины:
* Симулировал в AVR Studyo. При ни одной нажатой клавише (1 на всех ножках PinC[0..3]) программа благополучно завершает сканирование всех трёх столбцов и выходит. Полагаю, что логика программы в порядке.
* Нажимал все клавиши. Никакой реакции.
* Размыкал все связи с кнопками. 7-ка продолжает "видеться". Значит, проблема не в шлейфах.
* Замыкал проводками разные строки на разные столбцы - прямо на ножках контроллера. Никаких изменений. Значит, процедура выполняется как-то странно.
* Всё это время продолжаю наблюдать работу двух ШИМ-"мигалок", а также реакцию на поворот переменного резистора. Информация выводится на дисплей, пока я его ещё кручу, и возвращается обратно к тексту о нажатой кнопке. Значит, это не зависание контроллера.
* Мультиметром замерял напряжение между каждым штырём PortC и землёй. На [0-3] и на [5] 3.28V, на [4] - 0, на [6-7] 3.42V.

Помогите, пожалуйста, решить проблему.




[119.02 Кб]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 22:19
Ответы с готовыми решениями:

На какую тему писать диплом/на какую тему Вы писали диплом в ВУЗе?
Скорее всего не там создал тему, не кидайте камнями :) Вопрос, на какую тему можно написать...

Расширение возможностей с++
Доброго времени суток! Я изучаю с++. Изучение начал 2 года назад, так до сих пор толком и не...

Расширение возможностей QlineEdit
Не знал как правильно назвать тему, да и возможно то что я хочу провернуть делается даже не с...

Расширение возможностей буфера обмена
Добрый день. Нашёл в интернете код для расширения возможностей буфера обмена, но не могу понять по...

11
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
04.04.2012, 22:36 2
При пересадке рядов на PortA заработали кнопки 2(пишет, что 3), 3(выдаёт АЦП 255), 8, 9, 0, Е (истинную правду толкует, барин!).

Получается, что на PortC что-то уже висит программно и мешает сканировать. А что именно? Можно ли это убрать? И как?
0
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 442
04.04.2012, 22:44 3
похоже что JTAG. Посмотри фузы.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
04.04.2012, 23:02 4
Я могу это сделать с помощью AVR Prok? Я там заходил во вкладку Advanced, но зона FUSE неактивна. Я никогда не работал с фьюзами, так что даже не знаю, чем их шить, и можно ли это сделать при подключении через USB-кабель, или есть "хитрый план".
0
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 442
05.04.2012, 01:41 5
Читай внимательно - http://iosyitistromyss.ru/avr-uchebnyj- ... e-bit.html.
0
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
05.04.2012, 02:46 6
По дефолту включен жтаг. Это выводы TDI TDO TMS TCK т.е. их нельзя использовать. Выключи жтаг и будет тебе счастье. AVRProk тебе не поможет, он фузы не трогает, но можно сбросить жтаг программно.

В регистре MCUCSR надо установить бит JTD после чего jtag отвалится и не будет мешать.

Только возможно простой единицей в этот бит не прорешает. Там точно не помню процедуру, возможно надо будет два раза подряд записать единицу в течении не более чем четыре такта (всякие серьезные вещи включаются таким макаром). Уточни в даташите.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
26.05.2012, 18:24 7
По совету преподавателя отказался от идеи переделывать демопрошивку и начал с нуля. Добавил подтягивающие резисторы. Теперь я по терминалу могу отследить нажатие 9 из 12 кнопок - первый ряд не сканируется! Точнее, сканируется только третья кнопка, но выдаёт скан-код первой. В чём может быть причина?
В протеусе я не симулировал - только сделал схему подключения.

//UPD: подправил схему и картинку на достоверные.


[66.16 Кб]

0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
26.05.2012, 20:13 8
Ответ найден. Нужно было увеличить задержку в процедуре KeyLoop. Просто добавил вызов B_Delay, который использовал для антидребезга (ещё не откалиброванного).
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
28.05.2012, 19:16 9
Пытаюсь запустить вот этот проект на своей АТМеге16. Уже нашёл, где указать тип контроллера, но теперь при сборке выдаёт ошибку:
Код
make: *** No rule to make target `../main.c, needid by `main.o.  Stop.
Как с ней бороться?
0
1 / 1 / 0
Регистрация: 19.12.2009
Сообщений: 2
28.05.2012, 22:42 10
Как может незнакомая флешка, воткнутая в мой компьютер, не вызывать подозрений )))
Даже по идее ;) И даже после переустановки ОС?
Но мысль мне понравилась так сказать наоборот - вот-бы кто-нибуть воткнул в мой комп подобный девайс. Атмега, кварц да еще и корпус нахаляву - не отказался-бы )))
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
28.05.2012, 22:56 11
Цитата Сообщение от Hostvymd
Пытаюсь запустить вот этот проект на своей АТМеге16. Уже нашёл, где указать тип контроллера, но теперь при сборке выдаёт ошибку:
Код:
make: *** No rule to make target `../main.c, needid by `main.o. Stop.

Как с ней бороться?
проект в студию. и попробуй пересоздать проект и добавить исходники вручную. и не использовать в путях кирилицу.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
31.05.2012, 15:21 12
Слил все хэдеры в одну папку, дописал, где ругалось, добавил недостающее - теперь собирается.

Вырезал из оригинала забор случайных данных из АЦП и принудил постоянно высылать один и тот же символ. Не хочет работать.
По схеме видно, что Д+ и Д- подключаются к PD0 PD1 - но D+ ведь надо подключать к Int0 - это уже PD2! Я замкнул джампером PD1 и PD2 - всё равно не работает. Устройство не опознано - не высылает дескриптор. Что делать?


[128.4 Кб]
0
31.05.2012, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2012, 15:21
Помогаю со студенческими работами здесь

Расширение возможностей программы-конфигуратора ПК
Друзья, подскажите, как реализовать проверку комплектующих ПК на совместимость. Работаю с базой...

Расширение возможностей сводных таблиц
Итак, идея проста: мне необходимо добавить в стандартную сводную таблицу в область "Фильтр отсчета"...

Семинар "Расширение возможностей сайта компании"
Как повысить эффективность сайта? Существуют ли технологии, позволяющие самостоятельно управлять...

Расширение возможностей ввода/вывода. Работа с файлами
В файлах F1 и F2 числа размещены по возрастанию. Создайте такой файл F3 чтобы объединял файлы F1 и...

Дали тему на диплом
привет всем. Дали тему на диплом (програмный комплекс по управлению доступом в интернет)....

Не могу выбрать тему на диплом
Добрый день! Встал вопрос выбора темы диплома, не могу с ней определиться. Может быть поделитесь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru