Problem med pic-baserad USB-enhet

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Roze
Inlägg: 113
Blev medlem: 30 april 2006, 17:11:11
Ort: HUDDINGE
Kontakt:

Problem med pic-baserad USB-enhet

Inlägg av Roze »

Tjo, nu ger jag upp, har försökt hur länge som heldst och med det mesta jag kan komma på. Försöker få igång en brygga mellan i2c och usb, men den vägrar fungera. hur jag än gör så säger datorn "ASYNC-error" efter ett tag.
Jag har testat i stort sett alla kombinationer av klock-inställningar och liknande, men det vägrar fixa sig, det enda som skiljer sig e längden det tar att få async.
PIC-processorn fortsätter köra, så den fastnar inte i någe interrupt som min lärare trodde från början.

Nån som har någe ide om vad som e fel?
Om nån känner för att titta lite på det kan jag skicka lr bifoga alla källfiler i ett senare skede.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Det är inte så att i2c rutinerna är poll baserad?
sodjan
EF Sponsor
Inlägg: 43275
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du kan ju börja med att beskriva det hela, så kanske någon kan svara...
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg av PHermansson »

Ja en processormodell och ett schema vore trevligt. Annars så kan det ju vara som Micke_S säger, USB är tidskritiskt. Om man antar att du använder en PIC2550 tex så får du inte göra något som uppehåller processorn särskilt länge utan istället använda... vad det nu kallas... en state machine. Precis som de gör i exempelkoden alltså.
Roze
Inlägg: 113
Blev medlem: 30 april 2006, 17:11:11
Ort: HUDDINGE
Kontakt:

Inlägg av Roze »

Processorn är en PIC18F2550, och min interruptkod är väldigt liten, dock Main() är inte heller allt för omfattande och gör inte saker allt för ofta, tror jag, det enda jag kan tänka mig skulle kunna få USB att krasha pga att det tar för lång tid att utföra är själva I2C-kommunikationen, dvs, då den skickar / tar emot data.

http://roze.ridorana.se/bilder/main.png <-- Schematic


http://roze.ridorana.se/text.php?view=20 <-- interrupt-rutinen
http://roze.ridorana.se/text.php?view=31 <-- main + i2c-hanteraren

och ja, i2c-rutinerna är pollbaserade, iaf vad jag vet ^^, men de körs inte i interrupt, varpå usb borde få svar iaf
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg av PHermansson »

Vad har du för värde på C4?
LED1 & 2 är felvända?
Varför finns D1?
Har du 100n avkoppling nära matningspinnarna?
Värde på C5 & C6?
Vilken uppgift har R1 & R2?

Har bara kollat lite snabbt på koden men du har en ganska lång loop:

Kod: Markera allt

				
USB_Restart = 0;
 for(time1 = 0 ; time1 < 20 ; time1++){
    for(time2 = 0 ; time2 < 65000  ; time2++);
	ledpwr = !ledpwr;
   }
Roze
Inlägg: 113
Blev medlem: 30 april 2006, 17:11:11
Ort: HUDDINGE
Kontakt:

Inlägg av Roze »

C4 vet jag inte riktigt, har inte förstått mig på hur man läser av det som står på wima-kondingar än, men det står 3n3K på den.
LED1 och LED2 är felvända för att jag råkade vända dem fel när jag satte dit dem som externt kort vid byggandet, och jag fann det enklare att ändra i koden än på kortet
D1 sitter där för att läraren sa att det behövdes ^^
C5 = 1µF, C6 = 2.2µF
R1 och R2 är hämtade ur PICens datablad, och skulle va där för att en Selfpowering USB-enhet skulle funka bra.

Loopen stod det var nödvändig för att vänta på att usb på dator-sidan skulle initiera. den ska vara minst 1.8s
sodjan
EF Sponsor
Inlägg: 43275
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> LED1 och LED2 är felvända för att jag råkade vända dem fel när jag satte dit
> dem som externt kort vid byggandet, och jag fann det enklare att ändra i
> koden än på kortet

Förklara hur en justering i koden kan vända två LED rätt igen !! Spännande...
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Kanske så att han menade att de är drivna så att anoden är kopplad upp till +5V via motstånd och katoden till I/O pinne. Dvs lyser när utgången är låg.
Istället för att koppla katoden via motstånd till jord och anoden till I/O så att den lyser när utgången är hög. (Förutsätter att I/O klarar driva tillräckligt i båda riktningarna)
Roze
Inlägg: 113
Blev medlem: 30 april 2006, 17:11:11
Ort: HUDDINGE
Kontakt:

Inlägg av Roze »

ops, hade råkat sätta en 5v där, my bad, ska va gnd
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg av PHermansson »

C4 3n3? Ska vara 470n eller 220n om jag inte minns fel.
Ok då stämmer lysdioderna.
R1 & R2 får jag väl köpa, har inte testat self-powered...
D1 känner jag mig tveksam till, inget man brukar ha där.
C5 och C6 skulle jag bytt mot kanske 100u och 1u, kolla i 7805ans(?) datablad).
Roze
Inlägg: 113
Blev medlem: 30 april 2006, 17:11:11
Ort: HUDDINGE
Kontakt:

Inlägg av Roze »

måste dra och skaffa nya kondingar före jag kan testa det :/
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg av PHermansson »

Det är nog en bra idé. Kollade lite och hittade bland annat detta:
Please note C5 is 470nF (the datasheet recommend 220nF but more is better) and should be low ESR (for example a multi-layer ceramic). Don't forget the 100nF decoupling caps.
C5 i det schemat motsvarar din C4.
http://electronicfr.com/index.php/Micro ... F2550.html
Roze
Inlägg: 113
Blev medlem: 30 april 2006, 17:11:11
Ort: HUDDINGE
Kontakt:

Inlägg av Roze »

Tjo, det var ett tag sen jag uppdaterade hur det gick, men nu behövs det ^^

Jag har fortfarande inte lyckats få igång detta. Jag har bytt konding och kristall, men usb-delen får fortfarande timeout. och I2C-delen kör fortfarande även fast usbn dör.

Här är hela källkoden för i2c-hub-projectet, både PC-sidan, Firmware och Schematic.

http://www.laun.se/files/hub.rar

Skulle bli jätteglad om någon ville kolla på dem.

//MVH

Ps. Schematic är inte helt korrekt, jag har inte uppdaterat det helt gentemot ändringar på kortet.
sodjan
EF Sponsor
Inlägg: 43275
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Oj, 92 filer... :-)
Hoppas någon orkar igenom dom... :-)

Får du USB-timeout om du stänger av I2C helt ?
Skriv svar