Någon som använt en DS1802 någon gång?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Nannou
Inlägg: 123
Blev medlem: 3 april 2005, 22:01:29
Ort: Malmö
Kontakt:

Någon som använt en DS1802 någon gång?

Inlägg av Nannou »

Hej! Ställer många frågor nu, är jättetacksam för all hjälp jag får :)

Försöker få en Maxim DS1802 att fungera. Någon här som använt en? Det är en digital potentiometer som styrs antingen via knapptryckningar, eller som jag försöker med, ett seriellt interface. (alla knappingångar är jordade enligt datablad)
Det verkar inte så svårt, man sätter !RST hög, och sen klockar in 16 bitar på D, en i taget när CLK går hög. och sen sätta !RST låg. För det mesta fungerar det inte alls, men då och då lyckas jag få till att wipern hoppar till ett till synes godtyckligt ställe.
Dataöverföringen är väl rätt så standard, så någon kanske har ett bättre sätt att göra det på? Själv använder jag en 16F877A@20MHz och Hitech PICC. Mina C-kunskaper är inte de bästa :?

Kod: Markera allt

void set_pot(unsigned char pot_val)
{
	pot_val&=0x3F; //maskar av till de lägsta 6bit som är datan

	RD6=1; //!RST går hög, starta programmering
	DelayUs(10); //pausa lite
		
	for(i=0;i<=1;i++) //först pot1 och sen pot2 med samma värde
	{
		k=0x01; //bit 0
		for(j=0;j<=7;j++)
		{
			RD4=0; //CLK går låg
			DelayUs(10);
			if(pot_val&&k) //kollar om bit nr i (k) är hög eller låg
				RD5=1; //och sätt biten
			else
				RD5=0;
			DelayUs(10);
			RD4=1; //CLK går hög
			k<<1; //kolla nästa bit
			DelayUs(10);
		}
	}
	
	RD6=0; //!RST går låg. programmering klar
	DelayUs(10);
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Låter som "timing" problem.

Varför kör du inte assembler ? Mycket enklare att få till exakt timing och delayer. Det är alltid en viss "osäkerhet" i vad runtime miljön i C ställer till med :-)

Har du något instrument så att du kan verifiera att din F877'a skickar ut rätt signaler ? Eller kan du verifiera det på något annat sätt ?

Observera att du kan köra serie interfacet hur långsamt som helst, så du skulle kunna "se" att rätt pulser körs ut med en voltmeter eller ett par ljusdioder... :-)
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Har inte lusläst databladet, men jag funderar på varför du kör:

klock låg
ändra data
klock hög

istället för

ändra data
klock hög
klock låg


Känns lite fel att lämna klockan hög på slutet, även om det kanske inte borde påverka något.

Och en mer uppenbart grej som jag först missade:

if(pot_val&&k) är väl inte samma sak som if(pot_val&k).

Det första utvärderar pot_val och k som boolska värden var för sig, medan det andra är bitvis AND som du vill ha.
Användarvisningsbild
DeVille
Inlägg: 2361
Blev medlem: 29 mars 2004, 15:04:22
Ort: Dalsländska skogen.
Kontakt:

Inlägg av DeVille »

När jag använde Ibuttons så var det mycket viktigt med timingen..
Kolla så att du får rätt längd på pulserna med ett oscilloscop.. Sen kunde man lätt bli förvirrad av en inverterad signal som ska bli hög osv om man stirrat på det för många timmar.
Skriv svar