Kevinoud
Een zak tuinaarde opescheuren
Goedenmorgen,
Ik ben op het moment op school voor een project bezig met communicatie tussen PC en PIC.
Hoe en wat ik het doe maakt niet uit dus koos ik voor een virtueele RS232 Poort.
Nu zit ik in de knoop want de pic verbreekt continu de verbinding als ik via hyper terminal een commando stuur.
In het begin gaat het goed en na een 10 a 20tal seconden stuur ik weer een willekeurige toets dan is de verbinding verbroken terwijl hij nog wel gewoon in apparaatbeheer staat.
De huidige code ontvang een willekeurige byte (ascii) en stuurt dan een L terug dit gebeurt ook tot hij ineens verbreekt.
irrelevante info eruitgehaald (declares over de LCD etc.)
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]
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
PWRT = On ; PWRT enabled
BOR = OFF ; Brown-out Reset disabled in hardware and software
VREGEN = On ; USB voltage regulator enabled
CONFIG_END
XTAL = 20
'USB instellen op virtueel RS232
Declare USB_DESCRIPTOR = "CDCDESC.INC"
Dim PP0 As Byte SYSTEM
Dim in_buffer As Byte
Dim out_buffer As Byte
Symbol CARRY_FLAG = STATUS.0
Symbol TRNIF = UIR.3
GoTo MAIN
USB_send:
Repeat
USBOut 3,out_buffer,1
Until CARRY_FLAG = 0
Repeat : Until TRNIF = 1
Return
USB_receive:
Repeat
USBIn 3,in_buffer,1
Until CARRY_FLAG = 0
Return
MAIN:
While 1 = 1
'check if USB attached
Repeat
USBPoll
Until PP0 = %00000110
Call USB_receive 'in_buffer contains received byte (like serial RX)
out_buffer = "L" : Call USB_send 'send char 'c' (like serial TX)
Wend
Ook kan ik in de out buffer geen Lol neerzetten bijv. OOK als ik achter USBout aan het einde AUTO neerzet voor het aantal bytes.
BVD
ps. het valt me nu op dat hij na een paar minuten wel het "unplug" geluid geeft maar het apparaat blijft beschikbaar in apparaat beheer.
ik wou virtueel serieel gebruiken omdat het lekker makkelijk is om eerst met hyper terminal commando's te sturen.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
je moet bij usb opletten dat je in idle altijd tijd genoeg hebt om de usb te servicen ...
zet tussen je usb receive en je usb send ook eens een usbpoll ...
Kevinoud
Een zak tuinaarde opescheuren
Net even getimed hoelang het ongeveer duurt.
Circa 5 minuten maar dan is hij al weet ik veel hoevaak door die loop heen geweest dus het lijkt me niet dat het aan die usbpoll ligt.
En elke opvolgende 5 minuten hoor je weer het "disconnect" geluid terwijl hij gewoon blijft staan in apparaat beheer tot je heb echt disconnect.
Ik vind het een beetje vreemd.
ps. nog een andere vraag ik wil alleen Analoge ingang AN3 gebruiken van de 18F4550 maar volgens de tabel kan dit niet uit de datasheet.
0
0 en 1
0 1 en 2 etc je kunt niet een specifieke poort kiezen kan dit omzeilt worden ?
[Bericht gewijzigd door Kevinoud op (14%)]