Ik ben aan het proberen communicatie op gang te krijgen tussen mijn PIC18f4550 en mijn Windows 8.1 machine.
Hier mijn breadboard met aantekeningen:
Het programmeren van de PIC gaat perfect. Normale progjes zoals een blink led progje werken perfect. vusb op de pic geeft rond de 2,5 / 2,9 V aan.
Error die in Apparaatbeheer verschijnt:
Project code:
unsigned char readbuff[64] absolute 0x500; // Buffers should be in USB RAM, please consult datasheet
unsigned char writebuff[64] absolute 0x540;
char count;
void interrupt(){
USB_Interrupt_Proc(); // USB servicing is done inside the interrupt
}
void main(void){
ADCON1 |= 0x0F; // Configure all ports with analog function as digital
CMCON |= 7; // Disable comparators
HID_Enable(&readbuff,&writebuff); // Enable HID communication
while(1){
while(!HID_Read());
for(count=0;count<64;count++)
writebuff[count]=readbuff[count] + 1;
while(!HID_Write(&writebuff,64))
;
}
}
De descriptor die is toegevoegd is gegenereerd door MikroC:
http://pastebin.com/zqANnhZN
De configuratie settings in MikroC:
USBlyzer geeft een lege descriptor aan:
Wat ik geprobeerd heb:
- 100nF caps voor de pic i.p.v. 10
- 470nF cap voor vusb
- 8Mhz kristal i.p.v. 20 (met juiste config uiteraard)
- Alle connecties doorgemeten op het breadboard, allemaal in orde
- Usb kabel doorgemeten, perfect in orde (Kabel is wel ongeveer 1,5 meter lang!)
Het enige dat ik niet kan proberen is een andere PIC (niet op voorraad).
Is er iemand die mij kan helpen? Voor zover ik kan zien is alles in orde. Is mijn PIC misschien faulty? Op vusb hoort toch 3.3V te staan?
Alvast hartelijk bedankt.
[Bericht gewijzigd door Waijur op zaterdag 20 september 2014 02:26:02 (11%)]
Arabel
Re-integratiecoach uitgerangeerde en degoutante electronen
Ik mis een weerstandje op de foto...
Speed Identification
At the device end of the link a 1.5 kohm resistor pulls one of the lines up to a 3.3V supply derived from VBUS.
This is on D- for a low speed device, and on D+ for a full speed device.
(A high speed device will initially present itself as a full speed device with the pull-up resistor on D+.)
The host can determine the required speed by observing which line is pulled high.
http://www.usbmadesimple.co.uk/ums_3.htm
USB1.1 werkt op 6 Mhz (en kan werken zonder pullup) maar de PICusb staat op 48MHz(is goed!) dus USB 2.0, en daarom ziet ie je device niet.
[Bericht gewijzigd door Arabel op zaterdag 20 september 2014 05:09:19 (12%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Probeer er eerst eens een bestaande werkende file in te schieten. (er zijn er genoeg te vinden)
Dan weet je of het een hardware of software probleem is.
marcob
Golden Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Hier staat een voorbeeld van een PIC met USB, inclusief Software voor de PC. Kun je je opstelling testen. Het werkt voor een PIC18F2550 / 2458 / 2553 / 4455 / 4550 / 4458 / 4553. Deze gebruik ik ook altijd.
Bedankt voor de reacties.
De pull-up voor D+ zie ik voor het eerst. Geprobeerd, helaas zelfde effect.
De code die ik gebruik komt al van het werkende voorbeeld die met MikroC geleverd wordt, en komt op vele websites terug. Zou dus goed moeten zijn denk ik zo.
Jouw linkje ga ik maar eens proberen.
Bedankt.
Edit: usb4all geprobeerd, zelfde effect. Verzoek voor apparaatdescriptor is mislukt.
Er lijken dus 2 opties te zijn: De pic is kapot of er is toch iets mis met mijn circuitje. Nog ideeën iemand?
[Bericht gewijzigd door Waijur op zaterdag 20 september 2014 12:05:00 (24%)]
hadv
Just find out what you like and let it kill you
Vergroot de c vann 220 nF naar 470 nF. Dat zal dit probleem niet oplossen, maar maakt eea wat stabieler. [edit]Ik zie nu pas dat je dat al had geprobeerd. Toch gewoon doen.[/edit]
Dit klinkt typisch naar een fout in de descriptor of in de opstartcode van de uC (enumeratie door de host).
Controleer eens of de zaken die in de descriptor staan (want die ziet er wel goed uit) ook in de .asm/.lst voorkokmen.
Je mag je .hex wel opsturen, ik heb hier meerdere boards met 4550 op 20MHz. Als je even vertelt wat het moet doen kan ik het voor je testen. (email adres in mijn profiel)
[Bericht gewijzigd door hadv op zondag 21 september 2014 12:35:58 (17%)]