Hoi Allen!
Ik zit vast. Ik heb nu van alles geprobeerd, maar het lijkt me maar niet te lukken.
Ik heb de laatste versies van de Microchip website geplukt. Het enige dat ik aan de praat krijg is de mouse-demo. Nu is dat natuurlijk prachtig, maar ik wil iets meer dan een ronddraaiende muis.
Ik heb ook de picusbpcinterfacing.zip gedownload van het archief, maar het vb-programmaatje stopt met een time-out: geen verbinding.
Omdat dit laatste is geschreven voor een 2450 heb ik eea aangepast naar de 4550. Mijn PC ziet keurig het device, met de juiste VID's en PID's, maar de communicatie lukt me dus niet.
Wie heeft eea wel voor elkaar gekregen en is bereid mij te helpen?
Oh ja, de hardware is de minimale 4550 + 20 MHz kristal en wat knopjes.
Bij voorbaat dank.

[Bericht gewijzigd door klein is fijn op (1%)]

ik heb hier een werkende usb verbinding

echter wel geschreven in MikroC met bijhorende lib's
mits dat geen probleem is.

tevens heb ik werkende sourcecode voor HID communicatie in VB2008

Ik ben al weer een heel stuk verder, mede dankzij Timmie overigens.
De software uit de picusbinterfacing.zip heb ik werkend. Het grote probleem was het gebrek aan documentatie. Ik heb de .asm doorgeploegd en snapte toen wat ik moest doen om de PIC en de VB-applicatie met elkaar te laten praten.
Ik ben intussen ook zo ver dat ik extra functionaliteit kan inbouwen.

Ter aller leringh ende vermaeck:

De originele software heeft de volgende interface:

positie 1: P = poortcommando
positie 2: A of B, selecteert PORTA resp PORTB
positie 3: I: zet de poort als input
O: zet de poort als output
Z: zet de poortbits I/O afhankelijk van positie 4 & 5
S: schrijft positie 4 & 5 naar de poort
L: leest de poort uit
positie 4 & 5: hexadecimale waarde

Na het commando L wordt een hexadecimale waarde, 2 posities dus, teruggestuurd

Voorbeeld:
PBO : portB als output
PBSF4 : schrijf hF4 in poort B
PBL : lees de waarde van poort B, in dit geval zal daar F4 als resultaat komen

Het VB-programma lijkt niet meer dan een simpele interface, maar de USB-code die er achter zit werkt perfect en is dus een mooi stukje werk. Hulde voor de ontwikkelaar (al weet ik niet wie dat is).
Let op, als je de vbp opent krijg je een foutmelding omdat het icoon ontbreekt (regel 10).

Het aanpassen van de .asm naar een 18F4550 is erg makkelijk omdat de ontwikkelaar de aan te passen configs al heeft opgenomen.
Het enige dat je verder hoeft te doen is de processor aan te passen in de code en in MPIde de processor en het linkerscript te veranderen.

Uitbreiden van de .asm
De functionaliteit is beperkt, maar dat geeft nix omdat het een demonstratie is.
De fundamentele routines zitten er allemaal al in, dus je hoeft alleen je eigen fantasie maar te gebruiken.

Cruciale onderdelen: de routines SCAN, READ en OUT8B, de IntIbuffer en de IntObuffer.
SCAN lees alles dat binnenkomt en zet het in IntIbuffer.
READ levert telkens het volgende element uit deze buffer.
OUT8B stuurt de hele IntObuffer naar buiten.

De logica van de inputverwerking is gebaseerd op de opeenvolgende bytes die READ oplevert.
Een uitbreiding begint dus met het aanpassen van het afhandelen van de eerste byte.
Je kunt nu je eigen commando protocol opzetten door, vergelijkbaar met de afhandeling van de "P" ook andere waarden af te handelen.


MainLoop
		call	SCAN			;kijk of er input is
		iorlw	0x00			;als W=0 niet, blijf kijken
		bz		MainLoop
	
		banksel	IntIbuffer
		lfsr	FSR1, IntIbuffer	;zet pointer op IntIbuffer
									;begin van ontvangen commando

		call	READ			;haal karakter
		movlw	"P"				;poortcommando
		subwf	Tempkar,W
		bz		POORT
; hier ga je je eigen commando's afhandelen		
		movlw "C"
		subwf	Tempkar, W
		bz		COPY
		movlw	"T"
		subwf	Tempkar, W
		bz		TRANSMIT	; verzendt de IntObuffer
	
		bra		MainLoop

essentieel bij het werken met de IntObuffer is FSR2


COPY
		call	copyI2O
		bra		MainLoop

TRANSMIT
		lfsr	FSR2, IntObuffer
		call	OUT8B
		bra		MainLoop

en dan ergens buiten de MainLoop


copyI2O						; copy intI naar intO
		movlw	.64
		movwf	iRecTel
copy_00
		lfsr	FSR1, IntIbuffer
		lfsr	FSR2, IntObuffer
copy_20
		movf	POSTINC1, W	; intI naar W
		movwf	POSTINC2	;zet byte in IntObuffer
		decfsz	iRecTel
		bra		copy_20
		return

ik heb je trouwens nog een geteste versie van usbspot naar je mail gestuurd.

leuk dat je het werkend hebt:)

Op 21 mei 2009 17:48:47 schreef hadv: Hulde voor de ontwikkelaar (al weet ik niet wie dat is).

Dank. De asm-firmware en de VB-software zijn voorbeelden en eenvoudig aan te passen aan een ander gebruiksdoel, zoals je al opmerkt.

Mijn excuses voor het ontbrekende icoon.
Het lijkt me dat dit soort software iets is voor gevorderden. Daarom heb ik nauwelijks toelichting gegeven.

Wie vragen heeft: stel ze maar.

[Bericht gewijzigd door BenZ op (26%)]