Hur anropar du funktionen, vilka argument använder du?Jag får inte det fungera med konstruktörens (mcp4728_init) adress.
I2C adress för MCP4728 beter sig konstigt?
Re: I2C adress för MCP4728 beter sig konstigt?
Re: I2C adress för MCP4728 beter sig konstigt?
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?
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.Jag har läst databladet. Det vore intressant och läsa där Microchip säger att man måste bitbanga här.
Det är extremt tydligt hur man skall göra.
Re: I2C adress för MCP4728 beter sig konstigt?
Du tänker säkert på angående LDAC pinnen som man måste trimma in parallellt?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: I2C adress för MCP4728 beter sig konstigt?
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.
du börjar till slut faktiskt läsa databladet, men du verkar inte förstå det.
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.
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?
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.
Jag har ALLTID läst databladet. Jag laddar ju upp triljoners med bilder här.
Re: I2C adress för MCP4728 beter sig konstigt?
Men inget av de biblioteken kan läsa eller programmera adressen.
Eftersom det inte går med I2C hårdvara.
Eftersom det inte går med I2C hårdvara.
Re: I2C adress för MCP4728 beter sig konstigt?
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?
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?
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?
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.
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?
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.
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?
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.
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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: I2C adress för MCP4728 beter sig konstigt?
Ja exakt, har man bara en, så finns det ingen anledning att läsa adressen.
Re: I2C adress för MCP4728 beter sig konstigt?
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.
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?
Oavsett vad för adress jag använder, så måste jag ändå bigbanga? Eller hur?
Konstigt chip!
Konstigt chip!