Jump to content

eestyk

Members
  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

0 Обычный

About eestyk

  • Rank
    Новенький

Информация

  • Город
    Санкт-Петербург

Электроника

  • Стаж в электронике
    1-2 года
  • Сфера радиоэлектроники
    Электротранспорт
  • Оборудование
    dsPIC30F5011

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Спасибо, разобрался, ШИМ заработал.Проблемы была как раз в том, что я не задал период ШИМа путём записи значения в регистр PR2.
  2. Прошу прощения за поздний ответ. При вызове функции в регистры OC3RS записывается период ШИМ, а в регистр OC3R значение скважности ШИМ. Собственно так и получается частота я так понимаю. А что за модуль следящий на порту? void OpenOC3(unsigned int config, unsigned int value1, unsigned int value2) { OC3CONbits.OCM = 0; /* turn off OC before switching to new mode */ OC3RS = value1; /* assign value1 to OCxRS Secondary Register */ OC3R = value2; /* assign value2 to OCxR Main Register*/ OC3CON = config; /* assign config to OCxCON Register*/ }
  3. Полностью код слишком длинный. // PORTB #define Iout2_adc ADCBUF0 //PORTBbits.RB0 // Вход аналоговый от измерителя тока через нагрузку 1 #define Iout1_adc ADCBUF1 //PORTBbits.RB1 // Вход аналоговый от измерителя тока через нагрузку 2 #define Iout4_adc ADCBUF2 //PORTBbits.RB2 // Вход аналоговый от измерителя тока через нагрузку 3 #define Iout3_adc ADCBUF3 //PORTBbits.RB3 // Вход аналоговый от измерителя тока через нагрузку 4 #define Iout6_adc ADCBUF4 //PORTBbits.RB4 #define Iout5_adc ADCBUF5 //PORTBbits.RB5 #define Iout8_adc ADCBUF6 //PORTBbits.RB8 #define Iout7_adc ADCBUF7 //PORTBbits.RB9 #define Iout10_adc ADCBUF8 //PORTBbits.RB10 #define Iout9_adc ADCBUF9 //PORTBbits.RB11 #define Iext_adc ADCBUFA //PORTBbits.RB12 #define VccCAN_adc ADCBUFB //PORTBbits.RB13 #define VccL_adc ADCBUFC //PORTBbits.RB14 #define VccA_adc ADCBUFD //PORTBbits.RB15 #define Adr4 PORTBbits.RB6 // бит адреса блока #define Adr3 PORTBbits.RB7 // бит адреса блока #define ziTRISB 0b1111111111111111 //настройка направления порта на вход //PORTD #define Vout1_d PORTDbits.RD0 // напряжение на входе 1 #define Vout2_d PORTDbits.RD1 // напряжение на входе 1 #define Vout3_d PORTDbits.RD2 // PWM module as output #define Vout4_d PORTDbits.RD3 // напряжение на входе 3 #define Vout5_d PORTDbits.RD4 // напряжение на входе 4 #define Vout6_d PORTDbits.RD5 // напряжение на входе 5 #define Vout7_d PORTDbits.RD6 // напряжение на входе 6 #define Vout8_d PORTDbits.RD7 // напряжение на входе 7 #define Vout9_d PORTDbits.RD8 // напряжение на входе 8 #define Vout10_d PORTDbits.RD9 // напряжение на входе 9 #define Input1 PORTDbits.RD10 // Вход 1 внешний #define Input2 PORTDbits.RD11 // Вход 2 внешний #define Input3 PORTCbits.RC1 // Вход 3 внешний #define Input4 PORTCbits.RC2 // Вход 4 внешний #define Input5 PORTCbits.RC13 // Вход 5 внешний #define Input6 PORTCbits.RC14 // Вход 6 внешний #define Input7 PORTFbits.RF4 // Вход 7 внешний #define Input8 PORTFbits.RF5 // Вход 8 внешний #define Adr1 PORTFbits.RF2 // бит адреса блока #define Adr2 PORTFbits.RF3 // бит адреса блока #define X1Ctrl PORTFbits.RF6 // наличие разъема адреса? #define ziTRISD 0b1111111111111011 //настройка направления порта на вход #define ziTRISC 0b1111111111111111 //настройка направления порта на вход #define ziTRISF 0b1111111111111111 //настройка направления порта на вход // PORTG #define Sw1_ctrl PORTGbits.RG0 // Выход 1 #define Sw2_ctrl PORTGbits.RG1 // Выход 2 #define Sw3_ctrl PORTGbits.RG2 // Выход 3 #define Sw4_ctrl PORTGbits.RG3 // Выход 4 #define Sw5_ctrl PORTGbits.RG6 // Выход 5 #define Sw6_ctrl PORTGbits.RG7 // Выход 6 #define Sw7_ctrl PORTGbits.RG8 // Выход 7 #define Sw8_ctrl PORTGbits.RG9 // Выход 8 #define Sw9_ctrl PORTGbits.RG12 // Выход 9 #define Sw10_ctrl PORTGbits.RG13 // Выход 10 #define Ready_ctrl PORTGbits.RG14 // Выход готовность #define ziTRISG 0b1000110000110000 //настройка направления порта на выход
  4. Имеется микроконтроллер dsPIC30F5011. Хочу реализовать на нём ШИМ через Output Compare Module, так как у этого модуля есть как раз режим PWM. Всё проинициализировал, задал период и коэффициент заполнения ШИМ (duty cycle - 50%), выбрал Timer2. На соответствующей ноге тыкаюсь осциллографом, ничего нет. Не могу понять в чём проблема. Вроде по даташиту настроил правильно. #define PERIOD_PWM 12484 #define PERIOD_PWM_div2 6242 WriteTimer2 (0); OpenTimer2 (T2_ON & T2_GATE_OFF & T2_IDLE_STOP & T2_PS_1_8 & T2_32BIT_MODE_OFF & T2_SOURCE_INT, PERIOD_PWM); ConfigIntTimer2 (T2_INT_PRIOR_5 & T2_INT_ON); OpenOC3(OC_IDLE_STOP & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_ENABLE, PERIOD_PWM, PERIOD_PWM_div2); ConfigIntOC3(OC_INT_PRIOR_0 & OC_INT_ON); void __attribute__((interrupt, auto_psv)) _T2Interrupt(void) { IFS0bits.T2IF = 0; // Clear Timer interrupt flag Nop(); } void __attribute__((interrupt, auto_psv)) _OC3Interrupt(void) { IFS1bits.OC3IF = 0; // Clear interrupt flag } dsPic30F5011-5013.pdf
×
×
  • Create New...