Gast
#1589146
Grüße, ich befasse mich seit ein paar Tagen mit dem eZdsp-Board von SpectrumDigital. Auf deren Homepage habe ich ein paar nützliche Programmbeispiele gefunden (ADC, LED, PWM etc.) welche alle sehr hilfreich und funktionstüchtig waren. Nun bin ich gerade dabei die PWM-Sachen durch zu gehen und hier fängt mein Problem an. Das Programm hierzu schein auf den 1. Blick zu funktionieren, doch wenn ich mir mittels Oszi die PWM-Signale anschauen will, passiert absolut nix (das Oszi funktioniert ;-))! Wenn ihr eine Idee hättet, wäre ich euch sehr dankbar. LG Jens P.S.: Hier seht ihr den C-Code! #include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File // Prototype statements for functions found within this file. void init_eva(void); void init_evb(void); // Global counts used in this example void main(void) { InitSysCtrl(); EALLOW; // Enable PWM pins GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins GpioMuxRegs.GPBMUX.all = 0x00FF; // EVB PWM 7-12 pins EDIS; DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); init_eva(); init_evb(); for(;;); } void init_eva() { // EVA Configure T1PWM, T2PWM, PWM1-PWM6 // Initalize the timers // Initalize EVA Timer1 EvaRegs.T1PR = 0xFFFF; // Timer1 period EvaRegs.T1CMPR = 0x3C00; // Timer1 compare EvaRegs.T1CNT = 0x0000; // Timer1 counter // TMODE = continuous up/down // Timer enable // Timer compare enable EvaRegs.T1CON.all = 0x1042; // Initalize EVA Timer2 EvaRegs.T2PR = 0x0FFF; // Timer2 period EvaRegs.T2CMPR = 0x03C0; // Timer2 compare EvaRegs.T2CNT = 0x0000; // Timer2 counter // TMODE = continuous up/down // Timer enable // Timer compare enable EvaRegs.T2CON.all = 0x1042; // Setup T1PWM and T2PWM // Drive T1/T2 PWM by compare logic EvaRegs.GPTCONA.bit.TCMPOE = 1; // Polarity of GP Timer 1 Compare = Active low EvaRegs.GPTCONA.bit.T1PIN = 1; // Polarity of GP Timer 2 Compare = Active high EvaRegs.GPTCONA.bit.T2PIN = 2; // Enable compare for PWM1-PWM6 EvaRegs.CMPR1 = 0x0C00; EvaRegs.CMPR2 = 0x3C00; EvaRegs.CMPR3 = 0xFC00; EvaRegs.ACTRA.all = 0x0666; EvaRegs.DBTCONA.all = 0x0000; // Disable deadband EvaRegs.COMCONA.all = 0xA600; } void init_evb() { EvbRegs.T3PR = 0xFFFF; // Timer3 period EvbRegs.T3CMPR = 0x3C00; // Timer3 compare EvbRegs.T3CNT = 0x0000; // Timer3 counter EvbRegs.T3CON.all = 0x1042; // Initialize EVB Timer4 // Timer4 controls T4PWM EvbRegs.T4PR = 0x00FF; // Timer4 period EvbRegs.T4CMPR = 0x0030; // Timer4 compare EvbRegs.T4CNT = 0x0000; // Timer4 counter // TMODE = continuous up/down // Timer enable // Timer compare enable EvbRegs.T4CON.all = 0x1042; // Setup T3PWM and T4PWM // Drive T3/T4 PWM by compare logic EvbRegs.GPTCONB.bit.TCMPOE = 1; // Polarity of GP Timer 3 Compare = Active low EvbRegs.GPTCONB.bit.T3PIN = 1; // Polarity of GP Timer 4 Compare = Active high EvbRegs.GPTCONB.bit.T4PIN = 2; // Enable compare for PWM7-PWM12 EvbRegs.CMPR4 = 0x0C00; EvbRegs.CMPR5 = 0x3C00; EvbRegs.CMPR6 = 0xFC00; EvbRegs.ACTRB.all = 0x0666; EvbRegs.DBTCONB.all = 0x0000; // Disable deadband EvbRegs.COMCONB.all = 0xA600; }