AVR Studio6 에서
UART나 LCD를 사용하는데 함수를 다 작성해야하는 귀찮은 점이 있는데
(codevision은 다 있어서 편했는데 ㅠㅠ)
이걸 printf나 sprintf 로 연결할 수 있는 방법이 있다
일단 sprintf를 사용하기 위해선
프로젝트 속성 -> Toolchain -> AVR/GNU Linker -> Libraries 에서
libprintf_fit 을 추가해 준다.
그리고
프로젝트 속성 -> Toolchain -> AVR/GNU Linker -> General 에서
Link Statically (-Wl, -static)과
Use vprintf library (-Wl, -u, vfprintf)
를 체크해 준다.
그 후에 sprintf를 사용하면 float 까지 잘 나오는 모습을 확인할 수 있다..
그리고 UART 또는 CLCD를 사용하는데 매번 함수 짜기도 귀찮고
printf의 막강한 성능을 구현하고 싶다면
(근데 실제로 printf는 그닥 좋은 함수가 아니라는 얘기가..)
http://cafe.naver.com/carroty/44434
여기에 설명되어 있다.
1 2 3 4 5 | FILE *fpStdio; FILE *fpLCD; fpStdio = fdevopen(putChar1, getChar1); fpLCD = fdevopen(LCD_data, NULL); | cs |
일단 main문 안에 이런식으로 선언 후
1 2 | fprintf(fpStdio, "hahahahahahahaha%f\n",pi); fprintf(fpLCD, "%f", pi); | cs |
이런식으로 필요한 곳에 사용하면 된다.
기존에 잘 알려져 있는 printf 사용 방법보다 이 방법이 좀 더 사용하기 편해 보인다 생각해서
이 방법을 선택했음.
다만 UART 통신에 사용하는거엔 문제가 없는데
CLCD에 사용함에 있어 약간의 문제가 있다
LCD_data라는 함수는 LCD_string 이란 함수에 연결되어 있는 문자 하나만 보내는 함수인데
'\n' 이라던가 LCD Clear가 안되는 등의 문제점이 있다.