3 fase sinusgolf generator op basis van Arduino Due (5 / 5 stap)

Stap 5: Volledige code

#define _BV(x) (1 << (x));
uint32_t sin768 [PROGMEM] = / * x = [0:5375]; y = 127+127*(sin(2*pi/5376)) * /

uint32_t p_A, p_B, p_C, p_C2, p_C3; fase A fase B fase C waarde--hoewel zijn uitvoer 8bits alleen, p_A en p_B waarde zal worden beheerd voor het genereren van een nieuwe 32-bits waarde om cop met 32-bits PIOC uitgang

uint16_t phaseAInc, phaseBInc, phaseCInc, freq, freqNew; uint32_t-interval; uint16_t monsters, preset; uint32_t t = 0;

VOID Setup {}

parallel output PIOC setup: Arduino Due pin33-40 werkzaam zijn zoals fase A uitgang terwijl pin 44-51 werk voor fase B-uitgang

PIOC -> PIO_PER = 0xFFFFFFFE; PIO controller PIO inschakelen register (Zie p656 van ATMEL SAM3X gegevensblad) en http://arduino.cc/en/Hacking/PinMappingSAM3X, inachtneming van de Arduino pin 33-41 en 44-51 werden ingeschakeld

PIOC -> PIO_OER = 0xFFFFFFFE; PIO controller uitvoer inschakelen register, verwijzen naar p657 van ATMEL SAM3X gegevensblad

PIOC -> PIO_OSR = 0xFFFFFFFE; PIO controller output status registreren, verwijzen naar p658 van ATMEL SAM3X gegevensblad

PIOC -> PIO_OWER = 0xFFFFFFFE; PIO uitvoer schrijven inschakelen register, verwijzen naar p670 van ATMEL SAM3X gegevensblad

PIOA -> PIO_PDR = 0x30000000; optionele "insurance", doet niet lijken de prestaties negatief beïnvloeden, digitale pin 10 verbinden met zowel PC29 als PA28, digitale pin 4 verbinden van beide PC29 en PA28, hier uitschakelen uitschakelen PIOA #28 & 29 //timer instelling, verwijzen naar http://arduino.cc/en/Hacking/PinMappingSAM3X,

pmc_set_writeprotect(false); uitschakelen schrijf bescherming van Power Management Control registers

pmc_enable_periph_clk(ID_TC7); inschakelen van de teller van de tijd van de perifere klok 7

TC_Configure (/ * klok * / TC2, / * zender * / 1, TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK1); TC klok 42MHz (klok, kanaal, vergelijk modus instellen) TC_SetRC (TC2, 1, interval); TC_Start (TC2, 1);

Enable timer interrupts op de timer TC2 -> TC_CHANNEL [1]. TC_IER = TC_IER_CPCS; IER = interrupt enable Registreer TC2 -> TC_CHANNEL [1]. TC_IDR = ~ TC_IER_CPCS; IDR = onderbreken uitschakelen Registreer

NVIC_EnableIRQ(TC7_IRQn); Inschakelen van de interrupt in de geneste vector interrupt controller freq = 60; initialiseren van frequentie als voorinstelling voor 60Hz = 21; verhoging van de index array door 21 monsters = 256; uitvoer monsters 256/cyclus interval = 42000000/(freq*samples); Interrupt telt TC_SetRC (TC2, 1, interval); Start van de TC de Serial.begin(9600); voor test doel}

VOID checkFreq()

{freqNew = 20000;

Als (freq == freqNew) {} anders

{freq = freqNew;

Als (freq > 20000) {freq = 20000; / * max frequentie 20 kHz * /};

Als (freq < 1) {freq = 1; / * min frequentie 1 Hz * /};

Als (freq > 999) {vooraf ingestelde = 384; monsters = 14;} //for frequentie > = 1kHz, 14 monsters voor elke cyclus

anders als (freq > 499) {vooraf ingestelde = 84; monsters = 64;} //for 500 < = frequentie < 1000Hz, 64 monsters voor elke cyclus anders als (freq > 99) {vooraf ingestelde = 42; monsters = 128;} //for 100Hz < = frequentie < 500Hz, 128 monsters/cyclus

else {vooraf ingestelde = 21; monsters = 256;}; voor frequentie < 100hz, 256 monsters voor elke cyclus

interval = 42000000/(freq*samples); t = 0; TC_SetRC (TC2, 1, interval); } }

void loop {}

checkFreq(); delay(100); }

VOID TC7_Handler(void)

{TC_GetStatus(TC2,1);

t = t % monsters; gebruik avoild overloop van t phaseAInc monsters t % = (vooraf ingestelde * t) % 5376; % 5376 gebruiken om te voorkomen dat array index overloop

phaseBInc = (phaseAInc + 1792) % 5376;

phaseCInc = (phaseAInc + 3584) % 5376;

p_A = sin768 [phaseAInc] << 1; verwijzen naar PIOC: PC1 te PC8, corresponderende pin van de Arduino Due: pin 33-40, vandaar verschuiving links voor 1 cijfer

p_B = sin768 [phaseBInc] << 12; verwijzen naar PIOC: PC12 naar PC19, corresponderende pin van de Arduino Due: pin 51-44, vandaar verschuiving links 12 cijfers

p_C = sin768 [phaseCInc]; fase C medewerker PIOC uitgang: PC21, PC22, PC23, PC24, PC25, PC26, PC28 en PC29, corresponderende pin van de Arduino Due: digitale pin: 9,8,7,6,5,4,3,10, respectievelijk

p_C2 = (p_C & B11000000) << 22; Dit leidt tot PC28 en PC29

p_C3 = (p_C & B00111111) << 21; Dit genereert PC21-PC26 / / Serial.println(p_C3,BIN); p_C = p_C2|p_C3; Dit genereert parallelle uitvoer van fase C

p_A = p_A|p_B|p_C; 32 bit output = fase A (8 bits) |phase B|phase C //Serial.println (p_A >> 21, BIN); PIOC -> PIO_ODSR = 0x37E00000;

PIOC -> PIO_ODSR = p_A; uitgang register = p_A t ++; }

Gerelateerde Artikelen

Soldeer station gemaakt door mijzelf op basis van Arduino

Soldeer station gemaakt door mijzelf op basis van Arduino

Hallo! Zodra ik sprak over het soldeer station op de Arduino en onmiddellijk overdonderd me vragen (hoe? / waar? / wanneer?). Gezien de massa van aanvragen, besloten heb ik om schrijf een recensie van eenvoudige soldeer station (alleen soldeerbout) o
Biofeedback apparaat op basis van Arduino

Biofeedback apparaat op basis van Arduino

Hier presenteer ik een Open bron Biofeedback apparaat die ik bouwen op basis van Arduino. Je lichaamstemperatuur kan meten met een IR-sensor, GSR en u kunt andere apparaten aansluiten met wisselende sinus Toon uitgang, bijvoorbeeld de Thoughtstream U
Automatische ijsemmer leverancier op basis van Arduino

Automatische ijsemmer leverancier op basis van Arduino

Afgelopen vrijdag enkele ingenieurs uit DFRobot nam hun de Ice Bucket Challenge om het bewustzijn voor ALS. We besloten om het te doen in een maker manier met een leverancier van automatische ijsemmer op basis van Arduino.And zijn we alle makers over
28BYJ-48 Stepper Motor controlesysteem op basis van Arduino met ULN2003 Chip

28BYJ-48 Stepper Motor controlesysteem op basis van Arduino met ULN2003 Chip

ICStation Team u kennismaken met deze stappenmotor -controlesysteem op basis van ICStation UNO compatibel met Arduino. Het gebruikt ULN2003-chip om te rijden. De spanning van de werken is DC5V. Het wordt op grote schaal gebruikt op de ATM-machine, in
Glas van computers op basis van Arduino Uno

Glas van computers op basis van Arduino Uno

Aan mijn meesters graduate project ("Gowing Computers, aansluiten van organen, knippen het snoer") van Konstfack College van kunstnijverheid en Design (keramiek en glas/CRAFT) heb ik gemaakt 3 glazen computers op basis van de specificaties van d
Op afstand gecontroleerde Multifunction scorebord op basis van Arduino, ESP8266 en uPanel firmware: interface ontwikkeling

Op afstand gecontroleerde Multifunction scorebord op basis van Arduino, ESP8266 en uPanel firmware: interface ontwikkeling

De oplossing hier gebruikt om op afstand controle Arduino door middel van ofwel smartphoneof tablet in plaats van drukknoppen, displays, etc. geldt voor vele projecten waarin de microcontroller worden gecontroleerd op afstand, moet dus de toepassing
WIFI plant controlesysteem op basis van Arduino MEGA en ESP8266

WIFI plant controlesysteem op basis van Arduino MEGA en ESP8266

Vandaag gaan we om u te tonen onze eerste experiment op het Internet van dingen. Voor dit doel besloten we om het gebruik van een Arduino MEGA in plaats van een Arduino UNO. Dat komt omdat Arduino MEGA heeft meer dan één seriële poort en dit feit laa
DIY temperatuur & vochtigheid & rookmelder Alarm systeem op basis van Arduino

DIY temperatuur & vochtigheid & rookmelder Alarm systeem op basis van Arduino

ICStation team u introduceren hoe DIY deze temperatuur & luchtvochtigheid & rook alarmsysteem op basis van ICStation Mega 2560 compatibel met Arduino.The werkende spanning van dit systeem DC5V is. Het kan meten de huidige temperatuur, vochtigheid
NRF24L01 draadloos toetsenbord gegevens overdracht systeem op basis van Arduino

NRF24L01 draadloos toetsenbord gegevens overdracht systeem op basis van Arduino

ICStation Team u dit draadloze transmissie-systeem op basis van ICStation Mega 2560 en compatibel met Arduino UNO R3 introduceren. Het maakt gebruik van DC5V werkende spanning. Als er iemand op de toetsen te drukken, worden de waarde van de sleutels
Pixel verzonden teller op basis van Arduino

Pixel verzonden teller op basis van Arduino

Vele malen, gebruik we vaak van LCD zoals weergaveapparatuur, van kleine temperatuur monitoren tot grote industriële apparatuur.Het grappige ding in dit project is dat het combineert twee rode LED Matrices als vertoning. U hoeft geen andere apparaten
2.4 G Wireless gegevenssysteem sortering op basis van Arduino RF Uart

2.4 G Wireless gegevenssysteem sortering op basis van Arduino RF Uart

Modern slimme huis kan gemakkelijk verbinden met elkaar alle elektrische apparatuur, maar bijna alle terminals is afhankelijk van voeding voorwaarde energie, dus we moeten doen een kleinere grootte macht, INHAOS AC-5000 5W van de macht in een klein f
74HC595 digitale LED weergeven op basis van Arduino (Code geboden)

74HC595 digitale LED weergeven op basis van Arduino (Code geboden)

de Chief Engineer van de ICStation R & D afdeling Jack ICStation UNO R3 compatibel met Arduino gebruikt om met succes de 74HC595 schijf vier digitale LED-display. Wij delen de schematisch diagram, bedradingsschema, stappen, Diagram en ook de code van
Eenvoudige rekenmachine op basis van Arduino MEGA

Eenvoudige rekenmachine op basis van Arduino MEGA

Tegenwoordig is doen berekeningen geen probleem bij allen. Krachtige rekenmachines kunnen worden gekocht voor een paar Euro of gemakkelijk geïnstalleerd op telefoons en computers. Echter besloten hebben we om te zetten van onze Arduino in een rekenma
PC USB Media volumecontrolemechanisme op basis van Arduino

PC USB Media volumecontrolemechanisme op basis van Arduino

Hallo allemaal en welkom op mijn derde Instructable.Een vriend van mij heeft een geluidssysteem met een wijzerplaat voor volumeregeling, en het zit op zijn Bureau op zoek echt gaaf. Ik wilde iets gelijkaardig, maar met extra functionaliteit en aanpas