Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » USB HID и ИК приемник


USB HID и ИК приемник

Сообщений 1 страница 30 из 30

1

Здравствуйте, возникла такая проблема, не могу совместить 2 кода :
USB-HID - http://www.mcselec.com/index.php?option … amp;id=271
и ИК приемника с протоколом NEC http://www.mcselec.com/index.php?option … amp;id=223
во всех моих попытках подключить такое устройство я либо получал "USB устройство не опознано" либо если я включал прерывание по входу от ИК приемника с задержкой после подачи питания, что б успел провести инициализацию USB, то после включения прерываний, я не получал ничего и на линии данных переставали идти сигналы (посмотрел лог. Анализатором).
Подключение:
D+  ->  PORTD.2 (INT0)
D-  ->  PORTD.4
IR Out  ->  PORTD.3  (INT1)
Возможно кто-то знает что-то, заранее спасибо.

0

2

не вижу Вашего кода, но 99% вероятностью скажу, что надо совмещать как минимум три прерывания:
1. самого USB
2. возможного таймера для работы с пакетами данных USB
3. таймер опроса медленного IR-приёмника
в лоб эту задачу не решить: всё завязано на USB
простая задача по работе с NEC (работал, знаю) превражается в высчитывание чуть-ли не  каждого такта чтобы не сбить синхронизацию USB

0

3

Ясно, спасибо.
Я решил делать по другому просто сохраняю лог. состояние на выходе ИК каждые 500мкс, пока не наберу 64бита (8 байт за один report) что-то типа логического анализатора , а потом в программе на копьюторе буду декодировать. Но вот проблема в том что мне немного маловато этих 500мкс, а если делаю чаще то пропадает как вы говорите синхронизация.
Возможно ли как то передать больше байт или ускорить передачу ?

0

4

дайте хотя бы алгоритм вашей программы...
а то вы задаёте вопросы, а мне телепатия пока не даётся :)

0

5

как то так

Код:
   if byteN = 1 then
   databyte1.num = PIND.3
   if databyte1.num = 1 then
   end if
   end if
   ................
   ................
   if byteN = 8 then
   databyte8.num = PIND.3
   if databyte8.num = 1 then
   end if
   end if
   if num = 0 then
      num = 8
      incr byteN
   else
      decr num
   end if
   if byteN = 9 then
   byteN =1
   num = 8
   _usb_tx_buffer2(2) = databyte1
   _usb_tx_buffer2(3) = databyte2
   _usb_tx_buffer2(4) = databyte3
   _usb_tx_buffer2(5) = databyte4
   _usb_tx_buffer2(6) = databyte5
   _usb_tx_buffer2(7) = databyte6
   _usb_tx_buffer2(8) = databyte7
   _usb_tx_buffer2(9) = databyte8
   If _usb_tx_status2._usb_txc = 1 Then Call Usb_send(_usb_tx_status2 , 8)
   end if
........
Waitus 500

0

6

не... Это тупик!
1. возьмите код usb как он есть.
2. найдите критичные места для поддержания связи по этой шине
3. уберите из кода ту часть кода, которая вам не нужна. Откомпилируйте. Достоверно определяется? если да - продолжить.
4. расчитайте время работы нужных частей кода по работе с usb
5. вот только с этого момента можете придумывать свой код, распихивая опрос по основной программе

0

7

Ладно,  спасибо за помощь !
Пойду я наверно по простому пути, буду передавать через UART, прийдётся новую плату делать, но зато меньше гемора.

0

8

программный USB - гемор с самой большой буквы!!
Почитав чей-то код, вникнув во все ограничения я отказался от этого метода. Использую внешние преобразователи: за 5 лет - ни одного отказа или зависания )

+1

9

Ви имеете ввиду USB-UART под внешними преобразователями ? или что то другое ?

0

10

Александр Д. написал(а):

программный USB - гемор с самой большой буквы!!

Да есть некоторые ограничения, но для многих задач вполне походит. Работает стабильно.

Agbka написал(а):

как то так

Это только часть кода. Где остальной?

0

11

а что еще надо, остальное все тоже что и в примерах на офф сайте.

0

12

Нужен весь код цикла программы. Также участки кода где, назначаются прерывания и запрещаются/разрешаются. Если есть прерывания, то также необходимы их подпрограммы.

0

13

Там некоторые переменные остались из примера и здесь не используются, я их не успел удалить

Код:
$notypecheck
$noramclear
Const Usbdebug = 0
#if Usbdebug = 2
$dbg
#endif
$hwstack = 82
$swstack = 40
$framesize = 50
$regfile = "m8def.dat"
$crystal = 12000000
#if Usbdebug > 0
#endif
$eepromhex
$lib "swusb.lbx"
$external _swusb
Declare Sub Usb_reset()
Declare Sub Usb_processsetup(txstate As Byte)
Declare Sub Usb_send(txstate As Byte , Byval Count As Byte)
Declare Sub Usb_senddescriptor(txstate As Byte , Maxlen As Byte)

'*******************************************************************************
'*************************** Begin USB Configuration ***************************
'******************************* USB Connections *******************************
_usb_port Alias Portd
_usb_pin Alias Pind
_usb_ddr Alias Ddrd
Const _usb_dplus = 2                                        'D+ ?????? ???????????? ? INT0,? ??? ???? d 2
Const _usb_dminus = 4                                       'D- ????? ?????????? ? ????? ?????? ????? ????? d
Config Pind.2 = Input
Config Pind.4 = Input
_usb_port._usb_dplus = 0
_usb_port._usb_dminus = 0

'*******************************************************************************
'************************* USB Configuration Constants *************************
Const _usb_use_eeprom = 0
Const _usb_assume_ack = 0
'  *************************** Device Descriptor *****************************
Const _usb_vid = &HAAAD                                     '????????????? VID
Const _usb_pid = &HEF28                                     '????????????? PID
Const _usb_devrel = &H0001
Const _usb_spec = &H0110
Const _usb_devclass = 0
Const _usb_devsubclass = 0
Const _usb_devprot = 0
Const _usb_imanufacturer = 1
Const _usb_iproduct = 2
Const _usb_iserial = 0
Const _usb_numconfigs = 1
'  *************************** Config Descriptor *****************************
Const _usb_numifaces = 1
Const _usb_confignum = 1
Const _usb_iconfig = 2
Const _usb_powered = &H80
Const _usb_maxpower = 250
'  ************************** Interface Descriptor ***************************
Const _usb_ifaces = 1
Const _usb_ifaceaddr = 0
Const _usb_alternate = 0
Const _usb_ifaceendpoints = 2
Const _usb_ifclass = 3
Const _usb_ifsubclass = 0
Const _usb_ifprotocol = 0
Const _usb_iiface = 0
'  ************************* Optional HID Descriptor *************************
Const _usb_hids = 1
Const _usb_hid_release = &H0111
Const _usb_hid_country = 0
Const _usb_hid_numdescriptors = 1
'  ************************* Endpoint Descriptor(s) **************************
Const _usb_endp2addr = 1
Const _usb_endp3addr = 2
Const _usb_endp2type = 3
Const _usb_endp3type = 3
Const _usb_endp2direction = 1
Const _usb_endp3direction = 0
Const _usb_endp2interval = 200
Const _usb_endp3interval = 100
'*******************************************************************************
$include "swusb-includes.bas"
'**************************** USB Interrupt And Init ***************************
Call Usb_reset()
Const _usb_intf = Intf0
Config Int0 = Rising
On Int0 Usb_isr Nosave
Enable Int0
Enable Interrupts

Config Pind.3 = Input
'Config Timer1 = Timer , Prescale = 64                      '8000000/256=31250 Hz
'Config Int1 = Falling                                      'Interruption on Falling
'Start Timer1
'Enable Timer1
'disable Int1
'Enable Int1
'On Timer1 Tikers                                            'work on timer
'On Int1 Infrared
'*******************************************************************************
'*************************** End Of USB Configuration **************************
Dim Tik As Word 'counter of teaks of timer
Dim Byt As Byte 'counter accepted bit
Dim Repeat_flag As Bit 'flag of repetition
Dim Start_flag As Bit 'flag of start condition
Dim Address As Byte 'byte of address
Dim Command As Byte 'byte of command
Dim Address_1 As Byte 'direct byte of address
Dim Command_1 As Byte 'direct byte of command
Dim Address_0 As Byte 'indirect byte of address
Dim Command_0 As Byte 'indirect byte of command
Dim Summa As Word

Dim Resetcounter As Word                                    '??? ??? ????????
Dim Idlemode As Byte                                        '????????? ??? ??? ????????
'? ???? ????? ????? ??????????? ????????? ? ?????


Dim pstate as Byte

Dim Flagpered As Byte                                       '???? ??? ???????? ??????
Dim Nomerkomand As Byte                                     '????? ???????
Config Portb = Output                                       '???? ? ??????????? ?? ?????
Config Portc = Input                                        '???? ? ??????????? ?? ????
                                      '???? ? 1 ?? ???? ,??????
Dim A As Word                                               '???????? ???
Dim num As Byte
Dim byteN As Byte
Dim frst As byte
Dim frst2 As byte                                           '?????????? ??? ???????????? ??????
Dim Indic As Byte
Dim T As Byte
Dim Per As Single
Dim Vtor As Single
Dim Tret As Single

dim databyte1 As byte
dim databyte2 As byte
dim databyte3 As byte
dim databyte4 As byte
dim databyte5 As byte
dim databyte6 As byte
dim databyte7 As byte
dim databyte8 As byte
dim skipbit as Byte
num = 2                                                    '????????????? ????????????? ???? 1
Indic = 1                                                   '?????????????? ???????? ??? ?????????? ??? ?????????
Per = 0.009765625
Vtor = 0.01953125
Tret = 0.1953125
Flagpered = 1
Nomerkomand = 2
T = 10
frst = 0
Do                                                          '?????? ???????? ?????
  Resetcounter = 0
    While _usb_pin._usb_dminus = 0                          '
      Incr Resetcounter
      If Resetcounter = 1000 Then
         Call Usb_reset()
      End If
   Wend


    If _usb_status._usb_rxc = 1 Then
      If _usb_status._usb_setup = 1 Then
            Call Usb_processsetup(_usb_tx_status)
       Elseif _usb_status._usb_endp1 = 1 Then
       '? ???? ????? ?? ????????? ?????? ?? ??

      End If
       _usb_status._usb_rtr = 1
       _usb_status._usb_rxc = 0
   End If


   If Flagpered = 1 Then
       If _usb_tx_status2._usb_txc = 1 Then
       Flagpered = 0
       '????? ?? ???????? ?????? ? ??????????
       '_usb_tx_buffer2(2) = Nomerkomand
       '_usb_tx_buffer2(3) = T

       Call Usb_send(_usb_tx_status2 , 8)
     End If
   End If


if frst < 50 then
   if frst2 >= 250 then
   incr frst
   frst2 = 1
   else
   incr frst2
   end if
Else
   if byteN = 1 then
   databyte1.num = PIND.3
   if databyte1.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 2 then
   databyte2.num = PIND.3
   if databyte2.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 3 then
   databyte3.num = PIND.3
   if databyte3.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 4 then
   databyte4.num = PIND.3
   if databyte4.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 5 then
   databyte5.num = PIND.3
   if databyte5.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 6 then
   databyte6.num = PIND.3
   if databyte6.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 7 then
   databyte7.num = PIND.3
   if databyte7.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if byteN = 8 then
   databyte8.num = PIND.3
   if databyte8.num = 1 then
   Toggle Portb.0
   Toggle Portb.0
   end if
   end if
   if num = 0 then
      num = 8
      incr byteN
   else
      decr num
   end if
   if byteN = 9 then
   byteN =1
   num = 8
   _usb_tx_buffer2(2) = databyte1
   _usb_tx_buffer2(3) = databyte2
   _usb_tx_buffer2(4) = databyte3
   _usb_tx_buffer2(5) = databyte4
   _usb_tx_buffer2(6) = databyte5
   _usb_tx_buffer2(7) = databyte6
   _usb_tx_buffer2(8) = databyte7
   _usb_tx_buffer2(9) = databyte8
   If _usb_tx_status2._usb_txc = 1 Then Call Usb_send(_usb_tx_status2 , 8)
   End If
end if

 Waitus 500
                 '???? ? ????? ? ???????? ?? 1 ???????.

Loop
End



                                                      '????? ???????? ?????
'*******************************************************************************
'******************** Descriptors stored in EEPROM or FLASH ********************
#if _usb_use_eeprom = 1
   $eeprom
#else
   $data
#endif
_usb_devicedescriptor:
Data 18 , 18 , _usb_desc_device , _usb_specl , _usb_spech , _usb_devclass
Data _usb_devsubclass , _usb_devprot , 8 , _usb_vidl , _usb_vidh , _usb_pidl
Data _usb_pidh , _usb_devrell , _usb_devrelh , _usb_imanufacturer
Data _usb_iproduct , _usb_iserial , _usb_numconfigs
_usb_configdescriptor:
Data _usb_descr_total , 9 , _usb_desc_config , _usb_descr_totall
Data _usb_descr_totalh , _usb_numifaces , _usb_confignum , _usb_iconfig
Data _usb_powered , _usb_maxpower
Data 9 , _usb_desc_iface , _usb_ifaceaddr , _usb_alternate
Data _usb_ifaceendpoints , _usb_ifclass , _usb_ifsubclass , _usb_ifprotocol
Data _usb_iiface
#if _usb_hids > 0
Data _usb_hid_descr_len , _usb_desc_hid , _usb_hid_releasel , _usb_hid_releaseh
Data _usb_hid_country , _usb_hid_numdescriptors
Data _usb_desc_report
Data 33 , 0
#endif
#if _usb_endpoints > 1
Data 7 , _usb_desc_endpoint , _usb_endp2attr , _usb_endp2type , 8 , 0
Data _usb_endp2interval
#endif
#if _usb_endpoints > 2
Data 7 , _usb_desc_endpoint , _usb_endp3attr , _usb_endp3type , 8 , 0
Data _usb_endp3interval
#endif
#if _usb_hids > 0
_usb_hid_reportdescriptor:
                          '????? ??????????? ???????? ????? ??? USB
Data 33                                                     ' Length = 33 bytes
Data &H06 , &H00 , &HFF                                     ' Usage_page(vendor Defined Page 1)
Data &H09 , &H01                                            ' Usage(vendor Usage 1)
Data &HA1 , &H02                                            ' Collection(logical)

Data &H09 , &H01                                            ' Usage(pointer)
Data &H15 , &H00                                            ' Logical_minimum(0)
Data &H25 , &HFF                                            ' Logical_maximum(255)
Data &H75 , &H08                                            ' Report_size(8)
Data &H95 , &H08                                            ' Report_count(1)
Data &H81 , &H02                                            ' Input(data , Var , Abs)

Data &H09 , &H01                                            ' Usage(pointer)
Data &H15 , &H00                                            ' Logical_minimum(0)
Data &H26 , &HFF , 0                                        ' Logical_maximum(255)
Data &H75 , &H08                                            ' Report_size(8)
Data &H95 , &H08                                            ' Report_count(1)
Data &H91 , &H02                                            ' Output(data , Var , Abs)

Data &HC0                                                   ' End_collection
#endif
'*****************************String descriptors********************************
_usb_langdescriptor:
Data 4 , 4 , _usb_desc_string , 09 , 04
_usb_mandescriptor:
           '?? ??? ????? ???????????? ?????????? ????????? ?????????? ? ??? ??????????? ? ??????????
Data 20 , 20 , _usb_desc_string
Data "A" , "D" , "A" , "M" , " " , "2" , "0" , "1" , "5"
_usb_proddescriptor:
Data 22 , 22 , _usb_desc_string                             '????? ????????? ?????????? ???? ? ????????? ????????? ?? ???
Data "I" , "R" , "r" , "e" , "c" , "e" , "i" , "v" , "e" , "r"

'*******************************************************************************
'*******************************************************************************
'******************************** Subroutines **********************************
'*******************************************************************************
Sub Usb_processsetup(txstate As Byte)
Senddescriptor = 0
#if Usbdebug = 2
Dbg
#endif
    Txstate = _usb_setup_sync
      Select Case _usb_rx_buffer(2)
           Case &B10000000:
         Select Case _usb_rx_buffer(3)
            Case _usb_req_get_descriptor:
               Select Case _usb_rx_buffer(5)
                  Case _usb_desc_device:
                     #if Usbdebug = 1
                        Print "GETDD"
                     #endif
                     #if _usb_use_eeprom = 1
                        Readeeprom _usb_eepromaddrl , _usb_devicedescriptor
                     #else
                        Restore _usb_devicedescriptor
                     #endif
                     Senddescriptor = 1
                  Case _usb_desc_config:
                     #if Usbdebug = 1
                        Print "GETCD"
                     #endif

                     #if _usb_use_eeprom = 1
                        Readeeprom _usb_eepromaddrl , _usb_configdescriptor
                     #else
                        Restore _usb_configdescriptor
                     #endif
                     Senddescriptor = 1
                  Case _usb_desc_string:
                     Select Case _usb_rx_buffer(4)
                        Case 0:

                           #if _usb_use_eeprom = 1
                              Readeeprom _usb_eepromaddrl , _usb_langdescriptor
                           #else
                              Restore _usb_langdescriptor
                           #endif
                           Senddescriptor = 1
                        Case 1:

                           #if _usb_use_eeprom = 1
                              Readeeprom _usb_eepromaddrl , _usb_mandescriptor
                           #else
                              Restore _usb_mandescriptor
                           #endif
                           Senddescriptor = 1
                        Case 2:

                           #if _usb_use_eeprom = 1
                              Readeeprom _usb_eepromaddrl , _usb_proddescriptor
                           #else
                              Restore _usb_proddescriptor
                           #endif
                           Senddescriptor = 1
                     End Select
               End Select

         End Select
      Case &B00000000:
         Select Case _usb_rx_buffer(3)
            Case _usb_req_set_address:
               #if Usbdebug = 1
                  Print "SETA"
               #endif

               Call Usb_send(txstate , 0)
               While Txstate._usb_txc = 0 : Wend

               _usb_deviceid = _usb_rx_buffer(4)
'
            Case _usb_req_set_config:
               #if Usbdebug = 1
                  Print "SETC"
               #endif

               Call Usb_send(txstate , 0)
         End Select

      Case &B10000001:
         Select Case _usb_rx_buffer(3)

            Case _usb_req_get_descriptor

               Select Case _usb_rx_buffer(5)
                  Case _usb_desc_report:
                     #if Usbdebug = 1
                        Print "GETRD"
                     #endif
                     #if _usb_use_eeprom = 1
                        Readeeprom _usb_eepromaddrl , _usb_hid_reportdescriptor
                     #else
                        Restore _usb_hid_reportdescriptor
                     #endif
                     Senddescriptor = 1


               End Select
         End Select

      Case &B00100001:

         Select Case _usb_rx_buffer(3)

            Case _usb_req_set_idle:
               Idlemode = 1

               Call Usb_send(txstate , 0)

         End Select
   End Select

   If Senddescriptor = 1 Then
      Call Usb_senddescriptor(txstate , _usb_rx_buffer(8))
   End If

End Sub

Sub Usb_senddescriptor(txstate As Byte , Maxlen As Byte)
#if Usbdebug = 2
Dbg
#endif

   Local Size As Byte
   Local I As Byte
   Local J As Byte
   Local Timeout As Word

   #if _usb_use_eeprom = 1


      Size = _usb_eepromaddrl


      push R24
      in R24, EEARL
      sts {_USB_EEPROMADDRL}, R24
      in R24, eearH
      sts {_USB_EEPROMADDRH}, R24
      pop R24

   #else
      Read Size
   #endif

   #if Usbdebug = 1
      Print Size
      Print Maxlen
   #endif

   If Maxlen < Size Then Size = Maxlen

   I = 2
   For J = 1 To Size
      Incr I
      #if _usb_use_eeprom = 1
         Incr _usb_eepromaddr
         Readeeprom Txstate(i) , _usb_eepromaddr
      #else
         Read Txstate(i)
      #endif

      #if Usbdebug = 1
         Print Bin(txstate(i))
      #endif

      If I = 10 Or J = Size Then
         I = I - 2
         Call Usb_send(txstate , I)
         While Txstate._usb_txc = 0
            Timeout = 0

            While _usb_pin._usb_dminus = 0
               Incr Timeout
               If Timeout = 1000 Then
                  Call Usb_reset()
                  Exit Sub
               End If
            Wend
         Wend
         I = 2
      End If
   Next
End Sub

Sub Usb_send(txstate As Byte , Byval Count As Byte)
#if Usbdebug = 2
Dbg
#endif



   Txstate = Txstate And _usb_syncmask


   _usb_crc = 0
   If Count <> 0 Then
      _usb_crc = Crc16uni(txstate(3) , Count , &HFFFF , &H8005 , 1 , 1)
      Toggle _usb_crc
   End If


   Count = Count + 3
   Txstate = Txstate + Count

   Txstate(count) = Low(_usb_crc)
   Incr Count
   Txstate(count) = High(_usb_crc)



   Txstate(2) = _usb_pid_data1
   If Txstate._usb_txsync = 0 Then
      Txstate(2) = _usb_pid_data0
   End If


   Txstate._usb_rtt = 1
   Txstate._usb_txc = 0
End Sub

Sub Usb_reset()
#if Usbdebug = 2
Dbg
#endif

   _usb_status._usb_rtr = 1
   _usb_status._usb_rxc = 0


   _usb_tx_status = _usb_endp_init
   #if Varexist( "_usb_Endp2Addr")
   _usb_tx_status2 = _usb_endp_init
   #endif
   #if Varexist( "_usb_Endp3Addr")
   _usb_tx_status3 = _usb_endp_init
   #endif


   _usb_deviceid = 0

   #if Usbdebug = 1
      Print "RESET"
   #endif

   Idlemode = 0

End Sub

Отредактировано Agbka (2015-11-04 23:02:09)

0

14

Должно работать....
Единственное что может мешать это задержка.

Код:
Waitus 500

Ее стоит исключить из кода хотя бы на первые пару секунд работы, когда происходит инициализация USB.

0

15

Надо попробовать, хотя инициализация USB проходит успешно, там в программе у меня стоит своеобразная "задержка" примерно на 3 сек чтоб успел инициализироваться USB, но все ровно попробую ваш вариант, спасибо.
Только даже если уменьшаю задержку то слетает синхронизация (наверное слишком часто идет передача)

Отредактировано Agbka (2015-11-04 23:35:10)

0

16

Agbka написал(а):

в программе у меня стоит своеобразная "задержка" примерно на 3 сек чтоб успел инициализироваться USB

В какой строке кода?

0

17

говорил же своеобразная

Код:
if frst < 50 then
   if frst2 >= 250 then
   incr frst
   frst2 = 1
   else
   incr frst2
   end if
Else

0

18

Тогда нужно было и задержку Waitus 500 переместить внутрь условия, чтобы при инициализации она не выполнялась.

Версия файла swusb.lbx 1.6?

0

19

Version    : 1.00

0

20

Александр Д. написал(а):

Использую внешние преобразователи: за 5 лет - ни одного отказа или зависания )

А что есть аппаратные например USB HID Keyboard? Я кстати подобного не встречал, есть просто контроллеры готовые от FTDI (ванкулымы всякие), но там хрен ногу сломит, прежде чем его заставишь делать что надо...

0

21

RDW написал(а):

Александр Д. написал(а):

    Использую внешние преобразователи: за 5 лет - ни одного отказа или зависания )

А что есть аппаратные например USB HID Keyboard? Я кстати подобного не встречал, есть просто контроллеры готовые от FTDI (ванкулымы всякие), но там хрен ногу сломит, прежде чем его заставишь делать что надо...


Китайские CH340 стоят копейки и молотят будь здоров.

0

22

http://www.aliexpress.com/item/New-PL23 … eb201560_9

чип PL2303

0

23

Agbka написал(а):

Version    : 1.00

Тогда не помешало бы обновить ее до текущей версии 1.6.
Взять можно например в этом архиве.

0

24

sva-don написал(а):

Китайские CH340 стоят копейки и молотят будь здоров.

Это всего лишь "USB to TTL" (и им подобные) - не то.

0

25

RDW написал(а):

sva-don написал(а):

    Китайские CH340 стоят копейки и молотят будь здоров.

Это всего лишь "USB to TTL" (и им подобные) - не то.


Ну да, только не TTL, а RS232 с уровнями TTL. Может я не понял автора, но ему нужно подключит ИК приемник, а с МК на комп по USB. Если так, то самое то.

0

26

Я тоже так понял. :)

зы: "RS232" - это интерфейс, а TTL - это тип уровней/сигнал, как бы разные вещи...

0

27

Да, но только я сначала хотел сделать посредством USB-HID, там не нужно устанавливать драйвера + меньше элементов.
А теперь прийдется делать по старинке с UART'ом.
Но зато я понял как работать с программным USB (никогда подобное не делал).

0

28

Agbka написал(а):

Да, но только я сначала хотел сделать посредством USB-HID, там не нужно устанавливать драйвера + меньше элементов.
А теперь прийдется делать по старинке с UART'ом.
Но зато я понял как работать с программным USB (никогда подобное не делал).

Если очень хочется, то можно использовать библиотеку LUFA, но там СИ. Зато работает на аппаратных средствах МК.

0

29

RDW написал(а):

Я тоже так понял. :)

зы: "RS232" - это интерфейс, а TTL - это тип уровней/сигнал, как бы разные вещи...


Ну да, я и говорю, что с выхода выходит полноценный кадр RS232 с уровнями TTL.

0

30

sva-don написал(а):

сли очень хочется, то можно использовать библиотеку LUFA, но там СИ. Зато работает на аппаратных средствах МК.

Для баскома тоже есть бесплатная USB библиотека использующая аппаратный модуль.

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » USB HID и ИК приемник