Sida 1 av 1

Problem med io-port dspic

Postat: 2 augusti 2009, 11:39:47
av dangraf
Hej!
jag har ett litet underligt problem med min dspic 33f256gp506. Jag försöker driva små Leds på pinnarna RC14 och RC12 vilket inte går så bra.
Dioden är kopplade från Pinne -> restistor (1kOhm) ->Diod-> Vdd (3.3V) så att de ska lysa om man sätter pinnen låg.
Det verkar gå alldeles utmärkt att styra pinnarna ifall dessa hänger i luften. Då kan man tydligt se ett pulståg med period på 1sek (500ms låg, 500ms hög).
Kopplar jag in dioderna så blir det ett pytteliget pulståg med en period på 10ms där spänningen ligger mellan ca 0.5V och 1.3V.

Kod: Markera allt

  TRISCbits.TRISC14 = 0;   // sätter pinnarna till Output
  TRISCbits.TRISC12 = 0;
  while(1)
  {  	
	  timestamp = timerGetReading();     // hämtar tick-tiden
	  while(timerGetTimeDiff(timestamp)< U16MS_TO_TICK(500) )
	  {
		  	// väntar 500ms
	  }
              // togglar pinnarna mellan Låg och Hög
	 LATCbits.LATC15 = !LATCbits.LATC15;
	 LATCbits.LATC12 = !LATCbits.LATC12;			
  }

Pinnarnas funktion:
pin40 (OSC2/CLKO/RC15)
pin39 (OSC1/CLKIN/RC12)

Kortet kör på 3.3V vilket borde bli en ström på 3.3/1000 = 3.3mA
Enligt databladet så ska man kunna sänka 4mA på samtliga pinnar förutom CLKOUT som kan sänka 25mA.

Har någon förslag/ideer på vad detta felet kan bero på?

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 11:58:02
av mri
Kortet kör på 3.3V vilket borde bli en ström på 3.3/1000 = 3.3mA
3.3mA borde det bli med bara resistorn som belastning, men har du ytterligare en LED i serie stjäl den väl ungefär halva Vdd ?

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 12:02:57
av dangraf
Jo, det har du rätt i, kom på det senare.. Men det borde samtidigt betyda att strömen bli ännu lägre än 3.3mA,
(3.3V-0.7V)/1000 = 2.6mA
Ville väl mest visa att jag ligger inom området av vad databladet säger.

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 12:08:38
av mri
OK. (En LED har dock högre spänningsfall än 0.7V)

En gissning bara, utan att vera nåt om din processor: Vissa kretsar har I/O portar med "high-current" mode som måste aktiveras separat.

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 12:32:49
av bearing

Kod: Markera allt

TRISCbits.TRISC14 = 0;   // sätter pinnarna till Output
...
LATCbits.LATC15 = !LATCbits.LATC15;
14 och 15 är inte samma pinnar.

Vad använder du för LED? Vissa färger har över 3.3V framspänningsfall.

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 12:46:00
av dangraf
Attans! jag har skrivit fel i inlägget, det ska vara RC15 och RC12. Det var ett bra påpekande.
Initieringen av TRIS registerna görs egentligen i en egen init-funktion, blev fel när jag skrev inlägget.

framspänning över dioderna.
grön: typ 2.9V, max 3.2V
röd: typ 1.92V max 2.5V

http://media.digikey.com/PDF/Data%20She ... W87RA1.pdf

Så det blir alttså en väldgit liten ström och ev ingen ström alls på den gröna dioden.
Men även om det inte skulle gå någon ström genom dioden så borde väl pinnen på processorn kunna gå låg/hög?

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 12:49:07
av sodjan
Hur menar du ? Är inte koden i inlägget samma kod som du kör med ?
Sitter du och skriver av koden från scratch för inlägget ?
Det låter inte speciellt smart... :-) Varför inte bara copy/paste ?

Re: Problem med io-port dspic

Postat: 2 augusti 2009, 13:10:52
av dangraf
Nä, det är inte speciellt smart inser jag nu.. :? Jag kopierade in while-slingan men skrev in TRIS- inställningarna manuellt i inlägget eftersom detta gjordes i en init-funktion med hjälp av #defines från en h-fil vilket jag tyckte skulle bli rörigt att beskriva.

Det var lösningen på problemet! Jag hade klantat mig och satt fel tris-register i min define.
Ber om ursäkt för min klantighet och tackar så väldigt mycket för all hjälp!

Nu funkar det.

/Daniel