De generator van willekeurige golfvorm, voor ~ 20$ (5 / 6 stap)

Stap 5: Programmering de AWG

Hier is een gids voor de programmering van dit apparaat. Ik zal beginnen met het programma gebruikt voor het genereren van de 1.7 Mhz sinusgolf:

START:

.include "m8515def.inc"; Dit is een definitiebestand, een handig ding om te gebruiken. Als u een kopie, google de bestandsnaam nodig

REGISTERS0:
LDI r16, 0x00
LDI r17, 0x25
LDI r18, 0x7F
LDI r19, 0xD9; Belasting registreert eerst, op die manier later die uw code ~ 1 uitgang per klokcyclus kan produceren
LDI r20, 0xFF; Deze waarden werden vastgesteld door 127*sin(x)(pi/4), voor positieve geheeltallige waarden voor x.
uit DDRB, r20

2Mhz sine0:
uit PORTB, r18
uit PORTB, r19
uit PORTB, r20
uit PORTB, r19
uit PORTB, r18
uit PORTB, r17
uit PORTB, r16
uit PORTB, r17; één periode van sinus golf @ 2Mhz als u met een kloksnelheid van 16Mhz
rjmp 2Mhz sine0

Deze volgen voorbeelden van 1Mhz sinus golven, gegenereerd van twee verschillende manieren.

1Mhz sine0:
uit PORTB, r18
NOP
uit PORTB, r19
NOP
uit PORTB, r20
NOP
uit PORTB, r19
NOP
uit PORTB, r18
NOP
uit PORTB, r17; één periode van sinus golf @ 1Mhz als u met een kloksnelheid van 16Mhz
NOP
uit PORTB, r16; Dit is de luie manier.
NOP
uit PORTB, r17; In het volgende voorbeeld demonstreert de betere manier.
rjmp 1Mhz sine0

REGISTERS1:
LDI r16, 0x7F
LDI r17, 0xAB
LDI r18, 0xD1
LDI r19, 0xF6
LDI r20, 0xFE
LDI r21, 0x53; Merken dat we 9 registers naar het geheugen hebt geladen! Let op hoeveel registers hebt, en
LDI r22, 0x2D, maak goed gebruik van hen. Waar 127*sin(x)(pi/n), n een willekeurig aantal registers kunnen worden
LDI r23, 0x08; waar een aantal registers plus 1 gedeeld door 2... als ik mij niet vergis!
LDI r24, 0x00
1Mhz sine1:
uit PORTB, r16
uit PORTB, r17
uit PORTB, r18
uit PORTB, r19
uit PORTB, r20
uit PORTB, r19
uit PORTB, r18
uit PORTB, r17
uit PORTB, r16
uit PORTB, r21
uit PORTB, r22
uit PORTB, r23
uit PORTB, r24
uit PORTB, r23
uit PORTB, r22
uit PORTB, r21
rjmp 1Mhz sine1

Het bovenstaande is een mooi voorbeeld van de afweging tussen de resolutie en frequentie. Door halvering van de resolutie, kunt u dubbele de frequentie. Een scherpzinnige lezer
zal zijn opgevallen dat beide golfvormen 0x7F (127) gebruiken als een nulpunt ongeacht de volgorde dat de registers worden geladen... U kan bepalen dat een ander
nulpunt is nuttiger zijn voor bepaalde golfvormen... maar voor symmetrische degenen zoals u bent het meest waarschijnlijk te gebruiken, 0x7F is optimaal.

Nu, gaan we naar een meer gecompliceerde onderwerp... hoe we het genereren van een golfvorm 1.5Mhz? Houd rekening met:
sine(x)(Pi/6)
die zou worden de juiste resolutie te gebruiken... maar aangezien deze resolutie gelijkmatig in 2pi, maar niet in p/2 verdeelt... onze golfvorm ziet er vreemd,
omdat op geen enkel moment is de output gelijk is aan het minimum of het maximum van de functie, dat wil zeggen iets in de buurt van 0x00 of 0xFF! Voor hoge
frequenties, de golfvorm kan toch ongeveer juiste, vanwege de natuurlijke precisiecapaciteit en zelfinductie in elk circuit. Dit verzet zich tegen elke wijziging
in stroom en spanning, dus bij hogere frequenties, als u uitvoer 0x00 tien keer, dan 0xFF tweemaal... de tweede 0xFF krijgt u een iets hogere waarde
dan de eerste. Probeer het en zie, het kan of kan niet werken afhankelijk van variabelen die te complex om te bespreken hier.

Het punt is dat het moeilijk of onmogelijk om het genereren van de frequenties die niet binaire breuken van de kloksnelheid... At zeer hoog
frequenties die je zou kunnen "cheat" met behulp van parasitaire precisiecapaciteit en inductie... en zeker bij lagere frequenties de kwestie irrelevant wordt
zoals we in het volgende voorbeeld zien zullen... maar er zijn zeker sommige frequenties die kunnen niet worden gegenereerd.

Een slimme ingenieur (dwz: niet mij) zal het installeren van een socket te houden van de kristal oscillator gebruikt in dit apparaat... op die manier hij/zij onbelangrijk kunt de
fundamentele frequentie van het apparaat en in wezen elke frequentie ze binnen de specificaties van de microcontroller willen te verkrijgen
(Ik heb gezien goedkoop... 2$... atmels die maximaal 20 Mhz kloksnelheden werken).

Nu, hier is wat code voor een uitgesproken lagere frequentie golfvorm. Het is eigenlijk een code van de website die ik als referentie vermeld:
http://www.AVR-ASM-tutorial.net/avr_en/AVR_DAC.html
De golfvorm is een zaagtandgolf. Ga check out de website zoals het is zeer nuttig en de code er echt goed voor laag-medium frequentie golfvormen is.

.include "m8515def.inc"
START:
LDI r18, 0xFF
uit DDRD, r18

ZAAGTAND:
uit PORTD, r18
Inc r18
rjmp zaagtand

Dit genereert een golfvorm van ongeveer 2,5 kilohertz. U kon verkleinen/vergroten frequentie met pauzes (nop) of timers toe te voegen, of u kan de frequentie verhogen
door het verlagen van de resolutie in plaats van inc (increment) eenvoudig door een aantal aan r18 toevoegen. Als u 2 toevoegt, zou de frequentie verdubbelen. Als u 3 en een pauze toevoegen
(nop), de frequentie stijgt met 1,5 keer.

Te maken van een driehoek golf, voegen een cpi-instructie om te testen of r18 is gelijk aan 0xFF, en zo ja, tak naar een vergelijkbare functie die verlaagt of wordt afgetrokken van r18. Dat de functie natuurlijk testen moet als r18 = 0x00, en als dus terug naar de eerste functie tak.

Ik zal eind van deze tutorial met een paar aanwijzingen over hoe slim gebruik van dit apparaat:
-Hiermee kunt u dat goede timerfuncties nauwkeurig maken lagefrequentie golfvormen. Het is moeilijker dan je denkt om klokcycli van programma's in je hoofd bij te houden.
-Als timerfuncties bang voor bent (ze maakt me bang), tellen klokcycli in je hoofd en dan testen op uw bereik om ervoor te zorgen dat het klopt.
-Een decimaal getal naar hex converter is een handig ding bij het bepalen van wat de waarden van de registers moeten worden.
-Don't haak van dit apparaat op een antenne en gebruiken voor draadloze communicatie, tenzij u een licentie hebt en weet wat je doet.
-Kunt u waarschijnlijk het programma tot een 4 Mhz blokgolf met dit apparaat... gebruiken als een variabele klokbron of om te injecteren seriële communicatie in een circuit.
-8 van deze samen met een gemeenschappelijk klok zou een echt cool parallelle programmeerbare bron maken.
-Het genereren van neuron actie potentials mee, en ongetwijfeld een heleboel geld besparen uw biologie laboratorium.
-Maak een piano mee.
-Dit apparaat laat vele ingangen op de atmega ongebruikte. Als u wilt dat het apparaat meer handig maar functies hebben beperkt, u kon bouwen een
interface voor het en een slimme programma zodat u een aantal golfvormen en frequenties zonder herprogrammering genereren kunt.
-Herinner me dat rjmp neemt klokcycli en zorgt voor een artefact! Rond dit krijgen door met inbegrip van vele periodes in uw programma voor looping. Goed benutten
van al dat geheugen op de atmegas!

Verouderd (legioen Labs is een nieuwe non-profit, no-graden-verplicht onderzoekinspanning momenteel gevestigd in Montreal. Wij zijn niet verbonden zijn met andere organisaties.
Het heeft momenteel een lid, aangezien ik heb pas zeer onlangs overwogen uitbreiding van het toepassingsgebied van deze bewerking.)

Huidige: Legioen Labs is een lid van een montreal-gebaseerde non-profit onderzoek/engineering inspanning met een aantal andere mensen, die een industriële workshop verhuren als een plek om te sleutelen.

Gerelateerde Artikelen

Maken van willekeurige kunst voor puzzels

Maken van willekeurige kunst voor puzzels

bent u nog steeds het maken van puzzels met foto's? Dat is te gemakkelijk! Ik ga u tonen hoe het maken van een puzzel met behulp van de kracht van de code, en willekeur en vector kunst... Lees verder!Dit project is enerzijds code, enerzijds kunst en
De generator van de code voor aangepaste Android/Arduino-menu's aan de Arduino uitgangen wissel voort en vandoor. Andriod/Arduino voor Beginners. Absoluut geen programmeerkennis vereist

De generator van de code voor aangepaste Android/Arduino-menu's aan de Arduino uitgangen wissel voort en vandoor. Andriod/Arduino voor Beginners. Absoluut geen programmeerkennis vereist

Update: een gebruiker gevraagd voor submenu ondersteuning. pfodApp altijd ondersteund submenu's maar ik sub-menu's hebt toegevoegd aan pfodDesigner. De instructable stelsel van het Gemeenschapsmodel A Custom Menu ziet u hoe u pfodDesigner wilt samens
Voorbeeld van de Generator van de golfvorm en Arduino nul DAC overzicht

Voorbeeld van de Generator van de golfvorm en Arduino nul DAC overzicht

Dit Instructable nemen we een kijkje op het digitaal naar analoog converter (DAC) op de Arduino nul. We zullen kijken naar een eenvoudig voorbeeld hoe met de DAC en vervolgens zullen we te kijken naar een complexer voorbeeld dat de DAC in een pseudo
De Generator van het pictogram: Maak pictogrammen in ICO-formaat of favicons voor uw site

De Generator van het pictogram: Maak pictogrammen in ICO-formaat of favicons voor uw site

het is zeer makkelijk te gebruiken onze software Generator van het pictogram voor het maken van de pictogrammen van de favicon.ico voor uw website. Alles wat u wilt omzetten in BMP, PNG of JPG ICO online is een paar eenvoudige stappen:Selecteer de af
Atmel Xmega USB/serieel willekeurige golfvorm Generator

Atmel Xmega USB/serieel willekeurige golfvorm Generator

dit instructable loopt u via programmering en de Boston Android Xmega evaluatie board gebruiken om te werken als een eenvoudige willekeurige golfvorm generator te profiteren van de geïntegreerde 12 bit DAC en hoge snelheid DMA-controller. Ik heb voor
De Generator van de verontschuldiging van de Arduino

De Generator van de verontschuldiging van de Arduino

een excuus in een haast nodig hebben?Kijk niet verder dan de Generator van de verontschuldiging.Stap 1: What You Need / het kabellengte tot We gebruiken:Arduino UnoLCD Module (HD44780 compatibel)PotentiometerTilt SwitchWeerstand van 220 Ohm (zwart-ro
10 stappen om uw eigen logo in Inkscape (gratis) en het gebruik van creatieve Market voor dummies mij

10 stappen om uw eigen logo in Inkscape (gratis) en het gebruik van creatieve Market voor dummies mij

HalloSorry voor de lange titel. Ik heb ook een paar bekentenissen. Ten eerste, mijn tekenen en ontwerpen vaardigheden zijn niet zelfs equivalent van een vinger-schilder. Ten tweede, ik niet het maken van geld, dus ik heb altijd dingen die kunnen word
Met behulp van Punnett pleinen voor het berekenen van waarschijnlijkheden fenotypische

Met behulp van Punnett pleinen voor het berekenen van waarschijnlijkheden fenotypische

IntroductieAchtergrondPunnett pleinen zijn een diagram die biologen gebruiken om de waarschijnlijkheid van een nakomelingen hebben een bijzondere eigenschap te bepalen. Een vierkant van Punnett maken en gebruiken om te bepalen kenmerken van nakomelin
Draadloze elektriciteitstransmissie met behulp van AVR's voor AVR's

Draadloze elektriciteitstransmissie met behulp van AVR's voor AVR's

Een krachtige... Compact... Kosten effectieve... En gemakkelijk Wireless Power Transmission Module...Gelieve Stemming voor mij als je het...Zo zijn er een heleboel van de Modules op het web... Maar mijn inspiratie is "Wireless Power" door robotk
Bouwen van een accu voor 12V zonne-energie

Bouwen van een accu voor 12V zonne-energie

Er zijn grote aantal zonnepanelen beschikbaar op de markt vandaag, enkele beloven om te laden van uw telefoon, terwijl sommige pak genoeg kracht om te opladen van een ipad. Ze hebben vrij betaalbaar en zeer draagbaar. Echter ze hebben allemaal een gr
Creëren van een ruimte van de Maker voor Kids

Creëren van een ruimte van de Maker voor Kids

Sommige knutselen inspiratie nodig? Als u om het even welk van mijn projecten genoten heb, moedig ik u om te kopen van mijn boek, Rubberen Band ingenieur. Het staat vol met geweldige en originele constructies, waarvan sommige hun wortels in mijn Inst
Kleine Wimshurst generator van karton en cd

Kleine Wimshurst generator van karton en cd

De machine van Wimshurst invloed was een populaire machine aan het eind van de 19e eeuw voor het genereren van hoge spanningen.Het vervangen van het ontwikkeling ~ 1883 andere apparaten zoals de "Holtz" en "Voss" machines. Het was een
Bouwen van een datalogger voor uw draadloze sensor netwerk

Bouwen van een datalogger voor uw draadloze sensor netwerk

We nodig een datalogger die verstrekt een tijdstempel, en dat zou de laatste 2 weken in het bos. Met behulp van een laptop zou vereisen een generator of een gigantische batterij. Dit Instructable toont hoe te maken van een datalogger van een schild v
Stationaire fiets Generator van wasmachine

Stationaire fiets Generator van wasmachine

toen onze oude wasmachine stierf, ik niet kon dragen om te gooien van de motor. Dus ik heb sommige graven en het blijkt dat ze ideaal stroomaggregaten maken. Dit instructable documenteert hoe maakte ik een excersize fiets die kan het aandrijven van a