Nekoliko dana pokusavam da pokrenem pic 18F2550 ali PC nikako da prepozna mikrokontroler kad ga povezem preko USB interface-a. Nasao sam na netu neki prosti mikroc source code, podesio HID terminal, ubacio generisani fajl USBdsc.c u projekat, kompajliranje prolazi bez problemakao i upis samog hex fajla u mikrokontroleru, ali kad isti treba da se pokaze prakticno, onda dobijem jedno veliko NISTA
molim za pomoc, u prilazem source mirkco C kod
unsigned char readbuff[64]; // Buffers should be in USB RAM, please consult datasheet
unsigned char writebuff[64];
char cnt;
void interrupt(){
USB_Interrupt_Proc(); // USB servicing is done inside the interrupt
}
void main(void){
HID_Enable(&readbuff,&writebuff); // Initialize HID communication and specify our read and write buffers
while(1){ // Main program loop
while(!HID_Read()); // Loop until there's data to read on HID
for(cnt=0;cnt<64;cnt++) // Loop through our 64 byte buffer.
writebuff[cnt]=readbuff[cnt]; // Echo each byte from the read buffer to the write buffer
while(!HID_Write(&writebuff,64)); // Send the write buffer over USB
}
}
Evo, probao sam tvoj kod na ploči EasyPIC v7, kristal 8MHz....
nisam se gnjavio s tim je li radi ili ne, ali ga je uredno prijavio kao HID na računalo. Evo ti kompletan projekt:
Hvala, dosta mi je pomogao projekat koji si mi poslao. Ali nemam oscilator od 8mhz, pa sam mikroc projekat korigovao da radi sa kristalom od 12.000 (12 Mhz), testiranje u ISIS 7 je proslo ok, ali i dalje ne mogu da nateram PC da mi prepozna uredjaj kad ga vezem fizicki za USB interfejs . Kacim fajlove od MikroC i ISIS, mikrokontroler sam fizicki povezao kao sto je to prikazano u ISIS 7, s tim sto sam pin 20 vezao za +5V, i pinove 8 i 19 za - ...
Opet kažem, file koji si poslao prijavljuje PIC uredno na PC, zato nemoj mijenjat sto različitih fileova, već se usredotoči na hardware. Ja sam pronašao jedan kristal na 12MHz i u projektu promijenio djelitelj na 3 i sve radi, tj. prijavljuje se na PC kao HID. U prilogu ti je slika iz hardware managera, slika postavki projekta i projekt. Provjeri dobro pinove na USB-u, dobro su nacrtani na ISIS-u, znači D- ide na RC4 (pin15), a D+ ide na RC5 (pin 16). Moraš povezat masu s USB konektora na GND kontrolera, MCLR (pin1) na +. Ako je sve tako, provjeri USB kabel, konektor, port, što god, jer ovo kod mene radi, prijavljuje se na PC!
Onda ne znam sta mu je, sve je uradjeno kao sto je navedeno, cak sam i USB kablo isekao od muke, proverio mu raspored zica, i da li je neka u prekidu, sve je kako treba, +D je gde i treba da je, -D takodje. Pokusao da napajam sklop preko USB +5V, i opet nece, pinove na PIC-u ne znam ni koliko puta proveravam, sve je fizicki u redu, na ovaj usb port drugi USB uredjaji rade bez problema, kad prikacim PIC, ponasa se kao da ga nisam ni prikacio. PIC programiram preko PICPgm programera i allpic sa korekcijom zener diode za mclr. PICPgm izbaci poruku da je PIC uspesno programiran ...
Neka ga .... odustajem od projekta
Vratio se da se patim sa starim projektom . Nasao sam na netu neki hex za USB komunikaciju, koji radi bez problema na isto spajanje komponenti kao sto je gore navedeno (samo sto sam nasao kristal od 8 Mhz), za programiranje koristim PICKIT 2 clone. E sad, kad ucitam moj hex fajl ili hex fajl od kukinjos-a (sa njegovog prvog posta gde je koristio 8Mhz kristal), opet ista prica, kao da je mrtav . Imal ko bilo kakvu pretpostavku do cega bi moglo biti, ja vise ideja nemam. Uploadovacu hex fajl i PC aplikaciju nadjenu na netu koja radi ....
Ponukao si me opet otvorit projekt. Moja ploča je dodavala vanjski napon od 3,3V na pin 14-Vusb, pa sam time i isključio fuse VREGEN u CONFIG2L registru. Kako ti nemaš priključen izvor od 3,3V izvana na taj pin, trebaš uključit interni regulator i onda će ti vjerojatno sve proradit kako si zamislio. Ja sam sad skinuo to vanjsko napajanje i uključio interni 3,3V i probao, sve radi i uredno se prijavljuje na PC. Evo ti cijeli projekt na za 8MHz kristal.
Hvala puno, evo sad radi . Samo sto imam problem rekao bih sa mojim mikroC kompajlerom, neka krekovana verzija, otvorim projekat, kompajliram, izbaci poruku da je uspesno kompajlirao, ucitam u PIC i nista ne dobijem, videcu da kupim licencu
Evo opet mene, mozda sam dosadio sa ovim ali sta da radim ... PIC se prijavljuje na PC, sve je ok, samo sto ne obavlja funkciju koju treba, po programu treba kad mu se posalje neki tekst da isti vrati na PC, sto nije slucaj, koliko sam mogao da shvatim, on prihvati neki tekst, ali u vidu praznog stringa. U ISIS simulaciji radi kako treba, kad se sve slozi prakticno ne radi, da napomenem da sam dodao i kondenzator od 200nF izmedju VUSB porta i GND jer jedino tako mi PC prepoznaje HID. Imal neko neku pretpostavku do cega bi moglo biti? Probao sam i sa rezonatorom od 20Mhz, isto se ponasa ...
Odradio sam. Bilo je potrebno da se u source iskljuce komparatori. Sad radi ok, prilazem soruce ako nekom bude trebalo (soruce je identican sa onim u Help koji ima mikroc kompajler, sa malim izmenama) ....
Ja sam imao ovaj isti problem i mučio se već mjesec dana i nikako nisam skužio zašto ne radi. Probao sam sve što je tu bilo napisano i ništa nije pomoglo. Onda mi je jednom došla ideja da izmjerim napon na Vusb pinu od PIC-a, i gle čuda, kaže 1.8V. To naravno nije u redu, izgleda da sam prilikom dosadašnjih eksperimentiranja nekako uspio spaliti njegov interni regulator za USB.
Onda sam lijepo isključio interni regulator, stavio jedan LM317 i podesio na 3.3V, dao mu to na Vusb. Evo sad radi savršeno
Možda netko ima sličan problem. Ako vam ništa ne pali od gore navedenog, možda vam je neispravan interni regulator, i ovo reješenje mi je pomoglo.