Авторизация


...

Кто на сайте?

Сейчас 93 гостей и 5 зарегистрированных пользователей на сайте

  • inmiernikwesto
  • questmanie

Статистика

-Посетители : 25729
-Материалы : 210

Пользователь сайта продает...

  MRF24J40MA-I/RM

Пользователь сайта покупает...

Переходник USB - 1Wire на микроконтроллере PIC18F2550

Автор: Alex Просмотров: 8064

 

 

"Сердцем" устройства является микроконтроллер PIC18F2550 фирмы Microchip, в который зашивается прошивка, лежащая ниже в архиве. Питание берётся с гнезда USB и вполне достаточно для нормальной работы устройства. Светодиод сигнализирует об обмене информации по USB. Когда идёт передача/приём данных, он мигает.
 



Работа с устройством осуществляется через библиотеку mpusbapi.dll и, специально мной написанные файлы USB.cpp и USB.h, которые необходимо добавить в проект с программой. Файлы писались и тестировались в среде C++Builder 6.


Функции для работы с устройством :

void USB_Dev_Init(void)

Инициализирует работу с устройством.
Вызывается в начале программы, перед работой с устройством.

 

unsigned int USB_Get_Device_Count(void)

Возвращает количество подключенных устройств.
Используется для обнаружения подключенного устройства к USB-порту.
1 - устройство подключено. 0 - устройство не подключено.

 

DWORD SendReceivePacket(BYTE *SendData, DWORD SendLength, BYTE *ReceiveData,
DWORD *ReceiveLength, UINT SendDelay, UINT ReceiveDelay);

Передаёт в устройство данные и ждёт от него ответа.

 

SendData Указатель на буфер передаваемых данных
SendLength Длина передаваемых данных в байтах
ReceiveData Указатель на буфер
ReceiveLength Указатель на DWORD-переменную, в которой вернётся длина принятых данных в байтах.
SendDelay Задержка таймаута передачи данных в USB
ReceiveDelay Задержка таймаута приёма данных из USB


Управление линией 1-Wire производится с помощью команд. Команда в пакете всегда идёт первым байтом, затем, если необходимо, идут данные, связанные с этой командой.

Команды для работы с линией 1-Wire :

USB_CMD_RESET (0x01)

Длина пакета = 1 байт.

Посылает на линию импульс сброса и возвращает факт присутствия сенсоров на линии
Возвращаемые значения, 1 байт :
1 - устройства на линии присутствуют.
0 - устройства на линии отсутствуют.

 

USB_CMD_SEND_BYTE (0x02)

Длина пакета = 2 байта.

Посылает в линию байт данных.
Передаваемые значения :
Байт №2 - байт данных, передаваемый в линию.
Возвращаемые значения, 1 байт :
1 - всегда.

 

USB_CMD_GET_BYTE (0x03)

Длина пакета = 1 байт.

Читает байт данных из устройства на линии.
Возвращаемые значения, 1 байт :
Байт №1 - байт, прочитанный с линии.

 

USB_CMD_FIRST_SEARCH (0x04)

Длина пакета = 1 байт.

Начало поиска устройств на линии.
Возвращаемые значения, 9 байт :
Байт №1 - 1, если устройство найдено; 0 - не найдено ни одного устройства
Байты №2...9 - ROM-код найденного устройства.

 

USB_CMD_NEXT_SEARCH (0x05)

Длина пакета = 1 байт.

Продолжение поиска устройств на линии. Использовать только если первый поиск был удачным.
Возвращаемые значения, 9 байт :
Байт №1 - 1, если устройство найдено; 0 - не найдено ни одного устройства
Байты №2...9 - ROM-код найденного устройства.

 



С печатной платой я особо париться не стал и взял готовую в тритоне - TRT-USB. Она идеально подошла под эту задачу.
Вот, собссно, фотки собранного переходника на этой плате:



Установка драйвера устройства :

Установка данного устройства не сложней установки любого простого USB-устройства.
Вставляем устройство в USB. Вылезет мастер нового оборудования. Указываем папку с драйвером и устройство готово к работе.
В диспетчере устройств должно появится следующее:


Если оно появилось - поздравляю Вас - вы стали счастливым обладателем супер-мега-переходника USB - 1-Wire :)



Демо программка :

 Ну и, естественно, я не оставил читателей без "десерта" :)
Подключил к плате датчик температуры DS18B20 и написал небольшу демо-программку, читающую ID датчика и, каждые 1.5 секунды, температуру. Программа с исходниками лежит ниже в архиве.
Скриншоты программы :

 

Устройство не подключено к USB

Устройство подключено, но датчик не обнаружен

Устройство подключено, показан ID датчика, вывод температуры

 


И на последок, фото термометра с этой платкой :

Файлы проекта :

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Случайные статьи....

Prev Next

ПП перекодировки шрифта для вывода русских символов на ЖК индикатор…

04-06-2012 Super User

 Вывод русского текста в ЖК индикатор  (контроллера HD44780) имеет ряд особенностей,  в связи с тем, что коды русского шрифта ASCII, не соответствует таблице символов прошитых в ЖК дисплее,  до передачи в ЖКИ  кода символа его необходимо перекодировать. Здесь показан один из...

Контроллер шагового двигателя.

02-07-2011 Sergey Roslik

Контроллер шагового двигателя.

Эта статья является дополнением к статье: "Интерфейсная плата для станка ЧПУ". Схема и прошивка контроллера была взята с сайта http://robozone.su. На сайте небыло под неё печатной платы, я развёл свою. Плата получилась односторонняя, с минимальным количеством перемычек. Собрал, подключил двигатель, прошил микроконтроллер...

Порты ввода/вывода МК PIC18XXXX.

27-06-2011 Super User

В микроконтроллерах 18 серии в зависимости от типа может быть разное количество портов. Сами порты то же могут быть различной разрядности (линий вывода).   Некоторые  порты    ввода/вывода мультиплексированы с   периферийными  модулями микроконтроллера. При работе на выход управление   (изменение его...

Замена контроллера на плате конденсатора для автозвука.

29-04-2011 Альберт Бикбулатов

Замена контроллера на плате конденсатора для автозвука.

Столкнулся с парой случаев, когда потребовалось заменить контроллер на плате конденсатора типа PROLOGY CAP или CAD. В одном случае для ремонта, а в другом, для расширения функций. Поскольку родной контроллер не перепрошивается, в обоих случаях потребовалась замена. По распиновке и...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru