이름은 거창한데,
간단하게 말하면 잘못 구성된 인터럽트 전송 방식에서의 문제점 이다.
void main()
{
while(1)
uart_handler();
}
void uart_handler()
{
if(send != recv) flush();
}
대략 이런 구조에서 단순하게 send와 recv로 전송할 데이터가 있는지만 확인하고
flush()를 이용해 uart tx finish interrupt를 통해 데이터를 지속적으로 보내려고 할경우
uart_handler()에 의해 루프를 도는중 지속적으로 flush를 함으로서 데이터가 몇바이트 깨지거나
순서가 바뀌는 것 같은 문제가 발생하기도 한다.
간단하고 당연한(?) 해결책은
전송이 시작되었고 전송중이라는 플래그를 두는 것.
간단하게 말하면 잘못 구성된 인터럽트 전송 방식에서의 문제점 이다.
void main()
{
while(1)
uart_handler();
}
void uart_handler()
{
if(send != recv) flush();
}
대략 이런 구조에서 단순하게 send와 recv로 전송할 데이터가 있는지만 확인하고
flush()를 이용해 uart tx finish interrupt를 통해 데이터를 지속적으로 보내려고 할경우
uart_handler()에 의해 루프를 도는중 지속적으로 flush를 함으로서 데이터가 몇바이트 깨지거나
순서가 바뀌는 것 같은 문제가 발생하기도 한다.
간단하고 당연한(?) 해결책은
전송이 시작되었고 전송중이라는 플래그를 두는 것.
'embeded > Cortex-M3 Ti' 카테고리의 다른 글
KEIL 프로그램의 stack 크기 증설을 위해 startup_rvmdk.S를 수정하기 (0) | 2012.06.30 |
---|---|
LM3S 내장 온도센서 계산하기(internal temperature sensor) (0) | 2012.06.28 |
Ti lm3s1968 arm cortex m3 i2c (0) | 2012.02.20 |
TI stellarisware / driverlib 기본설정 (uart예제) (4) | 2012.02.05 |
Cortex-M3 인터럽트 관련 문서 (0) | 2012.01.31 |