Первые успехи с USB
Oct. 23rd, 2012 01:23 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Итак, поскребя по сусекам посмотрев примеры с easyelectronics.ru, я таки собрал все воедино и у меня получился рабочий эмулятор USB→COM (его, кстати, можно и как реальный использовать при небольшой доработке).
Вот — исходники. Пока что в них полным-полно мусора, но наконец-то после выполнения
и переподключении USB (почему-то сразу после заливки железяка не определяется, наверное, нужно при запуске сначала отключить USB, подержать его немного так, а потом уже включать - ХЗ, будет моим домашним заданием) появляется устройство /dev/ttyACM0!!!
Я установил простенький пакетик tinyserial (сильно облегченная версия minicom'а, близкая к мастдайкотерминалу) и попробовал повзаимодействовать с железякой.
Какой же была моя радость, когда сразу же после запуска я получил:
Интересно то, что т.к. реального последовательного порта "с той" стороны пока нет, скорость можно установить совершенно любую. Мы пока не проверяем, что там за настройки порта компьютер прислал.
Ну и напоследок расскажу, что же делает этот пример.
Здесь при запуске активируется подключение к USB и запускается в режиме мерцания светодиод. Скважность мерцания изменяется командами '+' и '-', команда '0' отключает светодиод, команда '1' включает постоянное свечение, команда 'b' активирует режим мерцания.
Кроме того, я попробовал возможности EXTI: на кнопочку WAKEUP повесил прерывание. При нажатии кнопки светодиод либо горит постоянно (если до этого мигал или был потушен), либо мигает.
Таймер запущен с интервалом в 10мс, поэтому мерцания светодиода почти не заметно: команды '+' и '-' как бы изменяют его яркость.
Сама макетка один раз в секунду отправляет поочередно символы с кодами от 33 до 127 включительно, а также сигнализирует о принятии команды от пользователя.
Понятное дело, из-за того, что tinyserial отправляет команды посимвольно, сделать более длинный командный пакет в нем нельзя. Но это уже просто — для дальнейших испытаний напишу простенькую программку-коммутатор.
Вот — исходники. Пока что в них полным-полно мусора, но наконец-то после выполнения
make && make load
и переподключении USB (почему-то сразу после заливки железяка не определяется, наверное, нужно при запуске сначала отключить USB, подержать его немного так, а потом уже включать - ХЗ, будет моим домашним заданием) появляется устройство /dev/ttyACM0!!!
Я установил простенький пакетик tinyserial (сильно облегченная версия minicom'а, близкая к мастдайкотерминалу) и попробовал повзаимодействовать с железякой.
Какой же была моя радость, когда сразу же после запуска я получил:
com /dev/ttyACM0 1500000 C-a exit, C-x modem lines status [STATUS]: RTS CTS DTR !"#$%&'() Fad * Fad + Fad , Fad - Fad . Shn / Shn 0 Shn 1 Shn 23 Off 45 On 6 Blk 78 Unk 9 Shn :; Shn Fad < Fad Fad =>?@A Unk
Интересно то, что т.к. реального последовательного порта "с той" стороны пока нет, скорость можно установить совершенно любую. Мы пока не проверяем, что там за настройки порта компьютер прислал.
Ну и напоследок расскажу, что же делает этот пример.
Здесь при запуске активируется подключение к USB и запускается в режиме мерцания светодиод. Скважность мерцания изменяется командами '+' и '-', команда '0' отключает светодиод, команда '1' включает постоянное свечение, команда 'b' активирует режим мерцания.
Кроме того, я попробовал возможности EXTI: на кнопочку WAKEUP повесил прерывание. При нажатии кнопки светодиод либо горит постоянно (если до этого мигал или был потушен), либо мигает.
Таймер запущен с интервалом в 10мс, поэтому мерцания светодиода почти не заметно: команды '+' и '-' как бы изменяют его яркость.
Сама макетка один раз в секунду отправляет поочередно символы с кодами от 33 до 127 включительно, а также сигнализирует о принятии команды от пользователя.
Понятное дело, из-за того, что tinyserial отправляет команды посимвольно, сделать более длинный командный пакет в нем нельзя. Но это уже просто — для дальнейших испытаний напишу простенькую программку-коммутатор.
no subject
Date: 2016-05-28 07:45 am (UTC)