Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Zo wordt 't eigenlijk altijd gedaan...
Anders zou het zeer lastig worden als je meerdere tonen tegelijk op moet wekken (bijv. DTMF). Je zou dan een tabel per toon moeten hebben.
Nog een toevoeging op het verhaal van DeKees: er zijn natuurlijk ook situaties waar je niet precies een integer deling krijgt (7 in dat voorbeeld); in dat geval kun je de stapgrootte variëren, je zet dan bijvoorbeeld 7, 7, 6, 7, 7, 6... stappen in de tabel. Je kunt dat doen door eerst de kleinste stapgrootte uit te rekenen (6 in dit geval), en dan een lopend totaal van de fout bij te houden. Zodra die fout groter wordt dan de grenswaarde, zet je in die cyclus een stapje extra.
De DDS chip doet dat in hardware. Stel je gebruikt een teller van 16 bits. Elke stap tel je een vast getal bij de teller. Een groter getal geeft een hogere frequentie. Dan gebruik je de hoogste 8 bits als index in de lookup tabel. De rest van de teller geeft dan de lopende fout.
Dat werkt natuurlijk alleen als de tabel-grootte een macht van 2 is.
Patrick de Zeester
Golden Member
Tijdens mijn studie (vorige eeuw) heb ik een functie generator gemaakt volgens het principe dat deKees beschrijft met TTL & EPROM chips. In de EPROM waren de golfvormen geprogrammeerd, de digitale logica bestond een full-adder (ik geloof iets van 24 bits, het is alweer heel lang geleden), wat latches om de ingestelde frequentie en het laatste resultaat van de full-adder vast te houden en een D/A converter. De full-adder telde de ingestelde frequentie op bij het laatst geproduceerde resultaat en de meest significante bits werden gebruikt als adres voor de EPROM. In de basis heel simpel maar wel een groot breadbord vol IC's. Tegenwoordig kan je zoiets reduceren tot een eenvoudige microcontroller.
blackdog
Golden Member
Daar de mens het noodzakelijke niet kan volbrengen, streeft hij naar het overbodige (Goethe)
Hi,
Als het niet goed lukt de Sinus tabel in je processor te krijgen en je hebt SPI beschikbaar dan is onderstaand printje een goed optie.
https://webshop.domoticx.nl/index.php?route=product/product&product_id…
Groet,
Bram
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op 21 februari 2023 10:51:48 schreef blackdog:
Hi,Als het niet goed lukt de Sinus tabel in je processor te krijgen en je hebt i2c beschikbaar dan is onderstaand printje ee ngoed optie...
De 9833 is geen I2C, maar SPI... (werkt wel prima verder. gebruik hem regelmatig)
blackdog
Golden Member
Daar de mens het noodzakelijke niet kan volbrengen, streeft hij naar het overbodige (Goethe)
Hi Arco, 
Je hebt gelijk het is SPI bij de AD9833!
Ik heb mijn post hierover aangepast, dank voor het melden van het foutje.
Groet,
Bram
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
