Sida 2 av 7

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 00:35:36
av TomasL
Jag får inte det fungera med konstruktörens (mcp4728_init) adress.
Hur anropar du funktionen, vilka argument använder du?

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 00:48:43
av DanielM
Jag har läst databladet. Det vore intressant och läsa där Microchip säger att man måste bitbanga här.

Kod: Markera allt

I2C_HandleTypeDef hi2c1;
uint8_t address = 0x0;
mcp4728_init(&hi2c1, address);
mcp4728_analogWrite(4095, 4095, 4095, 4095);

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 00:55:15
av TomasL
Jag har läst databladet. Det vore intressant och läsa där Microchip säger att man måste bitbanga här.
Det står inte att du måste bitbanga, men om du har någon form av kunskap om hur I2C fungerar, (och specifikt hårdvarustödet i processorn, samt hur funktionerna är tänkta att användas,) och om du sedan läser sektionen om hur man läser adressen, så förstår du att det inte går att lösa med vare sig den i processorn inbyggda hårdvaran eller standard i2c funktioner.
Det är extremt tydligt hur man skall göra.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 01:04:30
av DanielM
Du tänker säkert på angående LDAC pinnen som man måste trimma in parallellt?
Skärmklipp.PNG

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 01:13:43
av TomasL
Ja LDAC måste gå låg efter mellan åttonde och nionde klockcykeln i den andra byten, den kontrollen har du inte med vare sig HW eller biblioteksfunktionerna, du vet överhuvudtaget inte, och det finns inget sätt i processorn att få fram när åttonde klockan gått iväg.
Just därför måste du bitbanga, dvs emulera alla I2C funktioner i mjukvara, pulsa klockpinne och datapinne, och när 16nde klockan gått ut sätta LDAC till låg i 8 klockpulser och därefter sätta den hög.
Om man inte gör exakt så, så får man ingen adress, enkelt eller hur.
Finns ingen I2c-master hårdvara i världen som klarar detta, och följaktligen inga mjukvarufunktioner för detta.

:bravo: du börjar till slut faktiskt läsa databladet, men du verkar inte förstå det.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 09:28:43
av DanielM
Men varför finns det vissa bibliotek på GitHub som hanterar detta chip med I2C?
Jag har ALLTID läst databladet. Jag laddar ju upp triljoners med bilder här.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 09:51:19
av TomasL
Men inget av de biblioteken kan läsa eller programmera adressen.
Eftersom det inte går med I2C hårdvara.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 10:11:27
av sodjan
Så vitt jag minns av I2C så är adressen i princip fast i hårdvaran på I2C kretsar.
Sen kan man ofta välja på några alternativa adresser med I/O pinnar.

Så, *varför* behöver man läsa ut adressen?

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 10:28:01
av rvl
Ett sätt är att brute force gå igenom alla adresser och se var/om man får svar.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 10:28:29
av TomasL
Denna krets är lite speciell, eftersom den saknar fysiska adresspinnar, och om man skall ha fler än en på en i2c-lina, behöver man programmera in dess adress, och om man köper dem föradresserade så behöver man kunna läsa ut adressen på den för att kunna använda den.

Just detta med att man har implementerat en metod för läsning/skrivning av enhetens adress som inte går att göra med normal hårdvara, förhindra att man av misstag skriver över den i kretsen lagrade adressen.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 10:30:32
av TomasL
rvl, ja naturligtvis, men det blir ju lite svårt att veta vilken enhet som är vilken om man har flera.
Sedan är det ju så att man behöver en LDAC lina till varje krets på linan, om man vill kunna läsa/sätta adressen i dem.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 11:42:51
av sodjan
Men, var det fler än en i detta fall?
Annars är det väl bara att köra på default adressen?
Daniel, varför behöver du läsa adressen? Om du inte
innan har ändrat adressen så lär den ju vara = A0.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 11:45:07
av TomasL
Ja exakt, har man bara en, så finns det ingen anledning att läsa adressen.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 18:45:53
av ToPNoTCH
Jag begriper inte varför du inte bara adresserar chippet som databladet säger.

TomasL har redan angett vilken adress du skall läsa respektive skriva på.

Nu har du hakat upp dig på att din "adress test snurra" inte funkar, vilket är irrelevant.

Re: I2C adress för MCP4728 beter sig konstigt?

Postat: 2 maj 2022, 20:10:59
av DanielM
Oavsett vad för adress jag använder, så måste jag ändå bigbanga? Eller hur?
Konstigt chip!