ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1461242 Топик полностью
Ig_B (04.09.2024 22:42, просмотров: 94) ответил my504 на Вообще то нужно увидеть код инициализации OC. У меня есть 3...4 проекта с синхронизацией таймеров на 33ЕР. Заодно уточните тип контроллера. Там с ОС могут быть варианты. У меня используются GM304, GM710, MC202, MC204.
Использую MC202. Удалось настроить, но не понял почему так. 

Заработало при установке TRIGMODE и OCTRIG в единицу.

Триггер от INT1.

Как я понял по мануалу на Output Compare установка OC1R OC1RS в ноль должна держать выход в нуле, а у меня меандр 500кГц.

Как лучше отключать выход ОС?

Странно, что сброс OC1TMR=0 в прерывании INT1 не давал эффекта, он что, не обнуляется программно?


//Timer for Input Capture & Output Compare

T3CON=0;

T3CONbits.TCKPS=0b10; //0b10 - 50M:64=781.25KHz

T3CONbits.TON=1; //T3 ON

IPC2bits.T3IP=3; //T3 interrupt

IFS0bits.T3IF=0; //

IEC0bits.T3IE=1;

//Input Capture

IC1CON1=0;

IC1CON1bits.ICM=0b011; //0b011-simple mode, every rising edge

IC1CON1bits.ICTSEL=0; //IC clock selection, 0-timer3 (781KHz)

IC1CON2=0;

RPINR7bits.IC1R=36; //should apply RB4 to IC1 input

IFS0bits.IC1IF=0;

IEC0bits.IC1IE=1;

IPC0bits.IC1IP=5;

//Output Compare

RPOR0bits.RP20R=0b010000; //RA4(RP20) is OC1 out (010000)

OC1CON1=0;

OC1CON1bits.OCTSEL=0b001; //001 is Timer3 (781.25KHz)

OC1CON1bits.TRIGMODE=1; //?

OC1CON2=0;

OC1CON2bits.OCTRIG=1; //?

//OC1CON2bits.SYNCSEL=0b00000; //no sync or trig

//OC1CON2bits.SYNCSEL=0b10000; //sync from IC (eraata!)

OC1CON2bits.SYNCSEL=0b11101; //sync from INT1 (RB4)

OC1R =4500; //for test,7815 max value, min power

OC1RS=4600; //should form pulse (100*10/7815)

OC1CON1bits.OCM=0b101; //101 is dual compare cont. mode

//INT1

RPINR0bits.INT1R=36; //INT1 to RB4

//IFS1bits.INT1IF=0;

//IEC1bits.INT1IE=1;

//IPC5bits.INT1IP=6;