Stap 3: sinusgolf, 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)
Lus:
output portN, r1
output portN, r2
output portN, r3
output portN, r4
output portN, r5
output portN, r6
output portN, r7
rjmp lus
De kleine onregelmatige "duik" in de golfvorm wordt veroorzaakt door de rjmp-instructie waarin 2 klokcycli te verwerken. Om rond dit, u kopieer/plak de volgorde in de lus functie vele malen rug aan rug, produceren veel perioden van de golfvorm voor elke lus. Deze foto is van een reeks van 10 termijnen per lus, de atmega16-16pu heeft genoeg geheugen voor tien keer dat gemakkelijk.
Om andere frequenties, moet u om creatief te zijn:
-wijzigen van de resolutie (pi/n), zolang je in gedachten hogere waarden van n vereisen meer registers.
-Gebruik de instructie nop (het doet niets en neemt een klokcyclus te doen)
-gebruik van timers
-gebruik van een sinus-tabel in EEPROM
-rare trucs: merk op hoe het artefact rjmp brengt de spanning onder de nulwaarde van de golfvorm... Dit is omdat het vertegenwoordigt de waarde 0 bestaande voor 3 klokcycli, en welke test leidt u hebben zal een bepaalde precisiecapaciteit en zelfinductie die veranderingen in stroom en spanning weerstaat. U kunt uw programma een asymmetrische golfvorm produceren door de r1 vervangen met een niet-nulzijnde positief geheel getal, zodat de spanning precies aan het "nulpunt" voor de rest van de golfvorm over 2 klokcycli vervalt kon maken. Als u dit doen kunt, dan is mijn hoed uitgeschakeld aan u.