이제 UART를 이용하여 AVR에서 printf() 함수를 사용할 수 있게 되었으니, 개발환경 구축 글에서 하고자 했던 "hello, world"라는 메시지를 컴퓨터 화면으로 출력하는 프로젝트를 만들어 보겠다. 물론 이미 앞의 글에서 printf()를 사용하여 문자를 출력하는 것을 해 보았기 때문에 굳이 "hello, world"를 출력해 보는 것을 따로 해 볼 필요는 없다. 그러나 이번 글은 단순히 printf를 이용해서 문자를 출력해 보는것이 목적이 아니라, uart관련된 코드를 별도의 c와 h파일로 분리 시켜, 이후에 진행 되는 프로젝트에서 쉽게 재활용할 수 있는 방법에 대해서 설명하기 위하여 이번 프로젝트를 진행하게 되었다. 먼저 uart.h 파일을 다음과 같이 만든다. #define UART_R..
앞의 글에서 my_printf()를 이용하여 printf() 대신 사용할 수 있는 방법에 대해서 알아보았다. 그러나 실제 프로젝트를 진행하다 보면 이미 기존에 수행했던 코드를 참조하거나 인터넷에서 찾은 오픈소스를 재활용하게 되는 경우가 상당히 많은데, 그 안에 들어있는 printf() 함수를 모두 my_printf()함수로 대체 하여야 된다. #define printf my_printf 물론 위와 같은 #define을 이용하면 간단히 대체할 수는 있다. 그러나 이번 글에서는 위와 같은 방법을 사용하여 printf를 사용하는 것이 아니라 진짜 printf를 사용하는 방법에 대해서 설명하도록 하겠다. 이미 앞에서도 한번 언급하였는데 printf() 함수는 stdout으로 데이터를 내 보내도록 되어 있다. 그..
UART를 이용하여 AVR에서 만든 문자열이 컴퓨터의 터미널에서 보여지는것을 확인하였다. 이번글에서는 I/O 레지스터에 있는 현재 값이나, 변수에 현재 어떤값이 있는지 알아보기 위하여 데이터를 문자열로 변환한 후 UART를 통하여 내 보내는 방법에 대해서 설명하도록 하겠다. printf()함수를 사용하면 좋은데 지금 당장은 사용할 수 없으므로 다른 방법을 이용하여 printf()를 대신하여야 한다. 가장 쉽게 사용할 수 있는 것이 sprintf()이다. printf() 함수는 인자로 들어오는 값을 stdout으로 내보내는 동작을 하고, sprintf에는 인자로 제공하는 char형 배열에 값을 변환하여 넣어주는 기능을 한다. 따라서 sprintf를 수행한 후 배열에 저장된 문자열을 uart_puts()를 ..