[Sigmastudio/ADAU1701) Vraag over 5.23 formaat om te zetten naar 28.0 Integer formaat

Hallo beste lezers,

Sinds een tijdje ben ik wat aan het spelen met de Analog Devices ADAU1701 DSP chippies. Ik heb inmiddels een aantal prototypes gemaakt
en succesvol geprogrammeerd met de bijbehorende software genaamd Sigma Studio (versie 4). Met deze software is het mogelijk om in combinatie
met de ADAU1701 (en andere DSP chips) zelf een bijzonder hoge kwaliteit DSP met alle toeters en bellen welke moderne DSP's bieden te bouwen.
Desondanks ik weinig programeer ervaring heb, is het mij toch gelukt om een paar prototypes te bouwen welke nu met uitstekende geluidskwaliteit en
veel instel mogelijkheden al in een paar vaste installaties ingebouwd zijn, na volle tevredenheid.

Qua audio programmeren krijg ik het prima voor elkaar. In de Sigma Studio software zijn alle opties gewoon aanwezig als modulair blok. Je sleept ze naar
je werkveld (schematic genaamd) en verbind alles met lijntjes en de software zelf compileert de boel en slaat het op in een EEPROM, welke ik bij de ADAU1701
heb aangebracht. Het is behoorlijk simpel en overzichtelijk, echter loop ik door mijn niet al te ruime programeer ervaring nu vast. Wat is nu het geval?

De ADAU1701 DSP chip heeft naast audio in- en uitgangen ook een 12 tal GPIO aansluitingen. 4 Ervan kunnen worden gebruikt als een ADC ingang. Bij Analog noemen
ze dat een auxillary ADC input. Ik heb op één van deze ADC ingangen een potmeter geplaatst (loper aan de ADC ingang, eerste pin aan massa en 3e aan VCC) en
kan in sigma Studio (real time) uitlezen welke waarde de ADC geeft. Deze waarde veranderd ook netjes wanneer ik aan de potmeter draai.

Nu bied het programma een mogelijkheid om een "Tolerance Analyzing" blok te gebruiken. Dit blok genereert een "1" aan zijn output zodra het input signaal
matcht met wat je in het blok hebt opgegeven waardoor hij deze "1" mag afgeven. Matcht dit niet, dan blijft de uitgang van dit block "0".

Nu wil ik graag dmv een instelbare weerstandslader de ADC input 3 of 4 verschillende spanningen voorschotelen om een paar interne functies/schakelopties
aan te sturen. Dit zou moeten kunnen door middel van de Tolerance Analyzer te gebruiken, en deze zodanig in te stellen dat bij de juiste stand van de
weerstandsladder de juiste Tolerance analyzer de "1" afgeeft (om bijvoorbeeld een LED of gainregeling aan te sturen).

Volgens de help index van Sigma Studio, het Analog Audio forum en verhalen op Google moet dit heel simpel te realiseren zijn. Echter krijg ik het niet voor elkaar.
De ADC geeft namelijk zijn waardes af in "5.23" formaat, terwijl de Tolerance Analyzer werkt met "28.0 integer" formaat. Er moet dus iets worden omgezet/geconverteerd
maar ik heb totaal geen idee hoe, wat of waarmee.

Nu zag ik dat er eigenlijk niets (op 1 topic) na geschreven word over Sigma Studio op circuits online, maar ik zag op google dat dit soort formaten ook gebruikt
worden bij andere toepassingen. Dus wellicht heeft iemand de gouden top voor mij, zodat ik weer verder kan met de DSP.

Alvast bedankt!

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Misschien gaat het beter met een splitter .ik weet niet of je daar gebruik van maakt?

Re-integratiecoach uitgerangeerde en degoutante electronen

Ik heb dit schematje even "nagebouwd", maar helaas werkt het niet. De splitter zet het ook niet om naar het juiste formaat lijkt me. Heb je een ander idee? Toch bedankt voor je reactie!

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Misschien kun je iets met "AB In / CD Out Condition block " dan heb je die Tolerance analyser niet nodig...

Toolbox>Basic DSP > AB In / CD out Condition

Hier hang je je auxADC_in aan met 3 DC input entrees(toolbox>sources)
Op C ingang komt DC=1
Op B ingang DC=0,5 (bv)
op D DC=0
Als A nu groter dan B wordt de uitgang>C dus 1 else D=0
Misschien kun je hier eens mee spelen.

edit : even aan het brainstormen...

Je hebt nu 3 nivo's 0,3-0,5-0,7 ...bij desbetreffend nivo wordt uitgang hoog.Nog niet wat je wil denk ik ...moet toch simpeler kunnen lijkt mij..

[Bericht gewijzigd door Arabel op donderdag 3 mei 2018 00:39:39 (21%)

Re-integratiecoach uitgerangeerde en degoutante electronen

Hoi Arabel,

Allereerst heel erg bedankt met het meedenken, waardeer het zeer!

Ik ben nog eens gaan spelen met je eerste schakeling, die met de 3 tolerance analyzers. Wanneer ik de splitter terugregel naar ongeveer
-100dB, en waarden van 0 t/m 10, 40 t/m 50 en 80 t/m 100 invul bij respectievelijk tolerance analyzer 1, 2 en 3 dan werkt de schakeling. Het lijkt dus puur een conversiefout / rekenfout van mij te zijn. Ik heb ook niet echt een idee wat ik nu bij de analyzers in moet vullen zonder de splitter regeling, maar met bijvoorbeeld een T-connection wat een mooiere oplossing is vind ik zelf. Kun je me helpen bij het rekenwerk?

Ik ga je tweede schakeling testen. Wederom alvast super bedankt!

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Zie je wel ,het kan simpeler...

gebruik grow algorithm op de tolerance analyser
en de Tcon is idd beter
wel even de waarden naarbelieven invullen....

[Bericht gewijzigd door Arabel op donderdag 3 mei 2018 01:16:15 (16%)

Re-integratiecoach uitgerangeerde en degoutante electronen

Arabel,

Weet je ook welke waarden dat moeten zijn? Daar lijkt het nu mis te gaan.

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

https://ez.analog.com/external-link.jspa?url=http%3A%2F%2Fwww.analog.c…
Hier staat wel waardevolle info in ...page 11
There are two main formats
used by SigmaDSP: integer format (28.0) and decimal format
(5.23). All audio data and most parameters are represented in
5.23 decimal format within the DSP. Most GPIO-related signals
are represented in 28.0 integer format because it increases the
range of allowable values they can take.

To convert between 28.0 integer format and 5.23 decimal
format, use Equation 3 and Equation 4. Equation 3 converts
28.0 to 5.23 while Equation 4 converts 5.23 to 28.0.

Misschien een GPIO pin gebruiken ipv een aux ADC.
GPIO pin kan toch ook ADC-en?
Het lijkt er op dat je het moet vermenigvuldigen met 2 tot de macht 23

Re-integratiecoach uitgerangeerde en degoutante electronen

Arabel,

Mijn dank voor je hulp! Ik heb het werkend gekregen dankzij je laatste berichtje. Het is inderdaad de waarde van de ADC vermenigvuldigen met 2^23.
Dan werkt het prima!

Ook je eerste oplossing met de AB/CD blokken had me met wat knip en plakwerk aan de PCB me uit de brand kunnen helpen, maar nu de tolerance analyzers werken kan ik het precies zo designen zoals ik zelf wil.

Ik wil je ontzettend bedanken voor je hulp! Waardeer het zeer en ben er blij mee!

Edit: Alleen GPIO 2,3, 8 en 9 kunnen als ADC worden geschakeld, respectievelijk ADC1, ADC2, ADC3 en ADC0. Jammerlijke is dat GPIO 8 (ADC3 dus) niet even betrouwbaar werkt als ADC input. Heb er wat verhalen op de Engineerszone van Analog over gelezen, en ben er zelf ook achter gekomen bij een aantal chippies. De input blijft niet altijd "Low" uit zichzelf.

Edit2: Op het EngineerZone forum van Analog Devices kreeg ik ook nog een andere manier voorgeschoteld. Heb deze ook uitgeprobeerd en prima werkend bevonden. Wellicht heeft iemand hier ook nog wat aan.

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Toch mooi dat het werkt...

Ik had 1 jaar geleden een steil hoogaf-filter nodig en ben met die sigma software aan de gang geweest, maar heb een betere maar duurdere manier gevonden om vanaf 15KHz [up] een onderdrukking te krijgen van minimaal -85db@16,670KHz!!! Dat ga je met LC filters niet redden...
Ik zie ook meer informatie op Analog als voorheen...zoals de latency
die maar 1mS blijkt..Wordt ie toch weer interessant om eens mee te gaan stoeien.
Heb jij de kit of freedsp/nanodsp of zelf iets inmekaar gezet?

Re-integratiecoach uitgerangeerde en degoutante electronen

Ik wilde in de eerste instantie de ADAU1701 kit aanschaffen waar het evaluatieboard en de USBi programmer in zaten. Echter kost deze kit om en nabij de € 200,- ex. BTW. Daarnaast heeft het evaluatieboard te beperkte mogelijkheden om andere hardware te testen (zoals bijvoorbeeld in- en output filters) en zijn er maar een paar GPIO pinnen beschikbaar, in een voor mij onbruikbare configuratie.

Daarom maar besloten zelf printjes te maken, modulair van opzet zodat ik er eigenlijk alle kanten mee op kon. Layout is ontworpen aan de hand van de design rules van Analog en het schema is voor 90% gelijk aan die van het evaluatie board. Ik kwam er echter tijdens het testen achter dat de writeback functie (zorg ervoor dat de EEPROM en DSP chip na het ontbreken van de spanning nog eventjes genoeg hebben om de laatste wijzigingen weg te schrijven in de EEPROM) niet werkt. Na wat gepiel erachter gekomen dat deze ook niet werkt op het standaard evaluatieboard, dat is dus wel jammer.

Als USBi programmer heb ik de FreeUSBi gemaakt (info staat op het net), werkt prima mits een kwalitatief goede en korte USB kabel gebruikt word. Drivers geven een signature error in Windows 10, echter is dit te omzeilen door deze controle (tijdelijk) uit te schakelen. Ook kan ik aanbevelen om de DSP chip zelf en aanverwante zijn eigen voeding te geven. Zowel het evaluatieboard als de FreeUSBi documentatie/design geven aan dat de DSP zijn voeding prima kan krijgen via de USB van de FreeUSBi. Echter is deze voeding niet toereikend. Ik kreeg constant errors bij het wegschrijven of de DSP liep vast wanneer hij stand alone zijn werk moest gaan doen.

Heb op deze manier toch wat centjes kunnen besparen en het zo bruikbaar mogelijk voor mij kunnen maken.

[Bericht gewijzigd door DJohnny op zaterdag 5 mei 2018 00:50:47 (17%)

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!