18F4550 _ usb
|
|
DNM |
Дата: Пн, 09.03.2015, 18:12 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
75
Замечания:
±
На сайте с 29.09.2011
Статус:
Offline
|
устройство опознается с ошибкой не могу понять почему? может кто поможет?
код: Declare Reminders = off ' select MCU and clock speed Device = 18F4550 Declare Xtal = 48
' descriptor file, located in \inc\usb_18 - a copy ' is located in the same folder as this file USB_Descriptor = "USBProjectDESC.inc"
' USB Buffer... Symbol USBBufferSizeMax = 8 Symbol USBBufferSizeTX = 8 Symbol USBBufferSizeRX = 8 Dim USBBuffer [USBBufferSizeMax]As Byte ' зададим переменные для преобразования... Dim USB_BUFFER As string*20 Dim AD_RESULT As ADRESL.Word Dim VALUE As Word Dim VOLTS As Byte Dim MILLIVOLTS As Byte
' some useful flags... Dim PP0 As Byte System ' USBPOLL status return Symbol CARRY_FLAG = STATUS.0 ' high if microcontroller does not have control over the buffer Symbol ATTACHED_STATE = 6 ' is USB attached
' ************************************************************ ' * main program loop - remember, you must keep the USB * ' * connection alive with a call to USBPoll, USBIn or USBOut * ' * every couple of milliseconds or so * ' ************************************************************ GoSub AttachToUSB 'настроим АЦП TRISA.0=1 'порт A0 - аналоговый вход TRISB=0 ADCON1=%10001110 'как аналоговый вход ADCON2=%10000000
ProgramLoop: 'GoSub DoUSBIn GoSub DoUSBOut GoTo ProgramLoop ' ************************************************************ ' * receive data from the USB bus * ' ************************************************************ 'DoUSBIn: ' USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn ' Return ' ************************************************************ ' * transmit data * ' ************************************************************ DoUSBOut: AD_RESULT=ADIn 0 'получим значение VALUE=((AD_RESULT */500)>>2) VOLTS=VALUE/100 MILLIVOLTS=VALUE //100 USB_BUFFER = Str$(Dec1,VOLTS)+"."+Str$(Dec2,MILLIVOLTS) 'два знака после запятой
USBOut 1, USB_BUFFER, USBBufferSizeTX, DoUSBOut 'строка передачи данных через USB Return
' ************************************************************ ' * wait for USB interface to attach * ' ************************************************************ AttachToUSB: Repeat USBPoll Until PP0 = ATTACHED_STATE Return
Более подробно здесь: http://asemlab.net/
|
|
|
|
ADMIN |
Дата: Пн, 09.03.2015, 20:21 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Я вот не вижу, где определяется конфигурация проца. Насколько я помню, кварц у меня был на 20 МГц, а проц работал на 48 МГц. Это определялось встроенным умножителем. Сейчас мне негде посмотреть. Я далеко от компа. Советую посмотреть в каталоге статей. Там есть USB вольтметр на протоне и моя же статья в swordfish. Удачи!
|
|
|
|
DNM |
Дата: Пн, 09.03.2015, 22:55 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
75
Замечания:
±
На сайте с 29.09.2011
Статус:
Offline
|
Цитата ADMIN ( ) Я вот не вижу, где определяется конфигурация проца вот, исправил, но 50/50 то определяется, то нет... (кварц на 20 МГц)
Declare Reminders = off ' select MCU and clock speed Device = 18F4550
Config_Start PLLDIV = 5 ; Divide by 5 (20 MHz oscillator input) CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] 'CPUDIV = OSC3_PLL4 'CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] USBDIV = 2 ; USB clock source comes from the 96 MHz PLL divided by 2 FOSC = HSPLL_HS ; HS oscillator, PLL enabled, HS used by USB FCMEN = OFF ; Fail-Safe Clock Monitor disabled IESO = OFF ; Oscillator Switchover mode disabled PWRT = On ; PWRT enabled BOR = OFF ; Brown-out Reset disabled in hardware and software BORV = 2 ; VREGEN = On ; USB voltage regulator enabled WDT = OFF ; HW Disabled - SW Controlled WDTPS = 2 ; 1:2 MCLRE = OFF 'On ; MCLR pin enabled; RE3 input pin disabled LPT1OSC = OFF ; Timer1 configured for higher power operation PBADEN = OFF ; PORTB<4:0> pins are configured as digital I/O on Reset CCP2MX = OFF ; CCP2 input/output is multiplexed with RB3 STVREN = OFF ; Stack full/underflow will not cause Reset LVP = OFF ; Single-Supply ICSP disabled XINST = OFF ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode) Debug = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins Config_End
;------------------------------------------------------------------------------- Xtal = 20
'Declare Xtal = 48
' descriptor file, located in \inc\usb_18 - a copy ' is located in the same folder as this file USB_Descriptor = "USBProjectDESC.inc"
' USB Buffer... Symbol USBBufferSizeMax = 8 Symbol USBBufferSizeTX = 8 Symbol USBBufferSizeRX = 8 Dim USBBuffer [USBBufferSizeMax]As Byte ' зададим переменные для преобразования... Dim USB_BUFFER As string*20 Dim AD_RESULT As ADRESL.Word Dim VALUE As Word Dim VOLTS As Byte Dim MILLIVOLTS As Byte
' some useful flags... Dim PP0 As Byte System ' USBPOLL status return Symbol CARRY_FLAG = STATUS.0 ' high if microcontroller does not have control over the buffer Symbol ATTACHED_STATE = 6 ' is USB attached
' ************************************************************ ' * main program loop - remember, you must keep the USB * ' * connection alive with a call to USBPoll, USBIn or USBOut * ' * every couple of milliseconds or so * ' ************************************************************ GoSub AttachToUSB 'настроим АЦП TRISA.0=1 'порт A0 - аналоговый вход TRISB=0 ADCON1=%10001110 'как аналоговый вход ADCON2=%10000000
ProgramLoop: 'GoSub DoUSBIn GoSub DoUSBOut GoTo ProgramLoop
' ************************************************************ ' * receive data from the USB bus * ' ************************************************************ 'DoUSBIn: ' USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn ' Return
' ************************************************************ ' * transmit data * ' ************************************************************ DoUSBOut: AD_RESULT=ADIn 0 'получим значение VALUE=((AD_RESULT */500)>>2) VOLTS=VALUE/100 MILLIVOLTS=VALUE //100 USB_BUFFER = Str$(Dec1,VOLTS)+"."+Str$(Dec2,MILLIVOLTS) 'два знака после запятой 'USB_BUFFER="123345g" USBOut 1, USB_BUFFER, USBBufferSizeTX, DoUSBOut 'строка передачи данных через USB Return
' ************************************************************ ' * wait for USB interface to attach * ' ************************************************************ AttachToUSB: Repeat USBPoll Until PP0 = ATTACHED_STATE ReturnДобавлено (09.03.2015, 20:38) ---------------------------------------------
Цитата ADMIN ( ) Там есть USB вольтметр на протоне так по этому avi и делал Добавлено (09.03.2015, 22:55) --------------------------------------------- почему VID и PID не соответствуют тем, что задавались при использовании EasyHid? Название устройства - соответствует.
Более подробно здесь: http://asemlab.net/
Сообщение отредактировал
DNM - Пн, 09.03.2015, 20:31
|
|
|
|
ADMIN |
Дата: Вт, 10.03.2015, 13:09 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Вот как раз сейчас XTAL нужно писать 48 МГц при PPLDIV = 5 и кварце 20 Мгц. По моему, так.
|
|
|
|
доцент2 |
Дата: Вт, 10.03.2015, 18:00 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
292
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Настройки из моего проекта. Все работает. Config_Start PLLDIV = 5' для 20МГц 12 ' для 48 МГц 'CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] 'CPUDIV = OSC2_PLL3 ; [OSC1/OSC2 Src: /2][96 MHz PLL Src: /3] CPUDIV = OSC3_PLL4 ; [OSC1/OSC2 Src: /3][96 MHz PLL Src: /4] 'CPUDIV = OSC4_PLL6 ; [OSC1/OSC2 Src: /4][96 MHz PLL Src: /6] USBDIV = 2 FOSC = HSPLL_HS FCMEN = OFF IESO = OFF PWRT = On BOR = OFF BORV = 2 VREGEN = On WDT = OFF WDTPS = 2 MCLRE = OFF LPT1OSC = OFF PBADEN = OFF CCP2MX = OFF STVREN = OFF LVP = OFF XINST = OFF Debug = OFF CPD=OFF Config_End ;------------------------------------------------------------------------------- Xtal = 20
|
|
|
|
DNM |
Дата: Сб, 04.04.2015, 07:59 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
75
Замечания:
±
На сайте с 29.09.2011
Статус:
Offline
|
Ура! Все работает!! Спасибо Миш! Спасибо доцент2!
Код Declare Reminders = off ' select MCU and clock speed Device = 18F4550
Config_Start PLLDIV = 5 ; Divide by 5 (20 MHz oscillator input) 'CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] CPUDIV = OSC3_PLL4 ; [OSC1/OSC2 Src: /3][96 MHz PLL Src: /4] USBDIV = 2 ; USB clock source comes from the 96 MHz PLL divided by 2 FOSC = HSPLL_HS ; HS oscillator, PLL enabled, HS used by USB FCMEN = OFF ; Fail-Safe Clock Monitor disabled IESO = OFF ; Oscillator Switchover mode disabled PWRT = On ; PWRT enabled BOR = OFF ; Brown-out Reset disabled in hardware and software BORV = 2 ; VREGEN = On ; USB voltage regulator enabled WDT = OFF ; HW Disabled - SW Controlled WDTPS = 2 ; 1:2 MCLRE = On ; MCLR pin enabled; RE3 input pin disabled LPT1OSC = OFF ; Timer1 configured for higher power operation PBADEN = OFF ; PORTB<4:0> pins are configured as digital I/O on Reset CCP2MX = OFF ; CCP2 input/output is multiplexed with RB3 STVREN = OFF ; Stack full/underflow will not cause Reset LVP = OFF ; Single-Supply ICSP disabled XINST = OFF ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode) Debug = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins Config_End
;------------------------------------------------------------------------------- Xtal = 20
'Declare Xtal = 48
' descriptor file, located in \inc\usb_18 - a copy ' is located in the same folder as this file USB_Descriptor = "USBProjectDESC.inc"
' USB Buffer... Symbol USBBufferSizeMax = 8 Symbol USBBufferSizeTX = 8 Symbol USBBufferSizeRX = 8 Dim USBBuffer [USBBufferSizeMax]As Byte ' зададим переменные для преобразования... Dim USB_BUFFER As string*20 Dim AD_RESULT As ADRESL.Word Dim VALUE As Word Dim VOLTS As Byte Dim MILLIVOLTS As Byte Dim d1 As Float ' some useful flags... Dim PP0 As Byte System ' USBPOLL status return Symbol CARRY_FLAG = STATUS.0 ' high if microcontroller does not have control over the buffer Symbol ATTACHED_STATE = 6 ' is USB attached
' ************************************************************ ' * main program loop - remember, you must keep the USB * ' * connection alive with a call to USBPoll, USBIn or USBOut * ' * every couple of milliseconds or so * ' ************************************************************ GoSub AttachToUSB
'настроим АЦП Adin_Res 10
Adin_Tad FRC
Adin_Stime 100
TRISA.0=1 'порт A0 - аналоговый вход TRISB=0 ADCON1=%10001110 'как аналоговый вход ADCON2=%10000000
ProgramLoop: d1=d1+1 'GoSub DoUSBIn GoSub DoUSBOut GoTo ProgramLoop
' ************************************************************ ' * receive data from the USB bus * ' ************************************************************ 'DoUSBIn: ' USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn ' Return
' ************************************************************ ' * transmit data * ' ************************************************************ DoUSBOut: AD_RESULT=ADIn 0 'получим значение VALUE=((AD_RESULT */500)>>2) VOLTS=VALUE/100 MILLIVOLTS=VALUE //100 'USB_BUFFER = Str$(Dec1,VOLTS)+"."+Str$(Dec2,MILLIVOLTS) 'два знака после запятой 'USB_BUFFER="123345g" USBBuffer[0] = 0 USBBuffer[1] = d1' 19'VOLTS USBBuffer[2] = 78'MILLIVOLTS
USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut 'строка передачи данных через USB Return
' ************************************************************ ' * wait for USB interface to attach * ' ************************************************************ AttachToUSB: Repeat USBPoll Until PP0 = ATTACHED_STATE Return интересная ссылка: https://protonbasic.wordpress.com/usb/termometro-usb-hid/
Добавлено (04.04.2015, 07:58) --------------------------------------------- Рано, короче говоря, я обрадовался..
на других компах - устройство определяется с ошибкой в чем же проблема?
Добавлено (04.04.2015, 07:59) ---------------------------------------------
Более подробно здесь: http://asemlab.net/
Сообщение отредактировал
DNM - Сб, 04.04.2015, 08:00
|
|
|
|
доцент2 |
Дата: Сб, 04.04.2015, 13:40 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
292
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
может дело в дровах?
|
|
|
|
DNM |
Дата: Пн, 06.04.2015, 11:02 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
75
Замечания:
±
На сайте с 29.09.2011
Статус:
Offline
|
Цитата доцент2 ( ) может дело в дровах? короче - моя вина! VUSB - не подключил! после подключения проблем нет!! программа рабочая. Сорри.
Более подробно здесь: http://asemlab.net/
|
|
|
|