응답이 시작되기까지 걸리는 시간이라고 하네요.^^. 50mS 면 충분한 시간일듯 합니다..
2. TX함수에서 송신시에는 그냥 연속으로 데이터를 보내세요. TX 인터럽트를 사용하지 않고 한 바이트씩 나눠서 보내면, 수신측에서 연속으로 오는 데이터가 아니라서 노이즈로 판단할수도 있습니다. ( 저도 개인적으로 이 부분(TX)을 인터럽트로 처리하는 방법으로 변경해야 하는데, 아직 별 문제가 없고, 귀차니즘 때문에 그냥 사용합니다.^^)
void Tx(void) {
if(tx_step ==0) { //통신칩 register 세팅 write_reg(xxxx); tx_step++; } else if(tx_step==1) { // Main while에서 받은 값을 tx 버퍼 큐에 쓴다. Write_Data(ui8Z85_TBuf[tx_data_cnt]); tx_data_cnt++; if(tx_data_cnt >= 14){u8tx_step = 3;} for(i = 0;i<14;i++) // 데이터는 연속으로 보내야.... Send Data; tx_step = 3; timer = 1900;; // 딜레이도 여기에 주는게... } else if(tx_step==3) { //Rx 를 위한 세팅..
delay(1900); // 여기도 delay가 있었네요. -.-'
tx_data_cnt = 0; tx_step =0;
Write_reg(0x21); //Rx 수신대기를 위한 칩 세팅 -- 그렇다면 이 부분도 인터럽트 루틴에 넣는 것이 좋을까요?.. Write_reg(0x3e); Write_reg(0x92); Write_reg(0x23); ........................... Write_reg(0x02); } }
3. PC 와 통신을 해보라고 말한거는, 꼭 PC와 통신 하라는 뜻이 아니고요^^ AVR이 8Mhz일 때 9600bps 이상일 경우 통신이 잘 안되기 때문에 그 보레이트에서 에러가 없는지 확인해보시라는 뜻이었습니다.^^ (이건 괜히 급하게 언급했나 보네요ㅡㅡ;)
4. RX 인터럽트는 주기가 필요하지 않습니다. 데이터가 수신되는 즉시 걸리는 루틴입니다.
1.
네이버에서 검색해보니 http://krdic.naver.com/search.nhn?query_euckr=%C0%C0%B4%E4%BD%C3%B0%A3
응답이 시작되기까지 걸리는 시간이라고 하네요.^^.
50mS 면 충분한 시간일듯 합니다..
2. TX함수에서 송신시에는 그냥 연속으로 데이터를 보내세요.
TX 인터럽트를 사용하지 않고 한 바이트씩 나눠서 보내면, 수신측에서 연속으로 오는 데이터가 아니라서 노이즈로 판단할수도 있습니다.
( 저도 개인적으로 이 부분(TX)을 인터럽트로 처리하는 방법으로 변경해야 하는데, 아직 별 문제가 없고, 귀차니즘 때문에 그냥 사용합니다.^^)
void Tx(void) {
if(tx_step ==0) {
//통신칩 register 세팅
write_reg(xxxx);
tx_step++;
}
else if(tx_step==1) {
// Main while에서 받은 값을 tx 버퍼 큐에 쓴다.Write_Data(ui8Z85_TBuf[tx_data_cnt]);
tx_data_cnt++;
if(tx_data_cnt >= 14){u8tx_step = 3;}
for(i = 0;i<14;i++) // 데이터는 연속으로 보내야....
Send Data;
tx_step = 3;
timer = 1900;; // 딜레이도 여기에 주는게...
}
else if(tx_step==3) { //Rx 를 위한 세팅..
delay(1900); // 여기도 delay가 있었네요. -.-'tx_data_cnt = 0;
tx_step =0;
Write_reg(0x21); //Rx 수신대기를 위한 칩 세팅 -- 그렇다면 이 부분도 인터럽트 루틴에 넣는 것이 좋을까요?..
Write_reg(0x3e);
Write_reg(0x92);
Write_reg(0x23);
...........................
Write_reg(0x02);
}
}
3.
PC 와 통신을 해보라고 말한거는, 꼭 PC와 통신 하라는 뜻이 아니고요^^
AVR이 8Mhz일 때 9600bps 이상일 경우 통신이 잘 안되기 때문에 그 보레이트에서 에러가 없는지 확인해보시라는 뜻이었습니다.^^ (이건 괜히 급하게 언급했나 보네요ㅡㅡ;)
4.
RX 인터럽트는 주기가 필요하지 않습니다.
데이터가 수신되는 즉시 걸리는 루틴입니다.
RX 인터럽트 루틴에서는 큐에 데이터를 넣기만 하고요
데이터 분석 함수에서는 데이터를 분석만 하면 됩니다.
TX()// 즉 데이터 분석 함수에서는
큐에 저장된 데이터를 하나씩 꺼내와서 분석만 하면 될겁니다.