Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: demanik, ivan_fd  
PIC18F2550 запись данных с компа.
Techno-holst Дата: Пн, 03.02.2014, 05:44  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 24
Репутация: 0   ±
Замечания:   ±
На сайте с 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
ЯНДЕКС Дата: 03.02.2014
доцент2 Дата: Пн, 03.02.2014, 17:36  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Какое значение для Buffer (Input) Вы указали при работе с плагином EasiHID?
Techno-holst Дата: Вт, 04.02.2014, 05:23  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 24
Репутация: 0   ±
Замечания:   ±
На сайте с 13.07.2011

Статус: Offline

64
доцент2 Дата: Ср, 05.02.2014, 10:23  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

У меня все работает. Пример в архиве. По нажатию на кнопку в МК передаются данные. Использую паузу в протеусе можно посмотреть содержание переменной буфера. Не хватает только подробных комментариев к тексту программы для МК.
Прикрепления: USBProject.rar (397.0 Kb)

Сообщение отредактировал доцент2 - Ср, 05.02.2014, 16:41
Techno-holst Дата: Чт, 06.02.2014, 06:05  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 24
Репутация: 0   ±
Замечания:   ±
На сайте с 13.07.2011

Статус: Offline

Огромное Вам спасибо! Буду разбираться!
доцент2 Дата: Сб, 01.03.2014, 23:06  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 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. наверное с ними что-то не так.
Прикрепления: 2432001.jpg (129.7 Kb)
MiXaS Дата: Вс, 02.03.2014, 12:09  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 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
Репутация: 10   ±
Замечания:   ±
На сайте с 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
Репутация: 27   ±
Замечания:   ±
На сайте с 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
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

у меня кварц на 48МГц, я так понимаю
PLLDIV = 12
С этими настройками компьютер определяет устройство почти сразу после подключения. Но так же пишет, что устройство работает с ошибкой (код 43).
MiXaS Дата: Пн, 03.03.2014, 12:04  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 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

вот так у меня работает нормально

ЯНДЕКС Дата: 03.03.2014
доцент2 Дата: Пн, 03.03.2014, 19:52  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

попробовал Ваши настройки, только PLLDIV = 12 под 48 MHz. Но опять ошибка устройства код 43
Вот код.
Прикрепления: USBProject.bas (4.3 Kb)

Сообщение отредактировал доцент2 - Пн, 03.03.2014, 19:52
MiXaS Дата: Вт, 04.03.2014, 10:03  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Точно не знаю, но могу предположить, что Если Вы используете кварц 48 Мгц, то либо нужно выключить PLL либо xtal увеличить, либо поставить кварц на 20 МГц. У меня кварц стоит 20, а xtal = 48.
доцент2 Дата: Вт, 04.03.2014, 14:05  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 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
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата доцент2 ()
МК должен постоянно напоминать о себе или я не прав


Так точно! Иначе тю-тю
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: