질문게시판 > 답변 : atmega128a UCSRnA 질문있어요 ㅠㅠ

TODAY216 TOTAL683,086
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 답변 : atmega128a UCSRnA 질문있어요 ㅠㅠ

페이지 정보

작성자 master 작성일2019-10-04 06:14 조회62회 댓글2건

본문

	

1. FEn = 프레임 에러라는데 여기서 문자의 첫번째 정지(STOP) 비트가 0일때라는 데 정지비트가 어디에 속해있는건가요? UDR 값을 말하는건가요?? UDR 값이0일때 FEn값이 1이 되서 UDR 첫번째 값이 읽어질때까지 대기하는 건가요??

 

 

데이터 송 수신 형태[편집]

비트 수1234567891011
시작 비트
(Start bit)

5–8 데이터 비트

UDR

패리티 비트
(parity bit)
종료 비트
(Stop bit(s))
StartData 0Data 1Data 2Data 3Data 4Data 5Data 6Data 7ParityStop

스톱비트는 데이터비트가 끝난 후에 발생합니다.

데이터비트는 UDR 내용입니다.

 

 

2. DORn = 데이터 오바런 에러.

 여기서 수신비트가 꽉찼을때(즉 읽히지 않은 데이터가 있을때) 새로운 데이터 시작비트가 수신 쉬프트 레지스트에 입력되면 셋된다. 이 비트는 수신값 UDR값이 읽혀질때까지 1이 된다. 이거 데이터 시작 비트가 UDR 값에 "ABC" 값이 들어있다면 시작 비트 값이 A 가 되게 되는 건가요?? 그리고 쉬프트 레지스트는 A가 쉬프트 되서 BC 가 되고 그럼 이때 시작 비트는 B가 되는 건가요?? 그럼 거의 수신 완료 인터럽트인데 RXC 랑 머가 다른지 모르겠네요..

 

UDR 값에 "ABC" 값이 들어가지 못합니다.

UDR은 1바이트 크기이고, "ABC"는 널문자가 포함된 4바이트입니다. 

오버런 현상이란 1바이트를 수신하고, 그 데이터를 끄내가기 전에 또다시 새로운 데이터가 들어온다면 꺼내가지 않은 데이터가 새로운 데이터에 덮혀써져서 사라집니다.

  

3. MPCMn = 멀티 프로세서 통신 모드

 제가 알기론 멀티가 2개이상의 CPU를 가짐으로써 처리능력 증대로 아는데 여기 설명 보면 어드레스(주소) 정보가 포함되지 않은 모든 수신 데이터를 수신부에 의해 무시된다는데. 말그대로 주소값을 가지지 앖은 데이터는 그냥 무시를 해버린다는 말인가요?? 근데 2개 이상의 CPU라면 atmega128a가 어떻게 두개의 CPU를 가지나요? 그냥 말이 그렇다는 건가요??

 

UART는 주로 1대1 통신으로 주로 사용하지만 RS-485 처럼 멀티로 통신할 수도 있습니다. 

여러개의 AVR( UART 멀티통신이 가능한 어떤 MCU라도 상관없슴)이 RS-485 처럼 통신하는 것을 말합니다.

엄밀히 말하면 RS485는 소프트웨어로 멀티 통신을 합니다. (외부 드라이버는 이네이블이 장착되어 있어야함)

비트 수1234567891011
시작 비트
(Start bit)

5–8 데이터 비트

패리티 비트
(parity bit)
종료 비트
(Stop bit(s))
StartData 0Data 1Data 2Data 3Data 4Data 5Data 6Data 7ParityStop

멀티프로세싱 통신은 위 구성외에 비트를 하나 추가해서 보내는 값이 어드레스인지 데이터인지를 구분해서 전송하면 (이하 어드레스비트라고 해보죠) 

수신측에서 어드레스비트를 체크해서 어드레스면 읽어서 자기 어드레스와 동일한지 비교하고

자기 어드레스와 동일하면 이어서 오는 데이터를 수신하고

자기 어드레스와 다르면 빠져나오며, 다음 어드레스비트를 체크할 때까지 수신되는 데이터는 무시합니다.

 

  

4.  FE 값과 DOR,PE 값을 보면 UCSRnA 값에 값이 가지면 자동으로 0이 된다는데. 이게 머 어느 값(RXC, TXC, UDRE, FE, DOR, PC, U2X, MPCM)에든 1이 되면 다 0으로 되버린다는 건가요??

 

AVR 공부할 때 개념적으로 혼동을 주는 가장 큰 것 중의 하나인데요 

AVR 개발자들이 단체로 졸았나봅니다.

인터럽트 플래그를 clear 시키려면 레지스터 해당비트에 1을 써야합니다.

1을 쓰면 0이 된다. <-- 아주 헷갈리는 내용이죠

레지스터 비트 중에서 이런 비트가 있으니 주의해서 봐야합니다.

FE에 1을 쓰면 FE가 0이 되는 식으로 해당 비트만 영향을 받습니다.


당연하겠지만 데이터를 정상적으로 수신하면 UCSRnA의 모든 에러상태 비트가 clear 되겠죠.

 

  

독학중인데 많이 어렵네요.. 

 

 

초창기엔 레귤레이터, 드라이버 등 통신에 관련된 IC가 수도 적고 품질이 좋질 않은데다가, 통신환경이 그다지 좋질 못했습니다.

따라서 데이터 통신시 노이즈 등에 의해서 많이 깨졌는데요

이런 환경에서는 에러상태를 알 수 있으면 데이터가 비정상인 것을 참조하기 쉽겠죠

30여년전 즈음의 인터넷은 전화선을 사용했습니다. 1200~4800bps를 시작으로 9600bps...115200...등 속도가 붙으면서 지금의 고속통신까지 발전한겁니다.

IC를 제조하는 입장에서는 저런 기능을 당연히 넣어둬야지 사용자들이 편할테지만

일반적인 환경에서는 에러가 발생하지 않습니다.

에러가 발생하지 않도록 회로를 꾸며야 할테고요, 프로그램에서도 프로토콜에 의한 첵섬 체크라든가 보완책이 있습니다.

일반적으로 에러상태 비트를 체크하지 않는다고 보면 됩니다.

DMX512 통신에서는 브레이크 신호를 감지하기 위해서 에러상태비트를 체크하는 것을 본 적이 있습니다만

저는 수십년동안 에러상태 레지스터 체크를 하지 않고 코드를 작성합니다.

그래서 문제가 된적은 한번도 없었고요

에러상태 레지스터가 (에러없이) 정상이라고 해서 반드시 데이터가 정상적으로 온 것이라고 하지 못합니다.

약간의 도움을 주는 정도이지 전적으로 신뢰하지는 못한다는 뜻입니다.

(유선에서는 에러가 거의 발생하지 않는다고 볼 수 있지만 무선에서는 유선에 비해서 에러가 많이 발생하긴 합니다. 에러를 처리해서 멀쩡한 것을 넘겨주기 때문에 잘 모를 뿐이죠)

실전에서 경험을 많이 해보셔야 이해 할 수 있는 내용입니다. 

 

모르는 내용이 나오면 모든 내용을 완벽하게 알고 넘어가려고 하지 않는 것이 좋습니다.

많이 공부하다보면 (이전에) 몰랐던 내용도 저절로 알게됩니다.

 

 

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 2

조회수 62

초짜님의 댓글

초짜 작성일

와 진짜 감사합니다! 그런데 좀 궁금한점이 있어요. UCSRnA 쪽에서 값을 쓰면 항상 클리어가 명령으로 강제적으로 줬을시 그 해당 레지스터 비트다 클리어 된다는 거고, 기기적 문제에서 셋이 됬을때는 오류가 해결될때까지 클리어가 안된다는 뜻인가요??
그리고 데이터 오바런은 수신이 됐는데 그 1바이트를 꺼내가기도 전에 씹힌거니 사실상 그 처음보내준 1바이트 데이터는 수신하지 못하고 새로운 데이터가 덮히는 건가요??

master님의 댓글

master 댓글의 댓글 작성일

머리로 이해 하려고 하지말고 동작을 시키면서 체크해야지 이해하기 쉽습니다.
UCSRnA 흔히 사용하지 않는다고 말씀 드렸고요
지금 설명을 완벽하게 듣는다고 해도 (쓸일이 적으므로) 머리에 오래 남지 않습니다.
그러니 지금 이해가 잘 안되더라도 나중에 필요할 때 다시 공부해보세요

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 787
공지 사이트 이용 안내댓글[10] master 17-10-29 8335
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [2013.02.07]댓글[1] 이미지첨부파일 master 18-01-23 3105
질문 아두이노를 이용해서 코드를 짜는걸 코딩이라고 하는데 선을 연결하고 만드는걸 뭐라고 부르는건가요? 새글 master 19-10-21 5
질문 아두이노 코드 해석 부탁드립니다.댓글[3] 새글 아두에듀잉 19-10-21 10
답변 답변글 답변 : 아두이노 코드 해석 부탁드립니다. 새글 master 19-10-21 2
질문 랜덤 LED FND 질문드립니다 새글 아두이노신입 19-10-21 7
답변 답변글 답변 : 랜덤 LED FND 질문드립니다 새글 master 19-10-21 5
질문 서보모터와 LCD 결합 질문입니다.댓글[1] 새글 Winavr 19-10-21 11
질문 아두이노 무게센서 2개 사용 질문입니다.댓글[1] 새글 Winavr 19-10-21 10
질문 아두이노 질문있습니다!! 새글 asd123 19-10-20 21
답변 답변글 답변 : 아두이노 질문있습니다!!댓글[1] 새글 master 19-10-20 23
질문 ★★★아두이노 초음파센서 모터 제어댓글[1] 이미지새글 롤토체스 19-10-20 25
답변 답변글 답변 : 다시한번 봐주세요 ㅠㅠ 아두이노 초음파센서 모터 제어 새글 롤토체스 19-10-21 7
답변 답변글 답변 : 답변 : 다시한번 봐주세요 ㅠㅠ 아두이노 초음파센서 모터 제어 새글 master 19-10-21 7
질문 mega2560 질문이요. 도와주세요.ㅠㅠ 새글 sky3014 19-10-20 18
답변 답변글 답변 : mega2560 질문이요. 도와주세요.ㅠㅠ 새글 master 19-10-20 14
질문 master님 다시한번 부탁드립니다 ㅠ댓글[1] 이미지새글첨부파일 길짱 19-10-20 15
답변 답변글 답변 : master님 다시한번 부탁드립니다 ㅠ 새글 길짱 19-10-20 14
답변 답변글 답변 : 답변 : master님 다시한번 부탁드립니다 ㅠ 새글 master 19-10-20 11
질문 마스터님!! 아두이노 mega2560 소스 질문드립니다! 새글 찐덕 19-10-20 19
답변 답변글 답변 : 마스터님!! 아두이노 mega2560 소스 질문드립니다! 새글 master 19-10-20 17
질문 다시한번 더 올립니다ㅠㅠ (ATMEGA128,도트매트릭스)댓글[1] 이미지새글첨부파일 길짱 19-10-20 19
질문 아두이노 mega2560 소스코드 질문드립니다댓글[3] 이미지새글 찐덕 19-10-20 20
질문 아두이노 질문 있습니다 ㅠㅠ 이미지새글 asd123 19-10-20 14
답변 답변글 답변 : 아두이노 질문 있습니다 ㅠㅠ댓글[1] 새글 master 19-10-20 14
질문 한번 더 질문해도 될까요..ㅠㅠ 새글첨부파일 16공대생 19-10-20 15
답변 답변글 답변 : 한번 더 질문해도 될까요..ㅠㅠ 새글 master 19-10-20 16
질문 아두이노 소스 질문있습니다.댓글[1] 새글 asd123 19-10-20 18
질문 아트메가128>인터럽터를 질문 입니다. 새글 세계제일초보 19-10-20 17
게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기