Dear Radek
For programming I connect TCLK to +12 V
1- do you have sample code for watchdog and trim and LIN ?
2-for interrupter need to rest each ISR register after use it ?How can I Reset ISR interrupt?
this is my code
interrupt 6 void D2D(void)
{
// ISR = 0 , 0 , HOT , LSOT , HSOT, LINOT, SCI ,RX ,TX ,ERR ,TOV, CH3 ,CH2 ,CH1 , CH0 , VSI
volatile int16u ivr,isr;
volatile int8u B_WSR_reg = 0;
ivr = B_IVR;
isr = B_ISR;
if (ivr == 0)
{
B_WSR_reg = B_WSR; // remove interrupt flag
}
if ( isr & 0x10) //TC3 interrupt
{
B_TC3 = B_TCNT + 40000; //set TC3 as output compare when TCRE = 0
B_PTB_PTB2 = !B_PTB_PTB2; //toggle PA7
boolTickTimer = ON;
B_TFLG1 = 0x08; //clear C3F flag when TFFCA=0
}
if (isr & 0x0080)// TX interrupt
{
if ( B_SCIS1_TDRE && B_SCIC2_TIE)// B_SCIS1_TC &&
{
if ( LINStateManage() == FALSE )
{
structLinFrameBuffer.enuState = LIN_STATE_IDLE ;
}
B_SCIS1_TDRE = 1;
}
}
if (isr == 0x0100)// RX interrupt
{
if (B_SCIS2_LBKDIF && B_SCIBDH_LBKDIE) // A break signal was received
{
structLinFrameBuffer.enuState =LIN_STATE_BREAK_FIELD;
structLinFrameBuffer.int8uSynchPointer=0;
B_SCIS2_LBKDIF = 1;
}
if( (B_SCIS1_RDRF || B_SCIS1_OR) && B_SCIC2_RIE) // interrupt of Receive
{
B_SCIS1_RDRF = 1;
B_SCIS1_OR =1;
structLinFrameBuffer.enuState = LIN_STATE_SYNC_FIELD;
structLinFrameBuffer.int8uSynch[SYNCHFIELD] = B_SCID;
if ( LINStateManage() == FALSE )
{
structLinFrameBuffer.enuState = LIN_STATE_IDLE ;
}
BackLightWindowSwitch =1;
}
}
}