Sida 1 av 1

USB-problem

Postat: 10 oktober 2006, 23:27:29
av Kenneth_F
Jag har gjort ett USB-interface till datorn baserat på en AVR-processor. Jag har använt mig av projektbeskrivningarna på http://www.obdev.at/products/avrusb/projects.html främst obdevs filer, bl.a. PoweSwitch, HIDKeys och Automator.
Hårdvaran är kopierad rakt av, och jag har testat både med både tiny2313 och atmega32 och programmerat in såväl den färdigkompilerade filen som egenkompilerad variant av den givna koden, anpassat för min processor. Trots olika hårdvara och olika firmware vill det inte fungera, i alla fall inte med Windows XP.

När jag ansluter hårdvaran till datorn kommer det upp ett meddelande om att den har hittat en ny okänd enhet, men när jag går in i enhetshanteraren är PID och VID 0000 båda 2 (USB\VID_0000&PID_0000\...) enligt enhetshanteraren. Det går inte att skapa någon drivrutin till en USB-enhet som har ovan nämnd data. 0 är tydligen reserverat för fel om jag förstått rätt.

Jag vet inte hur jag ska gå vidare och felsöka. Tacksam för förslag.

/Kenneth

Postat: 10 oktober 2006, 23:56:16
av cykze
Kör du med en 12MHz-kristall? Har du ställt om AVR:erna till att köras från en extern kristall?

Säker på att AVR:en går igång, så att den inte ligger i Reset?

Postat: 11 oktober 2006, 03:52:06
av Kenneth_F
Tack för tipset.
Jag trodde att klockningen fungerade som den skulle, eftersom jag har ställt in att den ska använda extern kristall och jag har anslutit en 12MHz-kristall. Vid mätningar ser jag dock att den verkliga klockfrekvensen är avsevärt lägre. Jag vet inte riktigt varför det är så, men det ska nog inte vara så svårt att reda ut imorgon när man är lite piggare.

Postat: 11 oktober 2006, 08:38:42
av jon_kanon
Förslag till skäl för fel frekvens på en kristall:
* Fel storlek på lastkapacitanser http://www.scapro.se/lastkapacitans.htm
* Olika storlek på lastkapacitanser
* Svårt misslyckad PCB-layout som stör svängningen
* Trasig kristall (minst troligt)

Postat: 11 oktober 2006, 10:32:30
av EBD
En tiny2313 är från fabrik programmerad med fusen CKDIV8, som delar klockfrekvensen med 8. Men det har du säkert redan ändrat, det är ju inte heller nån förklaring på varför det inte fungerar med mega32:an

Postat: 11 oktober 2006, 14:15:36
av Kenneth_F
Frekvensen för atmega32:an var korrekt redan från början men inte frekvensen för tiny:n (testade bara tiny:n igår) trots att divide clock by 8 intenally var bortklickad. För övrigt ganska onödig default-inställning tycker jag. Jag vet inte vad jag förändrade men helt plötsligt fungerade klockningen som den ska. Tyvärr blir resultatet för hela kretsen det samma när jag ansluter den till datorn.

Jag har satt reset disabled så att kretsen ska köra hela tiden och det fungerar att toggla några lysdioder när programmet kör.

Postat: 11 oktober 2006, 17:02:38
av cykze
> Jag har satt reset disabled så att kretsen ska köra hela tiden och det fungerar att toggla några lysdioder när programmet kör.

Är du medveten om att det inte går att programmera AVR:en med ISP efter att du har disablat Reset-funktionen?

Kopplar du enligt det här schemat?

Postat: 11 oktober 2006, 17:26:21
av Kenneth_F
Jag visste inte att man inte kunde programmera ISP om man dissablat reset, men jag kör high voltage programming för tillfället så det spelar ingen roll.

Jag kopplar enligt länken med den skillnaden att jag anänder 2 serikopplade dioder för att sänka spänningen istället för en 3,5V regulator.

Postat: 11 oktober 2006, 18:18:08
av cykze
Har du mätt så att du verkligen har ca 3.5 V på VCC?

Jag provade att koppla en enhet som jag har gjort med Obdev till en Windowsdator. Då fick jag upp ett fönster om att installera en drivrutin. Samtidigt gick jag in i Enhetshanteraren och kollade. Där låg mycket riktigt enheten, med sitt namn. Så det är konstigt att det inte fungerar för dig.

Postat: 11 oktober 2006, 21:53:11
av mooo
Dubbelkolla så att du har satt rätt pullupmotstånd på rätt datasignal.
Förväxlar du D+ och D- så funkar det inte.

Postat: 11 oktober 2006, 22:46:43
av Kenneth_F
Jag testade att koppla upp alltsammans på nytt med nya komponenter och resultatet blev positivt. Spänningarna på olika pinnar verkade bra även för den gamla kopplingen men jag tror att det var något fel på kristallen trots allt.

Skönt att det fungerar som det ska nu.
Tack för hjälpen.