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.
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.
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.
Honourable Member
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
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)
Honourable Member
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
Ik gebruik de AD9833 o.a. voor het opwekken van sinus tot 10kHz met een 0.001Hz resolutie...
TS ben je bezig met de CW-Morse call gever van PI4RAZ ?
Golden Member
Nee, volledig eigen ontwerp.
Doet PI4RAZ dat toevallig ook met deze PIC?