BASIC4MCU | 통신 | 485통신 | 232와 485 TX() 함수의 차이 설명
페이지 정보
작성자 키트 작성일2017-08-31 17:50 조회2,344회 댓글0건본문
void TX1_CH(char ch){ while(!(UCSR1A&0x20)); UDR1=ch; } // 232용
void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
두가지 방식의 송신 함수입니다.//
두 함수의 차이를 보면
void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
가장 큰 차이는 485에 75176의 TX 이네이블 제어가 추가되어 있는 것입니다.//
void TX1_CH(char ch){ while(!(UCSR1A&0x20)); UDR1=ch; } // 232용
TX 이네이블 제어가 필요없는 232용은 이전 데이터가 나갈 때까지 기다린 후
void TX1_CH(char ch){ while(!(UCSR1A&0x20)); UDR1=ch; } // 232용
UDR레지스터에 데이터를 넣고 함수를 빠져나오지만
함수를 빠져나오는 시점이 데이터가 모두 전송된 시점이 아니고
이 때부터 데이터가 전송 되기 시작합니다.
//
void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
485용은 TX 이네이블 시키고서void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
데이터를 UDR 레지스터에 넣은 후void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
데이터가 다 나갈 때까지 기다리고서void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
데이터가 스톱비트까지 모두 전송 된 후에는 플래그를 크리어 하고void TX1_CH(char ch){ TX_EN=1; UDR1=ch; while(!(UCSR1A&0x40)); UCSR1A|=0x40; TX_EN=0; } // 485용
TX 이네이블을 꺼서 송신 함수를 빠져나옵니다.
댓글 0
조회수 2,344등록된 댓글이 없습니다.