Razno

Kako generirati PWM na dspic30f i dspic33f

Autor: Peter Berry
Datum Stvaranja: 16 Srpanj 2021
Datum Ažuriranja: 10 Svibanj 2024
Anonim
1- Getting Started with mikroC Pro for PIC | mikroC Pro for PIC Tutorial
Video: 1- Getting Started with mikroC Pro for PIC | mikroC Pro for PIC Tutorial

Sadržaj

Autor je završio svoju posljednju godinu inženjerskog projekta s dsPic mikrokontrolerima, stekavši opsežan uvid u ove uređaje.

Što su dspic30f i dspic33f?

Mikrokontroleri serije dspic30f i dspic33f napredni su 16-bitni procesori iz mikročipa koji se mogu koristiti za razne PWM aplikacije. Ovaj vodič za podučavanje naučit će vas kako konfigurirati PWM module u dspicu da biste dobili željeni PWM izlaz.

Ovaj uzorak koda može se koristiti za inicijalizaciju svih registara i konfiguracijskih bitova potrebnih za dobivanje željenog PWM izlaza.

Primjer PWM koda za dspic30f i dspic33f

praznina PWM_Init (void) {TRISE = 0x00; // provjerite jesu li PWM pinovi postavljeni na izlaze PORTE = 0x00; // obriši izlaze PTCONbits.PTOPS = 1; // PWM timer nakon skale PTCONbits.PTCKPS = 0; // PWM timer unaprijed skalira PTCONbits.PTMOD = 2; // PWM neprekidno radi u načinu gore-dolje PTMR = 0; // Vrijednost brojača PWM, početak od 0 PTPER = 19999; // Razdoblje PWM vremenske baze PWMCON1bits.PMOD3 = 0; // PWM u besplatnom načinu PWMCON1bits.PMOD2 = 0; // PWM u besplatnom načinu PWMCON1bits.PMOD1 = 0; // PWM u besplatnom načinu PWMCON1bits.PEN3H = 1; // PWM High pin je omogućen PWMCON1bits.PEN2H = 1; // PWM High pin je omogućen PWMCON1bits.PEN1H = 1; // PWM High pin je omogućen PWMCON1bits.PEN3L = 1; // PWM omogućen nizak pin (kontrola smjera kasnije?) PWMCON1bits.PEN2L = 1; // Omogućen PWM donji pin (kontrola smjera kasnije?) PWMCON1bits.PEN1L = 1; // Omogućen PWM niski pin (kontrola smjera kasnije?) // PWMCON2 = 0x0000; // Informacije o ažuriranju PWM-a DTCON1bits.DTAPS = 0; // DeadTime skaler DTCON1bits.DTA = 59; // Vrijednost mrtvog vremena za 4 nas. // FLTACON = 0x0000; // Kontrola greške // OVDCON = 0x0000; // Nadjačavanje podataka o kontroli // Dežurni ciklus ima maksimalnu vrijednost 2xPeriod budući da se izlaz // može mijenjati na rastućem ili padajućem rubu Tcy PDC1 = 19999; // PWM # 1 registar radnog ciklusa (11-bitni) PDC2 = 19999; // PWM # 2 registar radnog ciklusa (11-bitni) PDC3 = 19999; // PWM # 3 registar radnog ciklusa (11-bitni) PTCONbits.PTEN = 1; // Omogući PWM Timerbase! }

Važni registri koji se koriste za inicijalizaciju PWM-a u dspicu

RegistarFunkcija

PTPER


Registar vremenskog razdoblja PWM sadrži vrijednost vremenske osnove.

PDC

PWM registar radnog ciklusa sadrži vrijednost radnog ciklusa.

PTCON

Konfiguracijski registri PWM-a imaju konfiguracijske bitove.

PTCON1

Konfiguracijski registri PWM-a imaju konfiguracijske bitove.

DTCON1

Registar konfiguracije mrtvog vremena.

PTMR

To se obično postavlja na nulu.

1: Odaberite način rada PWM

To se radi uz pomoć PTMOD-ovih konfiguracijskih bitova u PTCON registru, kao što je prikazano u retku 8 našeg koda.

PTMODNačin rada

11

Neprekidan način rada gore / dolje s prekidima za dvostruko ažuriranje PWM-a

10

Neprekidan način brojanja gore / dolje

01

Način pojedinačnog događaja

00


Slobodni način rada

2: Izračunajte razdoblje PWM-a

Vremensko osnovno razdoblje PWM-a može se izračunati pomoću dolje navedene formule:

Gdje:

1 / Tcy = 4 / (frekvencija oscilatora * PLLx)

Izračunajmo ovo za vremensko bazno razdoblje od 1 ms. Frekvencija oscilatora je 10 MHz, a PLL je postavljen na x8.

Rješenjem za PTPER dobiva se vrijednost od 19.999 koja se zatim učitava u PTPER registar u retku 12.

  • PTPER se može učitati s maksimalnom vrijednošću od 32.768.
  • Ako izračunata vrijednost dođe veća od ove, tada treba prilagoditi uređaj za prednamještanje.

3: Izračunajte vrijednost radnog ciklusa

Vrijednost radnog ciklusa izračunava se pomoću iste formule koja se koristi za izračun vremenske osnovice (PTPER), osim što se umjesto vremenskog baznog razdoblja zadržava potrebno visoko vrijeme impulsa. Nakon rješavanja za PTPER, odgovor je:


  1. Pomnoženo sa 2 i
  2. Umetnuto u PDC registar, kao što je prikazano u retku 35.

U ovom primjeru, za 50% radnog ciklusa, 0,5 ms se drži umjesto 1 ms u gornjoj datoj formuli. Rješenje za PTPER daje 9.999. Vrijednost učitana u PDC registar je 19.999.

Izlaz PWM-a dobiven s ovom konfiguracijom prikazan je u nastavku:

PWM u načinu brojanja gore-dolje

Način brojanja gore-dolje daje PWM koji je poravnat prema sredini. To je osobito korisno u aplikacijama za upravljanje vektorima.

  • U ovom načinu rada, PWM vremenska baza dvostruko je veća od one izračunate za slobodni način rada. Na primjer, PTPER = 19,999 dat će period od 2 ms, a ne 1 ms.
  • Isto vrijedi i za vrijednosti radnog ciklusa u PDC registrima.

PWM u besplatnom načinu

Besplatni način rada jedinstvena je značajka serija dspic30f i dspic33f. Omogućuje nam konfiguriranje dva PWM kanala u besplatnom načinu, tako da je izlaz jednog kanala točno suprotan drugom.

Da biste to konfigurirali,

  • Bit PMOD u registru PTCON1 treba zapisati s nulom, kao što je spomenuto u retku 14-16.
PMODNačin rada

0

Besplatan način

1

Neovisni način rada

  • PWM bit za visoku mogućnost ili PENxH i odgovarajući PWM bit za malo omogućavanje PENxL moraju biti napisani s jednim, kao što je spomenuto u redovima 17–22.

Umetanje mrtvog vremena u dspicu

Kada je PWM konfiguriran u besplatnom načinu, konfiguracijom DTCON1 registra lako se može umetnuti mrtvo vrijeme između dva besplatna kanala.

  • DTAPS bit koristi se za odabir uređaja za predskaliranje mrtvih vremena.
  • DTA se učitava s 6-bitnom cijelom vrijednošću kako bi se utvrdilo trajanje mrtvog vremena koje treba umetnuti. Može se izračunati iz iste gore navedene formule izračuna PTPER vrijednosti.
  • Budući da je ovo samo 6-bitna vrijednost, ona ne može biti veća od 64. Ako nakon izračuna dođe do veće vrijednosti, potrebno je prilagoditi uređaj za predskaliranje.
  • Linija 27 prikazuje vrijednost 59 izračunatu za 4 mikrosekunde, održavajući uređaj za predskaliranje na nuli.

Prekid PWM-a u dspic30f i dspic33f

Prekid PWM-a dostupan je u dspic30f i dspic33f koji se mogu pokrenuti na raznim mjestima tijekom PWM ciklusa.

Način radaTočka na kojoj se aktivira prekid

Neprekidan način odbrojavanja gore-dolje s prekidima za dvostruko ažuriranje

Na početku i na kraju svakog PWM ciklusa. Alat za skaliranje u ovom načinu nema učinka.

Neprekidan način odbrojavanja gore-dolje

Na početku svakog PWM ciklusa.

Način pojedinačnog događaja

Na kraju svakog PWM ciklusa. (Kad se usporedi usporedba između PTPER-a i PTMR-a.) Post skaler nema učinka u ovom načinu rada.

Slobodni način rada

Na kraju svakog PWM ciklusa. (Kada se usporedi usporedba između PTPER-a i PTMR-a)

Da bi se omogućio PWM prekid, bit PWMIE u registru IEC2 mora biti postavljen na 1.

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

Slijedi standardni kod funkcije PWM prekida koji će se pozvati kad se prekid aktivira.

void __attribute __ ((prekid, auto_psv)) _PWMInterrupt (void) {// vaš kod ovdje IFS2bits.PWMIF = 0; }

Više informacija o prekidima možete pronaći u ovom detaljnom vodiču: Kako koristiti prekide u Pic MicroControllerima.

PWM prekidač poruka

Postkaler se može koristiti za smanjenje učestalosti okidanja prekida. Na primjer, može biti konfiguriran za aktiviranje nakon svakih 1, 2, 4 ili 8 PWM ciklusa, ovisno o PTOPS bitovima u PTCON registru, kao što je prikazano u retku 6 našeg referentnog koda.

Ovaj je članak točan i vjeran prema autorskom znanju. Sadržaj je samo u informativne ili zabavne svrhe i ne zamjenjuje osobne savjete ili profesionalne savjete u poslovnim, financijskim, pravnim ili tehničkim pitanjima.

Pitanja i odgovori

Pitanje: Pokušavam dobiti besplatni način rada za jedan PWM izlaz pomoću referentnog programa, dspic30f4011 i Pickit 3. Jedino što sam uključio su konfiguracijski bitovi za interni odabir frekvencije i c-kompajler, ali ne mogu dobiti nikakve izlaze na PWM1 igle?

Odgovor: Ponekad, kada promijenite konfiguracijske bitove, mikrokontroler prestane raditi i pod tim mislim, kad oscilator ne radi ispravno, vaš se kôd neće početi izvršavati.

Dakle, da biste potvrdili da je vaš kontroler odabrao ispravnu konfiguraciju oscilatora, trebali biste uključiti LED lampicu koja trepće u sve svoje kodove kako biste potvrdili da je kontroler uključen i radi.

Izbor Čitatelja

Za Tebe

Kako stvoriti raspršeni plan u programu Excel
Računala

Kako stvoriti raspršeni plan u programu Excel

Jo hua je ap olvent na U F-u. Zanima ga po lovna tehnologija, analitika, financije i mršav še t igma.Ra pršena ploha vrlo je vjerojatno najkori nija tvorevina u povije ti tati tičke grafike. tvaranje ...
Tmart pregled: Ne kupujte od Tmarta dok ovo ne pročitate!
Internet

Tmart pregled: Ne kupujte od Tmarta dok ovo ne pročitate!

Pročitao am brojne kritike o Tmartu prije nego što am e odlučio kupiti kod njih, a ovdje dijelim vla titu recenziju kako bih pomogao o talim pametnim kupcima.Tmart je internet ka trgovina elektronikom...