PIC18F2550 запись данных с компа.
|
|
Techno-holst |
Дата: Пн, 03.02.2014, 05:44 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
Уважаемые форумчане, сломал голову уже всю!!! Подскажите кто знает. Отправляю в пик данные из компа: первые восемь буферов читаются без проблем, а на остальные даже не реагирует.
Код из бейсика:
Private Sub Command9_Click()
' Ось X BufferOut(1) = Text1.Text BufferOut(6) = Text6.Text BufferOut(7) = Text7.Text
' Ось Y BufferOut(2) = Text2.Text BufferOut(8) = Text8.Text BufferOut(9) = Text9.Text
' Ось Z BufferOut(3) = Text3.Text BufferOut(10) = Text10.Text BufferOut(11) = Text11.Text
' Патрон BufferOut(4) = Text4.Text BufferOut(12) = Text12.Text BufferOut(13) = Text13.Text
BufferOut(5) = Text5.Text WriteSomeData End Sub
Код из протона:
Device = 18F2550 Xtal = 48 USB_Descriptor = "USBSanekDESC.inc" Dim BufferIN[64] As Byte
DoUSBIn:
Repeat USBIn 1, BufferIN, Auto, DoUSBIn ' Poll the USB and Receive some data from endpoint 1 Until CARRY_FLAG = 0 Value1= BufferIN#0 Value2= BufferIN#1 Value3= BufferIN#2 Value4= BufferIN#3 Value5= BufferIN#4 Value6= BufferIN#5 Value7= BufferIN#6 Value8= BufferIN#7 Value9= BufferIN#8 Value10= BufferIN#9 Value11= BufferIN#10 Value12= BufferIN#11 Value13= BufferIN#12
' Ось X If Value1 = 0 Then PORTB.1 = 0 If Value1 = 1 Then PORTB.1 = 1
If Value6 = 0 Then PORTB.3 = 1 If Value6 = 1 Then PORTB.3 = 0
If Value7 = 0 Then PORTB.2 = 1 If Value7 = 1 Then PORTB.2 = 0
' Ось Y If Value2 = 0 Then PORTB.5 = 0 If Value2 = 1 Then PORTB.5 = 1
If Value8 = 0 Then PORTB.7 = 1 If Value8 = 1 Then PORTB.7 = 0
If Value9 = 0 Then PORTB.6 = 1 If Value9 = 1 Then PORTB.6 = 0
' Ось Z If Value3 = 0 Then PORTA.2 = 0 If Value3 = 1 Then PORTA.2 = 1
If Value10 = 0 Then PORTA.0 = 1 If Value10 = 1 Then PORTA.0 = 0
If Value11 = 0 Then PORTA.1 = 1 If Value11 = 1 Then PORTA.1 = 0
' Патрон If Value4 = 0 Then PORTC.1 = 0 If Value4 = 1 Then PORTC.1 = 1
If Value12 = 0 Then PORTA.4 = 1 If Value12 = 1 Then PORTA.4 = 0
If Value13 = 0 Then PORTA.5 = 1 If Value13 = 1 Then PORTA.5 = 0
GoSub DoUSBIn
Сообщение отредактировал
Techno-holst - Пн, 03.02.2014, 05:46
|
|
|
|
доцент2 |
Дата: Пн, 03.02.2014, 17:36 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Какое значение для Buffer (Input) Вы указали при работе с плагином EasiHID?
|
|
|
|
Techno-holst |
Дата: Вт, 04.02.2014, 05:23 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
64
|
|
|
|
доцент2 |
Дата: Ср, 05.02.2014, 10:23 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
У меня все работает. Пример в архиве. По нажатию на кнопку в МК передаются данные. Использую паузу в протеусе можно посмотреть содержание переменной буфера. Не хватает только подробных комментариев к тексту программы для МК.
Сообщение отредактировал
доцент2 - Ср, 05.02.2014, 16:41
|
|
|
|
Techno-holst |
Дата: Чт, 06.02.2014, 06:05 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
Огромное Вам спасибо! Буду разбираться!
|
|
|
|
доцент2 |
Дата: Сб, 01.03.2014, 23:06 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Добрался до железа. Сделал макетку с pic18f2550. Программку под USB своял с помощью плагина в протоне. В протеусе работает.
Declare Reminders=off Device = 18F2550
Config_Start MCLRE = OFF ;RE3 input pin enabled; MCLR pin disabled FOSC = HSPLL_HS Config_End ;------------------------------------------------------------------------------- Xtal = 48 USB_Descriptor = "USBProjectDESC.inc" ' параметры USB Buffer (максимальное передаваемое и принимаемое значение до 8 байт) Symbol USBBufferSizeMax = 8 Symbol USBBufferSizeTX = 8 Symbol USBBufferSizeRX = 8 Dim USBBuffer [USBBufferSizeMax]As Byte ... далеее по "плагину".
При подключении к компьютеру устройство определяется, но не сразу. И пишет ошибку (рисунок). Настройки FOSC - перебирал все подряд, которые есть в плагине настоек протона. Подскажите по поводу настроек при работе с USB. наверное с ними что-то не так.
|
|
|
|
MiXaS |
Дата: Вс, 02.03.2014, 12:09 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата доцент2 ( ) Подскажите по поводу настроек при работе с USB. наверное с ними что-то не так.
У Вас их вообще нет!!!
Найдите плагин для протона точно не помню как называется, что-то вроде Fuse config. Их есть две версии. 1 версия рабочая, вторая у меня не хочет правильно конфигурить камень.
Цитата доцент2 ( ) Device = 18F2550 достаточно хитрый камень, мне он много кровушки попил, но я по-тихоньку его укрощаю.Добавлено (02.03.2014, 12:09) --------------------------------------------- А чем Вы прошиваете? У меня пиккит2 2.61 сильно ругается и говорит, что нет конфигурации камня!! как он будет работать?! Пока ему не вставишь полный лист настроек через config_Start config_end
|
|
|
|
доцент2 |
Дата: Вс, 02.03.2014, 13:14 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Цитата MiXaS ( ) Найдите плагин для протона точно не помню как называется, что-то вроде Fuse config. Их есть две версии. 1 версия рабочая, вторая у меня не хочет правильно конфигурить камень. плагин у меня есть, но там черт ногу сломает. столько всего... Пытаюсь разбираться, но пока ни как. Цитата MiXaS ( ) А чем Вы прошиваете? У меня пиккит2 2.61 сильно ругается и говорит, что нет конфигурации камня!! как он будет работать?! Пока ему не вставишь полный лист настроек через config_Start config_end прошиваю пик кит 2 2.61 все нормально. Только для pic18f26k22 скачивал новый файл.
А это разве не настройки? (пуская мало, но все же. в протеусе работатет.) Config_Start MCLRE = OFF ;RE3 input pin enabled; MCLR pin disabled FOSC = HSPLL_HS Config_End Цитата MiXaS ( ) достаточно хитрый камень, мне он много кровушки попил, но я по-тихоньку его укрощаю. может подкинете настройки для простой работы с USB.
Сообщение отредактировал
доцент2 - Вс, 02.03.2014, 13:26
|
|
|
|
MiXaS |
Дата: Вс, 02.03.2014, 15:00 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата доцент2 ( ) Config_Start MCLRE = OFF ;RE3 input pin enabled; MCLR pin disabled FOSC = HSPLL_HS Config_End
Это уже настройки, хоть и не все.Techno-holst, вообще таковые отсутствуют, поэтому я и спросил.
Цитата доцент2 ( ) может подкинете настройки для простой работы с USB.
Я несколько часов потратил пока настроил этот камень. Собака была зарыта в том, что второй плагин толи настройки не те давал, то ли я тормоз, (что не исключено), короче на первом плагине поставил и все заработало. Я бы Вам дал сейчас их, но у меня они на рабочем компе. Завтра попробую, если совсем невтерпеж, поробую вспомнит
Config_Start PLLDIV = 5 ' Кварц на 20 МГц смотри 18f2550.PPI CPUDIV = OSC1_PLL2 USBDIV = 2 FOSC = HSPLL_HS FCMEN = OFF IESO = OFF PWRT = On BOR = OFF BORV = 2 VREGEN = on WDT = OFF WDTPS = 2 MCLRE = On LPT1OSC = OFF PBADEN = OFF CCP2MX = OFF STVREN = OFF LVP = OFF XINST = OFF Debug = OFF
Вроде так, но завтра постараюсь скинуть рабочие настройки
|
|
|
|
доцент2 |
Дата: Вс, 02.03.2014, 21:05 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
у меня кварц на 48МГц, я так понимаю PLLDIV = 12 С этими настройками компьютер определяет устройство почти сразу после подключения. Но так же пишет, что устройство работает с ошибкой (код 43).
|
|
|
|
MiXaS |
Дата: Пн, 03.03.2014, 12:04 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
так-так-так! Здесь нужен ваш код. смотрите в этом камне есть умножитель частоты. Если вы используете кварц на 48МГц + плл включен..., думаю у вас в этом проблема. Киньте свои настройки Добавлено (03.03.2014, 12:04) --------------------------------------------- Declare Warnings = OFF Device = 18F2550
Config_Start PLLDIV = 5 ; Divide by 5 (20 MHz oscillator input) 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 = 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 = 48
вот так у меня работает нормально
|
|
|
|
доцент2 |
Дата: Пн, 03.03.2014, 19:52 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
попробовал Ваши настройки, только PLLDIV = 12 под 48 MHz. Но опять ошибка устройства код 43 Вот код.
Сообщение отредактировал
доцент2 - Пн, 03.03.2014, 19:52
|
|
|
|
MiXaS |
Дата: Вт, 04.03.2014, 10:03 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Точно не знаю, но могу предположить, что Если Вы используете кварц 48 Мгц, то либо нужно выключить PLL либо xtal увеличить, либо поставить кварц на 20 МГц. У меня кварц стоит 20, а xtal = 48.
|
|
|
|
доцент2 |
Дата: Вт, 04.03.2014, 14:05 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Поставил кварц на 20МГц все заработало, а на 48МГц не хочет. Если я правильно понял даташит, то для 4МГц надо выставить такие настройки: PLLDIV = 1 CPUDIV = OSC3_PLL4 ; [OSC1/OSC2 Src: /3][96 MHz PLL Src: /4] FOSC = HSPLL_HS для 20МГц PLLDIV = 5 CPUDIV = OSC3_PLL4 ; [OSC1/OSC2 Src: /3][96 MHz PLL Src: /4] FOSC = HSPLL_HS и т.д. Выставил для 24МГц PLLDIV = 6 CPUDIV = OSC3_PLL4 ; [OSC1/OSC2 Src: /3][96 MHz PLL Src: /4] FOSC = HSPLL_HS к сожалению программа на компе МК не видит, так же как и для 40 и 48МГц. Еще вопрос: если я ставлю в основную программу паузу DelayMs 500, то ПК устройство видит, а программа которая должна с ним работать его не видит. Если я правильно понимаю, то МК должен постоянно напоминать о себе или я не прав?
Сообщение отредактировал
доцент2 - Вт, 04.03.2014, 15:04
|
|
|
|
MiXaS |
Дата: Вт, 04.03.2014, 17:14 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата доцент2 ( ) МК должен постоянно напоминать о себе или я не прав
Так точно! Иначе тю-тю
|
|
|
|