Авторизация


...

Кто на сайте?

Сейчас 99 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 23694
-Материалы : 209

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

  MB913 C-01

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

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

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

 

 

"Сердцем" устройства является микроконтроллер 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

Простая программа для разводки печатных плат Sprint-Layout с дружеств…

03-06-2012 Игорь Безверхний

Простая программа для разводки печатных плат  Sprint-Layout с дружественным интерфейсом (часть 1)

  В радиолюбительской практике, а иногда и в профессиональной работе, мы сталкиваемся с необходимостью изготовления печатных плат. Помочь в этом может программа Sprint-Layout, которая представляет собой специализированный графический редактор для ручной разводки печатных плат. Предложенное в настоящей статье описание не...

ПП обработки символьной информации.

25-06-2011 Николай Викторов

ПП обработки символьной информации.

  Данная подпрограмма была применена в видеоадаптере (http://www.chipmk.ru/index.php/features/44-2011-02-17-08-07-05/125--pic18f46k20) на основе этой программы и рассмотрим пример вывода символа. В этой конструкции применен шрифт 8х8 , значит, для вывода одного символа необходимо задействовать восемь байт. К примеру ,  необходимо вывести символ «Я» .      

Генератор кодов Морзе на микроконтроллере.

26-02-2012 Николай Викторов

Генератор кодов Морзе на микроконтроллере.

   Данный генератор кодов  Морзе предназначен для тренировки радиотелеграфистов ,  радиолюбителей и  для тех ,  кто хочет изучить телеграфную азбуку не прибегая к помощи компьютера . Конструкция имеет небольшое количество  р/элементов , не сложная в изготовлении, не требует какой...

Организация памяти программ контроллеров среднего семейства. Выполнени…

03-04-2013 Александр Милевский

Организация памяти программ контроллеров среднего семейства. Выполнение вычисляемого перехода и перехода между страницами.

  Немало проблем доставляет при разработке программы вычисляемые переходы, которыми пользуются обычно при работе с таблицами, вызовы подпрограмм и переходы на определенную метку в разных страницах памяти программ. Покажу прием, как легко избежать этих проблем. Но для начала, давайте разберемся, как организована...


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

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