Godtycklig vågform generator, för ~ 20$ (3 / 6 steg)
Steg 3: sinusvåg, 1.790Mhz
Reset:
R1=255*sin(0)
R2=255*sin(PI/4)
R3=255*sin(pi/2)
R4=255*sin(3pi/4)
R5=255*sin(PI)
R6=255*sin(5pi/4)
R7=255*sin(3pi/2)
Slinga:
utgång portN, r1
utgång portN, r2
utgång portN, r3
utgång portN, r4
utgång portN, r5
utgång portN, r6
utgång portN, r7
rjmp slinga
Den lilla ojämnt "dip" i vågformen orsakas av rjmp uttalande som tar 2 klockcykler att bearbeta. För att komma runt detta, du klistra sekvensen i loop funktion många gånger rygg mot rygg, producerar många perioder av vågformen för varje slinga. Detta foto är av en sekvens av 10 perioder per slinga, atmega16-16pu har tillräckligt med minne för tio gånger så lätt.
För att göra andra frekvenser, måste du vara kreativ:
-ändra upplösning (pi/n), så länge du komma ihåg högre värden av n kräver mer register.
-använda programsatsen nop (det gör ingenting och tar en klockcykel att göra det)
-använda timer
-Använd en tabell om sine i EEPROM
-konstiga tricks: Lägg märke till hur rjmp artefakt ger spänningen under noll värde av vågformen... Detta beror på att det representerar den värdet 0 befintliga för 3 klockcykler och oavsett testsladdarna som du använder har en viss kapacitans och induktans som motstår förändringar i ström och spänning. Du kan göra ditt program producerar en asymmetrisk vågformen genom att ersätta r1 med ett annat värde än noll positivt heltal så att spänningen sönderfaller exakt till "nollpunkten" för resten av vågformen över 2 klockcykler. Om du kan göra detta, är min hatt avstängd till dig.