Sida 1 av 1

Hjälp med I2C kommunikation till MAX6956

Postat: 23 april 2009, 16:43:59
av wolfheat
Här finns en länk till databladet för kretsen (PDF).

Har hållt på ett bra tag med att försöka skicka rätt instruktioner till denna krets, men ack, jag förstår helt enkelt inte hur jag skall få den att bete sig som jag vill. Har läst igenom databladet flertalet gånger och försökt att förstå mig på hur datat skall skickas, men tydligen förstår jag mig inte på det hela eftersom jag får felaktigt resultat.

Det jag vill göra är att använda kretsen för att styra externa LEDs, det finns 16nivåer av inställningar för strömbegränsning. Har kopplat 40kOhm mellan ISET och jord. AD0,AD1,samt de två GND är kopplade till jord, 40nF kondensator sitter mellan Vdd och GND. Då jag startar med ett startkommando och sedan klockar ut addressen så verkar kretsen fungera korrekt. Den ger ACK då rätt adress skickas, men inte då fel adress skickas. Så jag verkar kunna skicka datat korrekt till kretsen, men jag verkar inte skicka rätt data. Jag beskriver vad jag gör nedan, samt vad jag förväntar mig.

Nu försöker jag skicka följande :

Start-kommando
b'10000000' ;Address
kolla ACK
h'0F' ;Command (Port Configuration P31, P30, P29, P28)
kolla ACK
b'00000000' ;Data

På sid 15 i databladet står initieringsvärdena för kretsen GPIO Input Without pullups "1 0 1 0 1 0 1 0", detta tolkar jag
som att två bits gäller för P31,P30,P29,P28 där 1-betyder GPIO Input och 0-betyder without pullups. Korrekt?
Jag tycker att databladet är svårt att följa.
Det nämns att det går att ställa in portarna som GPIO eller för LED styrning. Då jag skickar "0 0 0 0 0 0 0 0" förväntar
jag mig att ställa in kretsen på LED, utan pullups. Hittar ingen plats där detta är beskrivet på ett vettigt sätt.


kolla ACK

Här förväntar jag mig att kretsen är inställd som LED drive, men med 1/16 av strömmen som begränsning. För att
öka detta till 16/16 skickar jag in nytt startkommando, address, samt Command h'58', med data h'0F'


Start-kommando
b'10000000' ;Address
kolla ACK
h'58' ;Command (8 ports 24–31 (data bits D0–D7))
kolla ACK
b'00001111' ;Data
kolla ACK

Här skall strömmen ligga på maxvärdet 16/16 (ca 24mA) samt portarna 31-28 vara inställda för LED-styrning. Dock får
Jag inte mina leds att lysa på dessa portar.


Förlag till lösning på detta problem upskattas.

Re: Hjälp med I2C kommunikation till MAX6956

Postat: 25 april 2009, 23:17:26
av wolfheat
Ursäkta bumpningen, men någon med ett bra svar på mitt problem kanske missat detta inlägg...

Re: Hjälp med I2C kommunikation till MAX6956

Postat: 26 april 2009, 00:54:06
av sodjan
Jag såg det första gången också, men precis som då så är det
för mycket för att läsa igenom (alltså databladet)...

Re: Hjälp med I2C kommunikation till MAX6956

Postat: 27 april 2009, 00:11:15
av wolfheat
Tror mig har hittat felet jag gjorde. Tydligen missade jag att jag var tvungen att ändra shutdowncontrollen i register 0x04 till en '1' för normal operation. Nu har jag den kontroll över kretsen jag hade hoppats på.