NES över USB med 18F2550

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

NES över USB med 18F2550

Inlägg av zie »

Hej!

Har precis börjat med PIC:ar, och hittade ett projekt för att få en NES-kontroll att fungera över USB med hjälp av PIC18F2550. http://www.zero-soft.com/HW/USB_NES/index.php?page=1
Bild

Jag programmerade med LVP (ICSP) med denna enkla kopplingen http://home.vrweb.de/~lotharstolz/stolz ... index.html.

Jag använde WinPic800, och programmeringen verkar fungera, den rapporterar inga fel, och jag kan läsa informationen från PIC:en.

Jag testade därför att koppla upp PICen enligt schemat. Jag använde en 4MHz keramisk resonator med 2 kondensatorer på 37pF. 200nF från Vusb till jord.

När jag kopplar i USB-sladden får jag meddelandet "Okänd Enhet".

Jag har kollat att spänningen från Vusb till jord är 3.35V och att kristallen svänger fint i 4MHz. Jag la till lite extra kapacitans ~100nF från Vusb till jord med samma problem.

Jag är tacksam för all hjälp jag kan få, jag kan ha missat något väldigt enkelt och väsentligt utan att veta det. :roll:

1. Har läst att ~30pF är att rek. till kristallen kan de extra 7pF ha en inverkan?
2. Guiden använder en hög-volts-programmerare och har satt LVP-flaggan till 0 i HEX-filen. Något jag dock fick ändra manuellt får att få programmeringen att funka, kan detta ha inverkan på resten av kresten?
3. Har läst att MCLR ska vara hög, vid normal användning. Testade detta genom att koppla den till VCC med ett 10K motstånd emellan utan resultat.

EDIT: Potensfel
Senast redigerad av zie 15 juni 2007, 00:19:42, redigerad totalt 2 gånger.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Har du ställt in PLL:en rätt??
Sedan ska det väl vara något moststånd mellan D-, D+ och processorn.
Bra att du använder en kristall istället för en resonator.
Kondensatorn på Vusb är viktigt att den är rätt och sitter nära processorn.
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

Inlägg av zie »

Micke_s skrev:Har du ställt in PLL:en rätt??
Sedan ska det väl vara något moststånd mellan D-, D+ och processorn.
Bra att du använder en kristall istället för en resonator.
Kondensatorn på Vusb är viktigt att den är rätt och sitter nära processorn.
Mycket termer, jag vet inte exakt vad PLL:en är för något, jag kör mer eller mindre utifrån de ritningar och beskrivningar som finns på sidan. Samtidigt försöker jag lära mig hur allt hänger ihop. Min uppfattning är att det är det som multiplicerar eller dividerar kristallens frekvens till den som processorn har?

Jag har sett konfigurationer med och utan motstånd vid D-, D+. Det verkar inte vara nödvändigt?, oftast är dom så små att ledningarna mer eller mindre skapar lika mycket motstånd. ~20Ohm. Testade lite snabbt med 15 Ohms motstånd och det är samma visa.

Detta är en bild över hur configurationen är satt från HEX-filen. Jag tror inte det ska vara något fel med själva koden, eftersom han som gjort projektet själv fått det att fungera.

Bild
Användarvisningsbild
lgrfbs
Inlägg: 7320
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Inlägg av lgrfbs »

Välkommen till forumet!
Lycka till med projektet :tumupp:
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

USBPLL ser ikryssad ut.
Är du säker att du ska ha watchdogtimern??
VAd har du för kondensator på Vusb(alltså typ). när jag höll på med PIC18F2550 så har jag minne av att den är väldigt känslig. Tror jag hade 470nF eller så till sist.
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

Inlägg av zie »

Micke_s skrev:USBPLL ser ikryssad ut.
Är du säker att du ska ha watchdogtimern??
VAd har du för kondensator på Vusb(alltså typ). när jag höll på med PIC18F2550 så har jag minne av att den är väldigt känslig. Tror jag hade 470nF eller så till sist.
Jag har testat med lite olika konfigurationer av kondensatorer till Vusb, just nu är det ett hopkok av 4st som tillsammans ger ~400nF till jord. Jag har kollat spänningen och den ligger benfast på 3.35V. Som jag har förstått det är kondensatorerna endast där för att stabilisera spänningen från spänningsregulatorn (inne i PIC:en) till 3.3V?

Som sagt alla konfigurationer är gjorda av .HEX-filen. Jag vet inte anledningen till att watchdog-timern är på, men det verkar ju vettigt om programmet skulle krasha av någon konstig anledning?

USBPLL, ingen aning vad den gör.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

*ALLA* configureringar borde vara OK redan i HEX filen, så
ändra inget (om det inte specifikt sägs så). Ännu bättre, kör med
en programmerare där du inte *kan* ändra config, så har du inte det
problemet...

> Jag använde en 4MHz keramisk resonator med 2 kondensatorer på 37nF

En resonator med 2 eller 3 pinnar ?
Om den har 3 pinnar har den inbyggda kondingar, om den har två
pinnar ska du komplettera med ca 22 *pF*. Aldrig i livet att det
ska vara 37 *nF* !!
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

Inlägg av zie »

sodjan skrev:*ALLA* configureringar borde vara OK redan i HEX filen, så
ändra inget (om det inte specifikt sägs så). Ännu bättre, kör med
en programmerare där du inte *kan* ändra config, så har du inte det
problemet...

> Jag använde en 4MHz keramisk resonator med 2 kondensatorer på 37nF

En resonator med 2 eller 3 pinnar ?
Om den har 3 pinnar har den inbyggda kondingar, om den har två
pinnar ska du komplettera med ca 22 *pF*. Aldrig i livet att det
ska vara 37 *nF* !!
Det är en två-pinnars, jag har lagt till 2x37pF, kan det vara för högt? Jag har dock en fin sinusoscillation på scopet.

Det hade visst smygit in sig ett potensfel :) Det ska självklart vara pico...

Den enda konfigurationen jag har ändrat från .HEX:en är LVP 1 istället för 0. Den enda skillnaden borde vara att man inte kan använda MCLP som i/o.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

22 eller 37 pF, den går nog igång på båda. Och ligger den tillräckligt
nära 4 Mhz så är det nog OK.

Motstånden vid D+ och D- talar om för USB hosten vilken hastighet
som ditt USB device vill köra med. Jag minns inte på rak arm om
PIC'arna har inbyggda motstånd för detta, men jag har för mig att
det är så...

USBPLL'en ser till att USB hårdvaran får en rimlig/riktig frekvens att
jobba på. Den ger 96 Mhz ut från 4 Mhz in. Denna delas sedan ner till
48 Mhz vilket används för USB "high speed".
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

Inlägg av zie »

Efter midsommarfirandet tog började jag igen.

Jag testade med en annan 18F2550 för att eliminera det felet, programmerade med en väl fungerade USB-programmerare. Testade med lite olika kondensatorer till oscilatorn och bytte även mellan två olika "2-pinnars kristaller".

Jag fick dock lite underliga värden när jag kollade på oscilationen med ett digitalt oscillioscope:

Mellan OSC1 och OSC2: 4MHz, ~40V peak to peak, ingen offset
Mellan OSC1 och GND: DC-nivå på 10V
Mellan OSC2 och GND: 4MHz ~30 peak to peak, 10V offset.

Detta fick jag med bägge PICarna. Jag undrar om detta är normalt, tycker det låter högt med 30V peak to peak för något som bara ska oscilera? Kanske ska nämna igen att jag matar den med 5V DC... Detta blir bara underligare och underligare... :shock:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

10:1 prob ?
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

Inlägg av zie »

Sodjan, tack för visat intresse.

1. Jag vill först visa exakt hur jag har kopplat, kolla gärna igenom ritningen och se om ni ser några direkta fel. Kretsen tar ström från USB, 5V och ska drivas med den externa oscilatorn i 4MHz. Jämför gärna med den config som är inställd. Det jag har tagit bort från orginalschemat är ICSP kopplingarna och att jag använder en 2-pins resonator istället för en 3-pins.

Bild

Bild

2. Jag har även gjort några fler mätningar med ett gammalt analogt oscollioscope här hemma. Det jag hade var BNC-->Bananer, borde vara 1:1. Fick dock lite annorlunda värden än med det digitala scopet. Möjligt att det var en 10:1 probe, ska se på saken när jag är i skolan.

Positiv - Negativ
OSC1 -- GND: 1V peak to peak (pp), 4MHz, 1V offset (något svårt att tyda dock)
OSC2 -- GND: 4V pp, 4MHz, 2V offset.
OSC1 -- OSC2: 10V pp, 4MHz, ingen offset (renast signal)
OSC2 -- OSC1: 5V pp, 4MHz, ingen offset

3. Kollade även på 5V från USBn och den låg fint stilla utan en massa krafs, även Vusb (pin14) låg fint på 3.3V, några småspikar fanns dock i 50mV (pp) området. Testade med större kondensatorer, ingen skillnad.

4. Jag kollade även mellan D+ och D-, och såg något som liknande fyrkantspulser som låg på en sinusvåg (kanske en störning?) Var iaf väldigt svårt att få något som såg någorlunda ut vettigt ut. Känns inte som sinusvågen borde ligga där?

Bild

5. Extra info, enligt konstruktören, är det tre saker som oftast gör att man får Okänd USB enhet som svar av datorn.
Oscilationen fungerar inte korrekt
Vusb är inte tillräckligt stabil
Fel i programmeringen
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Mycket info, men vad är frågan ?
Sinusen kan vara en 50Hz stöning.
Du anger varken frekvens eller amplitud,
så det får du fundera på själv antar jag...
zie
Inlägg: 7
Blev medlem: 14 juni 2007, 21:20:02
Ort: Göteborg

Inlägg av zie »

sodjan skrev:Mycket info, men vad är frågan ?
Sinusen kan vara en 50Hz stöning.
Du anger varken frekvens eller amplitud,
så det får du fundera på själv antar jag...
Frågan är gigantisk: Är det något som ser konstigt ut utifrån den information jag har givit? Kopplingsschemat, fortfarande en oscilation som är 10V peak to peak, tex.

sinusvågen som låg på D+, D- var väldigt liten i amplitud, men i samma storleksordning som "fyrkantsvågen". Ska kolla frekvensen, inte omöjligt att den låg på 50Hz, klantigt att inte kolla det först :)

Ska tillägga att jag även testade att sätta MCLR hög, ifall den fortfarande var aktiv med ett 10K motstånd, ingen skillnad.
Skriv svar