0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 66
|
|
1 | |
Диплом на тему "Расширение возможностей клавиатуры"04.04.2012, 22:19. Показов 6857. Ответов 11
Метки нет (Все метки)
Доброго времени суток всем. Для себя и для дипломного проекта захотел сделать устройство, на котором набирается номер команды и по 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
|
04.04.2012, 22:19 | |
Ответы с готовыми решениями:
11
На какую тему писать диплом/на какую тему Вы писали диплом в ВУЗе? Расширение возможностей с++ Расширение возможностей QlineEdit Расширение возможностей буфера обмена |
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
|
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
Как с ней бороться? проект в студию. и попробуй пересоздать проект и добавить исходники вручную. и не использовать в путях кирилицу.
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 | |
31.05.2012, 15:21 | |
Помогаю со студенческими работами здесь
12
Расширение возможностей программы-конфигуратора ПК Расширение возможностей сводных таблиц Семинар "Расширение возможностей сайта компании" Расширение возможностей ввода/вывода. Работа с файлами Дали тему на диплом Не могу выбрать тему на диплом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |