|
Идея заключается в описании библиотеки описывающей конкретный микроктроллер и последующей реализации устройства как экземляра класса и управления непосредственно из программы ПК по USB.
Проект создан по идее поданной Microsin на своём сайте. Был показан и реализован пример на С++.
На основе этого примера был написан код реализующий подобную функциональность на Python с использованием библиотеки libusb. Вся суть заключается в упаковке адресса и команды на стороне ПК, передачи по USB, распаковке на стороне МК и выполнении. Пример работы со стороны ПК будет выглядеть следующим образом:
| VUSB_test.py |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
# -*- coding: UTF8 -*- from ATMEGA16 import * import usb #u"используем экземпляр класса" MC = ATMega16() #находим устроство MC.find_device() MC.open() #u"если меняем vid и pid" vid = 0x16C0 pid = 0x05DC #u'проверка работы ATMEGA16.py' print "MC.DDRA=",hex(MC.DDRA) MC.DDRA = 0xFF MC.DDRB = 1 MC.PORTB = 0x01 MC.PORTB = 0x00 print "MC.PORTB=",hex(MC.PORTB) #u'мигаем лампочкой' for x in range (1000000): if ((x % 10000) < 5000): MC.PORTB = 0x01 else: MC.PORTB = 0x00 MC.close()
|
На основе данного модуля был реализован проект SFR , таким образом(за счёт расширения функциональности), что они совместимы и всё описанное можно испытывать на плате SFR.
Преимушества перед оригинальным проектом:
- лёгкость изменений (не надо компилировать),
- наглядность,
- кроссплатформенность (Windows, Linux, MacOS)
Таким образом,используя описанный выше метод, можно легко реализовать модуль простого ввода вывода, при этом получить доступ к практически всем возможностям микроконтролера. При этом варинты примения проекта IMHO гораздо шире, чем просто быстрое прототипирование. Например, системы ввода вывода для ПК - по сути практически нет доступных и простых систем воода вывода с ПК. Тем более кроссплатформенных. Точнее не было Теперь можно реализовать простенькую систему регистрации или не очень скоростную управления.
Все необходимые файлы(проекты, прошивка) можно найти в файловом архиве.
по просьбе Андрея Синюткина написал статью по быстрому старту.
заметки:
- опытным путём была достигнута скорость опроса в 10 кГц.
- Пример предназначал для ATMega16, но отлино работает и на ATMega8, т.к. большинство адресов совпадает. Для переноса на другой МК необходимо всего лишь подправить адресса регистров в описании модуля МК.
- Пока работает с одной платой, подключённой к ПК, но есть варианты с несколькими, по мере готовности появление модификации достаточно вероятно
p.s. Может быть пример и был совместим с родоначальником, но не уже не помню, т.к. это было давно(года полтора назад). Сейчас же понадобилось переработать проект, вот и описал его здесь
|