Использую 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;