Home Проекты Программные V-USB IO быстрый старт

Случайная новость

Добавлена возможность комментирования материалов сайта. Для незарегистрированных пользователей необходимо будет пройти модерацию.
Поддерживаются bb-code, ссылки на YouTube, GoogleVideo, Wiki.

V-USB IO быстрый старт PDF Печать E-mail
Автор: Sinopteek   
27.02.2011 10:52

Для начала необходимо определится с необходимым:

  • Собственно сам Python
  • модуль PyUSB
  • libusb
  • драйвер для устройства (windows)

В linux через систему пакетов - всё необходимо утянется само и сразу, необходимо только указать необходимые пакеты.

В случае windows (необходимо устанавливать версии скомпилированные под соответсвующие версии интерпитатора Python):
Надо сначала поставить pywin32 (возможно не нужен, т.к. не точно помню - нужен был для COM-портов точно, а в описании pyUSB вроде не указан)(кто проверит отпишитесь),
а потом ещё и пакет pyUSB.

Подключаем устройство и устанавливаем его, используя драйвер.

Установить libusb  как фильтр (libusb-win32-devel-filter) для всех устройств(в старых версиях настаивается автоматически) или для конкретного устройства в новых (начиная с 1.2). Для версий >=1.2 после установки самого фильтра запускаем настройску устройств предварительно подключив устройство на которое хотим установить фильтр, выбираем install - device filter и выбираем необходимое устройство (vid:16c0 pid05dc V-USB_IO 12Mhz.com) нажимаем Install.

под linux таких проблем нет - работает всё и так, может быть придётся настроить права на доступ к определённому устройству или группе пользователей USB, ну или запускать под root'ом Laughing


далее только под Win:

Проверяем работу - запускаем из пуска LibUSB-win32/Test (Win) Program
ищем устройство
с vid:16c0 pid05dc V-USB_IO - должно быть.

 

Теперь проверяем работу PyUSB, необходимо скачать pyusb, но не установщик а zip или tar.gz архив в нём есть примеры - нас интересует usbenum.py - вывод должен быть практически аналогичен тестовому примеру под windows. Опять же ищем устройство с vid:16c0 pid05dc V-USB_IO - должно быть Smile

После этого можем испытывать пример описанный в проекте (VUSB_test.py):

подключаем модуль(должен лежать в той же папке что и запускаемый файл) и собвственно pyUSB

2
3
from ATMEGA16 import *
import usb

Получаем устройство как экземпляр, находим его (последнее из многих)

5
6
7
8
9
#u"используем экземпляр класса"
MC = ATMega16()
 
#находим устроство
MC.find_device()

Далее остаётся только открыть устройство и можно работать используя обычные комманды С для МК (здесь print - стандартный вывод в консоль)

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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)

Можно реализовывать циклы в стиле python (подключаем диодик на PB0)

29
30
31
32
33
34
#u'мигаем лампочкой'
for x in range (1000000):
if ((x % 10000) < 5000):
MC.PORTB = 0x01
else:
MC.PORTB = 0x00

главное не забыть закрыть устройство (хотя оно на самом деле закрывается само при закрытии интерпитатора), но иногда могут возникать проблемы, в этом случае необходимо перевоткнуть устройство в USB порт.

35
MC.close()

 

Обновлено 27.02.2011 13:13
 

Добавить комментарий


Защитный код
Обновить

Облако тегов

python   libusb   AVR   usb   sfr   V-USB   USB   avr  
Joomla Extensions