Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » USBINIT, USBIN, USBOUT кто нибудь использовал? (можно ли написать программу моста USB-UART для PIC18Fxx50?)
USBINIT, USBIN, USBOUT кто нибудь использовал?
DIKTATOR Дата: Чт, 16.04.2009, 13:45  |                                                                                                                Сообщение # 16
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Ну вот, давнобы так biggrin .
Заодно пример показал мне как надо масивы делать biggrin , вопросов больше пока нет.


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
ЯНДЕКС Дата: 16.04.2009
vsky Дата: Вт, 18.08.2009, 12:29  |                                                                                                                Сообщение # 17
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 23.09.2008

Статус: Offline

кто нибудь программировал PIC18F14K50 в PBP? smile
ilyafm98 Дата: Сб, 02.08.2014, 12:41  |                                                                                                                Сообщение # 18
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 08.12.2010

Статус: Offline

Здравсвуйте! Подскажите пожалуйста, как справиться с возникшей проблемой. Не могу разобраться как передавать данные из переменных по USB.
Насколько я понял, команда USBOUT передает данные только массивами. Этот пример у меня нормально компилируется и работает.


Код
' USB sample program for PIC18F4550 CDC serial port emulation

'  Compilation of this program requires that specific support files be
'  available in the source directory.  You may also need to modify the
'  file USBDESC.ASM so that the proper descriptor files are included. For
'  detailed information, see the file PBP\USB18\USB.TXT.
@      include "migrate.inc"  
buffer    Var    Byte[16]
cnt    Var    Byte

LED    Var    PORTB.0

Define  OSC     48

     USBInit
     Low LED        ' LED off

' Wait for USB input
idleloop:
     USBService    ' Must service USB regularly
     cnt = 16    ' Specify input buffer size
     USBIn 3, buffer, cnt, idleloop

' Message received
     Toggle LED

     buffer[0] = "H"
     buffer[1] = "e"
     buffer[2] = "l"
     buffer[3] = "l"
     buffer[4] = "o"
     buffer[5] = " "
     buffer[6] = "W"
     buffer[7] = "o"
     buffer[8] = "r"
     buffer[9] = "l"
     buffer[10] = "d"
     buffer[11] = 13
     buffer[12] = 10
     buffer[13] = 0

outloop:
     USBService    ' Must service USB regularly
     USBOut 3, buffer, 14, outloop

     Goto idleloop    ' Wait for next buffer


В качестве эксперимента хочу для начала передать по USB в терминальную программу значение измеренное с помощью АЦП контроллера.
Написал программу, переделав пример.


Код
Include    "cdc_desc.bas"    ' Include the HID descriptors

Define  OSC     48

DEFINE ADC_BITS 8          
DEFINE ADC_CLOCK 6        
DEFINE ADC_SAMPLEUS 50      

ADCON1 = %00001101  
ADCON2 = %10101110

adcon var byte
buffer    Var    byte [7]
cnt var byte
USBInit

main:
adcin 0,adcon
     buffer[0] = "A"
     buffer[1] = "D"
     buffer[2] = "="
     buffer[3] = adcon
     buffer[4] = 13
     buffer[5] = 10
     buffer[6] = 0
outloop:
     USBService        ' Must service USB regularly
     USBOut 3, buffer, 7, outloop
gosub idleloop
idleloop:
     USBService        ' Must service USB regularly
     USBIn 3, buffer, cnt, idleloop
gosub main


В результате данные принимаются в таком виде, независимо от положения переменного резистора, подключенного ко входу АЦП.


Код
Прикрепления: 5951227.jpg(87.3 Kb)
ADMIN Дата: Пн, 04.08.2014, 07:05  |                                                                                                                Сообщение # 19
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1133
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Здесь можно посмотреть. Надеюсь, поможет.
RA9UBD Дата: Пн, 11.02.2019, 18:07  |                                                                                                                Сообщение # 20
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 69
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2008

Статус: Offline

Привет, Всем!

Давно не заходил на этот форум. До недавнего времени все было понятно, и написано много программ.
Но встала более сложная задача, которую до этого никогда не решал.
В общем требуется передавать на РС через USB некоторые данные, и принимать данные.
Программы на РС, я писать не умею. Кроме как TurboPascal, QBasic под MS-DOS. Но это было давно.
В общем, программу на РС, будет писать другой программист-профи, но он только РС-шный программист.
Программу он будет писать по моему заказу.
В общем суть устройства. Это будет зарядное/разрядное устройство, которое будет заряжать высоковольтные аккумуляторы для гибридных автомобилей. А так же разряжать замеряя емкость. На экране рисовать графики, диаграммы, по этим графикам будет видно какая ячейка требует замены. Графика это уже задача другого программера. Моя задача по USB подать, первоначальные данные. Данные проц будет собирать через АЦП, и температуру с датчиков 18В20. (С АЦП и датчиками работать умею.) Электронная часть уже проектируется. Пока разбираюсь с возможностью передавать данные по USB и принимать.
Программирую только на PIC Basic PRO. Proton не знаю. Он что то сильно отличается от PBP.
Выбрал проц PIC18F4550. На Али 350 руб стоит, что приемлемо. 
Начал рыть инфу. В этой ветке форума нашел кое что, что мне как раз и нужно на РВР.
Ниже прикрепил файл.
Но при компиляции он требует что то, какую то библиотеку. 
Пишет вот это:
Fatal USBCDC.ASM 70:(302)unable to open file "cdc_desc.bas"
Что нужно сделать?

Добавлено (11.02.2019, 18:26)
---------------------------------------------
Кстати посмотрел видео USB вольтметра. 
Полезно. Только на Протоне он...
Но за то я для себя открыл, оказывается в Протеусе есть виртуальный USB порт. Это гениально!

Добавлено (12.02.2019, 11:41)
---------------------------------------------
Я так понимаю, этот форум мертвый...
Сегодня пробовал передавать на РС данные, коммандами SEROUT и принимать SERIN.
Все делал, через виртуальный СОМ порт. Оказывается есть такой в Протеус. Правда пришлось установить виртуальный драйвер СОМ порта и соединить их виртуально, об этом нашел тут: https://anatoly-bludov.livejournal.com/554.html
Метод работает. Если закольцевать TX и RX на ком порте, то идет это того что подаешь в СОМ.
Но если подавать их протеуса в терминал, то приходят кракозябры. В обще что только не делал, не приходит ничего адекватного на РС.
SEROUT TXD_PIN, T2400, [$41, 10, 13] - Передать букву "А". Ни фига при ходит чушь.
Пробовал так:
SEROUT TXD_PIN, T2400, [#41, 10, 13]
И так
SEROUT TXD_PIN, T2400, [41, 10, 13]
И так: 
SEROUT TXD_PIN, T2400, ["Hello", 10, 13]
В терминале всякая фигня.

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

Не похоже что это вирутальный драйвер СОМ порта искажает.
Он как раз работает правильно.

Попробую собрать на макетке, и физически подать на СОМ порт, через "свисток" USB-UART TTL.

Прикрепления: usb_18F4550.rar(1.9 Kb)
Aleksey_174 Дата: Вт, 12.02.2019, 13:56  |                                                                                                                Сообщение # 21
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 77
Репутация: 14   ±
Замечания:   ±
На сайте с 22.01.2017

Статус: Offline

А скорость у терминала менять пробовали, если контроллер настроен не правильно, то скорость может меняться как в большую так и в меньшую, причем даже может отличаться от стандартной.
И в самом протеусе в Virtual Terminal у вас что-то приходит?
xvovanx Дата: Вт, 12.02.2019, 16:29  |                                                                                                                Сообщение # 22
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 358
Репутация: 23   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата RA9UBD ()
Но если подавать их протеуса в терминал, то приходят кракозябры. В обще что только не делал, не приходит ничего адекватного на РС

Может инвертировать сигнал попробовать , я в свое время тоже с UART долго бился
http://www.picbasic.ru/forum/5-164-17119-16-1501788539
RA9UBD Дата: Вт, 12.02.2019, 18:02  |                                                                                                                Сообщение # 23
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 69
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2008

Статус: Offline

Спасибо за ответ.
Инвертировать? Была такая мысль задним умом. Но думаю, не так же все банально... 
Мне кажется это должно помочь..
Завтра попробую.

Причем я соединял два проца в протеусе, на один подавал температуру с датчика 18B20, потом передавал на другой проц, и там принимал и выдавал на ЖК экран двух строчный. Там все четко работает!

Добавлено (12.02.2019, 18:05)
---------------------------------------------
Главное что работает же. Пусть крякозябры, но работает. Думал что если инверсия не та, то вообще ничего не увидит. А он оказывается видит только криво все. 
Да возможно.
Спасибо!

Добавлено (12.02.2019, 18:10)
---------------------------------------------

Цитата Aleksey_174 ()
А скорость у терминала менять пробовали, если контроллер настроен не правильно, то скорость может меняться как в большую так и в меньшую, причем даже может отличаться от стандартной.И в самом протеусе в Virtual Terminal у вас что-то приходит?


Скорость стоит 2400 там и там. Это все четко. Если ставишь другую скорость, он не работает.
Только там есть Т2400 и N2400. С тем и с тем кракозябры рисует. Без разницы.
Что значит T или N?

В Протеусе Virual Terminal, не пробовал. Не догадался... Завтра все попробую.
Все на работе у меня лежит.

Добавлено (13.02.2019, 11:36)
---------------------------------------------
Все верно. Инвертировать нужно было. На это влияет как раз эти N и T. 
Нужно было поставить в параметрах команды SerOUT N2400. Стояло T2400. 
Сейчас все работает!

Форум Picbasic.ru » Программирование МК » PicBasicPro » USBINIT, USBIN, USBOUT кто нибудь использовал? (можно ли написать программу моста USB-UART для PIC18Fxx50?)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: