Misc

Sådan genereres PWM på dspic30f og dspic33f

Forfatter: Peter Berry
Oprettelsesdato: 16 Juli 2021
Opdateringsdato: 11 Kan 2024
Anonim
Sådan genereres PWM på dspic30f og dspic33f - Misc
Sådan genereres PWM på dspic30f og dspic33f - Misc

Indhold

Forfatteren afsluttede sit sidste års ingeniørprojekt med dsPic mikro-controllere og fik omfattende indsigt i disse enheder.

Hvad er dspic30f og dspic33f?

dspic30f- og dspic33f-serie mikrocontrollere er avancerede 16-bit processorer fra mikrochip, som kan bruges til en række PWM-applikationer. Denne gennemgangsvejledning lærer dig, hvordan du konfigurerer PWM-modulerne i dspic for at få det ønskede PWM-output.

Denne prøvekode kan bruges til at initialisere alle de registre og konfigurationsbits, der kræves for at få det ønskede PWM-output.

PWM-kodeeksempel for dspic30f og dspic33f

ugyldigt PWM_Init (ugyldigt) {TRISE = 0x00; // sørg for, at PWM-ben er indstillet til at være udgange PORTE = 0x00; // ryd udgangene PTCONbits.PTOPS = 1; // PWM-timer efter skala PTCONbits.PTCKPS = 0; // PWM-timer forskaler PTCONbits.PTMOD = 2; // PWM fungerer kontinuerligt i op-ned-tilstand PTMR = 0; // PWM-tællerværdi, start ved 0 PTPER = 19999; // PWM-tidsbasisperiode PWMCON1bits.PMOD3 = 0; // PWM i gratis tilstand PWMCON1bits.PMOD2 = 0; // PWM i gratis tilstand PWMCON1bits.PMOD1 = 0; // PWM i gratis tilstand PWMCON1bits.PEN3H = 1; // PWM High pin er aktiveret PWMCON1bits.PEN2H = 1; // PWM High pin er aktiveret PWMCON1bits.PEN1H = 1; // PWM High pin er aktiveret PWMCON1bits.PEN3L = 1; // PWM Lav pin aktiveret (retningskontrol senere?) PWMCON1bits.PEN2L = 1; // PWM Lav pin aktiveret (retningskontrol senere?) PWMCON1bits.PEN1L = 1; // PWM Lav pin aktiveret (retningskontrol senere?) // PWMCON2 = 0x0000; // PWM-opdateringsoplysninger DTCON1bits.DTAPS = 0; // DeadTime forskaler DTCON1bits.DTA = 59; // DeadTime-værdi for 4 os. // FLTACON = 0x0000; // Fejl A-kontrol // OVDCON = 0x0000; // Tilsidesæt kontrolinformation // Duty Cycle har en maksimumsværdi på 2xPeriod, da output // kan ændre sig ved stigende eller faldende kant af Tcy PDC1 = 19999; // PWM # 1 Duty Cycle register (11-bit) PDC2 = 19999; // PWM # 2 Duty Cycle register (11-bit) PDC3 = 19999; // PWM # 3 Duty Cycle register (11-bit) PTCONbits.PTEN = 1; // Aktivér PWM Timerbase! }

Vigtige registre, der bruges til PWM-initialisering i dspic

TilmeldFungere

PTPER


PWM-tidsperioderegisteret indeholder tidsbasisværdien.

PDC

PWM-driftscyklusregister indeholder driftscyklusværdien.

PTCON

PWM-konfigurationsregistre har konfigurationsbits.

PTCON1

PWM-konfigurationsregistre har konfigurationsbits.

DTCON1

Registrering af dead time-konfiguration.

PTMR

Dette er normalt indstillet til nul.

1: Vælg PWM-driftstilstand

Dette gøres ved hjælp af PTMOD-konfigurationsbits i PTCON-registeret, som vist i linje 8 i vores kode.

PTMODMode

11

Kontinuerlig op / ned-tilstand med afbrydelser til dobbelt PWM-opdatering

10

Kontinuerlig op / ned optællingstilstand

01

Enkelt begivenhedstilstand

00


Friløbstilstand

2: Beregn PWM-tidsbasisperioden

PWM-tidsbasisperiode kan beregnes ved hjælp af nedenstående formel:

Hvor:

1 / Tcy = 4 / (oscillatorfrekvens * PLLx)

Lad os beregne dette for en tidsbasisperiode på 1 ms. Oscillatorfrekvensen er 10 MHz, og PLL er indstillet til x8.

Løsning for PTPER giver en værdi på 19.999, som derefter indlæses i PTPER-registeret i linje 12.

  • PTPER kan indlæses med en maksimumværdi på 32.768.
  • Hvis den beregnede værdi kommer større end dette, skal prescaler justeres.

3: Beregn driftscyklusværdien

Arbejdscyklusværdi beregnes ved hjælp af den samme formel, der bruges til beregning af tidsbaseret værdi (PTPER), bortset fra at i stedet for tidsbaseperioden holdes den krævede høje tid for pulsen. Efter løsning af PTPER er svaret:


  1. Multipliceret med 2 og
  2. Indlæst i PDC-registeret, som vist i linje 35.

I dette eksempel holdes 0,5 ms i stedet for 1 ms i 50% driftscyklus i ovenstående formel. Løsning af PTPER giver 9.999. Værdien indlæst i PDC-registeret er 19.999.

PWM-output opnået med denne konfiguration er vist nedenfor:

PWM i Up-Down Counting Mode

Up-down counting mode giver en PWM, som er justeret til midten. Dette er især nyttigt i applikationer til vektorkontrol.

  • I denne tilstand er PWM-tidsbasen dobbelt så stor som beregnet for fritløbstilstand. For eksempel vil PTPER = 19.999 give en periode på 2 ms snarere end 1 ms.
  • Det samme gælder driftscyklusværdierne i PDC-registre.

PWM i komplementær tilstand

Gratis tilstand er en unik funktion i dspic30f- og dspic33f-serierne. Det giver os mulighed for at konfigurere to PWM-kanaler i gratis tilstand, således at output fra en kanal er nøjagtigt modsat den anden kanal.

For at konfigurere dette,

  • PMOD-biten i PTCON1-registret skal skrives med nul, som nævnt i linje 14–16.
PMODMode

0

Gratis tilstand

1

Uafhængig tilstand

  • PWM-højaktiveringsbit eller PENxH og den tilsvarende PWM-lavaktiveringsbit PENxL skal skrives med en som nævnt i linje 17-22.

Dead Time-indsættelse i dspic

Når PWM er konfigureret i komplementær tilstand, kan en dødtid let indsættes mellem de to gratis kanaler ved at konfigurere DTCON1-registeret.

  • DTAPS bit bruges til at vælge dead dead prescaler.
  • DTA er indlæst med en 6-bit heltalsværdi for at bestemme varigheden af ​​den døde tid, der skal indsættes. Det kan beregnes ud fra den samme formel til PTPER-værdiberegning som angivet ovenfor.
  • Da dette kun er en 6-bit værdi, kan den ikke være større end 64. Hvis en større værdi kommer efter beregningen, skal prescaler justeres.
  • Linie 27 viser en værdi på 59 beregnet for 4 mikrosekunder, hvilket holder forkøleren nul.

PWM Interrupt i dspic30f og dspic33f

En PWM-afbrydelse er tilgængelig i dspic30f og dspic33f, som kan udløses forskellige steder under PWM-cyklussen.

ModePunkt, hvor afbrydelse udløses

Kontinuerlig op-ned-optællingstilstand med afbrydelser til dobbelt opdatering

I starten og slutningen af ​​hver PWM-cyklus. Postscaler har ingen effekt i denne tilstand.

Kontinuerlig op-ned-optællingstilstand

Ved starten af ​​hver PWM-cyklus.

Enkelt begivenhedstilstand

I slutningen af ​​hver PWM-cyklus. (Når der findes en sammenligningskamp mellem PTPER og PTMR.) Post-scaler har ingen effekt i denne tilstand.

Friløbstilstand

I slutningen af ​​hver PWM-cyklus. (Når der findes en sammenligningskamp mellem PTPER og PTMR)

For at aktivere en PWM-afbrydelse skal PWMIE-biten i IEC2-registeret sættes til 1.

ugyldigt Interrupt_Init (ugyldigt) {IEC2bits.PWMIE = 1; }

Følgende er standardkoden for PWM-afbrydelsesfunktionen, som kaldes, når afbrydelsen udløses.

ugyldigt __attribute __ ((interrupt, auto_psv)) _PWMInterrupt (void) {// din kode her IFS2bits.PWMIF = 0; }

Flere oplysninger om afbrydelser kan findes i denne detaljerede vejledning: Sådan bruges afbrydelser i Pic MicroControllers.

PWM Interrupt Postscaler

En postscaler kan bruges til at reducere hyppigheden af ​​afbrydelse. For eksempel kan den konfigureres til at udløse efter hver 1, 2, 4 eller 8 PWM-cyklus, afhængigt af PTOPS-bitene i PTCON-registeret, som vist i linje 6 i vores referencekode.

Denne artikel er nøjagtig og sand efter bedste forfatterens viden. Indholdet er kun til informations- eller underholdningsformål og erstatter ikke personlig rådgivning eller professionel rådgivning i forretningsmæssige, økonomiske, juridiske eller tekniske forhold.

Spørgsmål og svar

Spørgsmål: Jeg forsøger at få en gratis tilstand til en PWM-udgang ved hjælp af referenceprogrammet, dspic30f4011 og Pickit 3. Det eneste, jeg inkluderede, er konfigurationsbits til intern frekvensvalg og c-compileren, men kan ikke få noget output på PWM1 stifter?

Svar: Nogle gange, når du ændrer konfigurationsbitene, holder mikrocontrolleren op med at arbejde, og med det mener jeg, når oscillatoren ikke fungerer korrekt, begynder din kode ikke at blive udført.

For at bekræfte, at din controller har valgt den korrekte oscillatorkonfiguration, skal du medtage en LED-blinkekode i alle dine koder for at bekræfte, at controlleren er tændt og fungerer.

Interessante Artikler

Valg Af Læsere

Min Amazon Echo (2. generation) anmeldelse
Computere

Min Amazon Echo (2. generation) anmeldelse

Krzy ztof er en liv lang fremtidig tech-junkie, der under øger de nye te hi torier fra virk omheder om Apple, am ung, Google og Amazon.Amazon Echo er en banebrydende temme tyring enhed, der lover...
10 websteder som Poshmark: Begynd at sælge tøj online
Internet

10 websteder som Poshmark: Begynd at sælge tøj online

Car on er liden kabelig med at hjælpe folk med at finde marte, overkommelige modeind tillinger.Ved du ikke, hvad du kal gøre med dit tøj, der ikke har et dagen ly i årevi ? Det er ...