interrupt void c_int11() //interrupt service routine { output_sample(AIC_buffer.samples); //output data AIC_buffer.samples= input_sample(); //input data intflag = TRUE; return; }
interrupt void c_int11() //interrupt service routine { short sample_data; sample_data = input_sample(); //input data output_sample(sample_data); //output data return; }
interrupt void c_int11() //interrupt service routine { int i, outval= 0; short X = 0; if(stabilizeOutput++ < STABILIZE_LEN) //delay start to Stabilize { r[0] = input_sample(); output_sample(0); return; } if(encSeqNum < MAX_DATA_LENGTH) //modulate data sequence { outval = (int) sigAmp[encodeSeq[encSeqNum]]*phi_1[encSymbolVal++]; if(encSymbolVal>=N) {encSeqNum++; encSymbolVal=0; } output_sample(outval); } else output_sample(0); //0 if MAX_DATA_LENGTH exceeded r[rNum++] = (short) input_sample();//input signal buffer[buflen++] = r[rNum - 1]; if(beginDemod) //demod received signal { if(decSeqNum<2 && rNum==N) { //account for delay in signal decSeqNum ++; rNum = 0; } if(rNum == N) //synchronize to symbol length { rNum = 0; for(i=0; i<N; i++) //correlate with basis function X += r[i]*phi_1[i]; decodeSeq[decSeqNum-2] = (X >= 0) ? 1: 0; //do detection if(++decSeqNum == MAX_DATA_LENGTH+2) //print received sequence { for(i=0; i<decSeqNum-2; i++) printf("Received Value: %d\n", decodeSeq[i]); exit(0); } } } else { beginDemod = 1; rNum = 0; } }