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.

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 ...

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%)]