USBINIT, USBIN, USBOUT кто нибудь использовал?
|
|
DIKTATOR |
Дата: Чт, 16.04.2009, 13:45 | Сообщение # 16 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
76
Замечания:
±
На сайте с 24.07.2008
Статус:
Offline
|
Ну вот, давнобы так . Заодно пример показал мне как надо масивы делать , вопросов больше пока нет.
Используйте симулятор ПРОТУЕС !!! Реальная вещь!! Я снова тут, но не всегда свободен.
|
|
|
|
vsky |
Дата: Вт, 18.08.2009, 12:29 | Сообщение # 17 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
50
Замечания:
±
На сайте с 23.09.2008
Статус:
Offline
|
кто нибудь программировал PIC18F14K50 в PBP?
|
|
|
|
ilyafm98 |
Дата: Сб, 02.08.2014, 12:41 | Сообщение # 18 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 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
В результате данные принимаются в таком виде, независимо от положения переменного резистора, подключенного ко входу АЦП.
|
|
|
|
ADMIN |
Дата: Пн, 04.08.2014, 07:05 | Сообщение # 19 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Здесь можно посмотреть. Надеюсь, поможет.
|
|
|
|
RA9UBD |
Дата: Пн, 11.02.2019, 18:07 | Сообщение # 20 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
63
Замечания:
±
На сайте с 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.
|
|
|
|
Aleksey_174 |
Дата: Вт, 12.02.2019, 13:56 | Сообщение # 21 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 22.01.2017
Статус:
Offline
|
А скорость у терминала менять пробовали, если контроллер настроен не правильно, то скорость может меняться как в большую так и в меньшую, причем даже может отличаться от стандартной. И в самом протеусе в Virtual Terminal у вас что-то приходит?
|
|
|
|
xvovanx |
Дата: Вт, 12.02.2019, 16:29 | Сообщение # 22 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата RA9UBD ( ) Но если подавать их протеуса в терминал, то приходят кракозябры. В обще что только не делал, не приходит ничего адекватного на РС Может инвертировать сигнал попробовать , я в свое время тоже с UART долго бился http://www.picbasic.ru/forum/5-164-17119-16-1501788539
|
|
|
|
RA9UBD |
Дата: Вт, 12.02.2019, 18:02 | Сообщение # 23 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
63
Замечания:
±
На сайте с 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. Сейчас все работает!
|
|
|
|