Direkt Digital Synthesizer baserad på vanlig Arduino (4 / 6 steg)
Steg 4: Frekvens justering
Det finns en liten hake... enda tryckning på frekvens upp inte
nödvändigt ändra frekvensen av en hertz, men det ändras beloppet av bortkastade CPU cykler per steg... Jag ska försöka förklara detta från början:
som ni minns vi genererar våg genom att gå över förkalkylerade tabellen - varje byte i sådan tabell kommer att tilldelas PORTD och detta sker inom en enda "steg". För att rita vinkar vi gå över hela bordet, när vi är klar, måste vi börja från början. För att ändra frekvens, måste vi ändra tiden för varje steg - detta är den enda möjligheten att skala proportionellt upp han hela våg. Den minsta mängden dröjsmål i vårt fall är enda CPU operation - det kallas NOP och det tar 1327 nano sekunder - NOP själv är snabbare men jag har också övervägt att anropa en metod.
För exempel enda period på sine består av 120 steg, öka fördröjningen av en, skulle lägga en NOP operation till varje steg, vilket innebär att enda period skulle ta ytterligare 120 * 1327ns.
Den goda nyheten är att LCD-skärm alltid visar rätt frekvensen i hertz, bara att trycka på upp-och nedknapparna ändras den av några hertz. Den nedersta raden av LCD-displayen visar tid i nano sekunder.