많은 임베디드 시스템은 사람의 개입없이 자동으로 미리 설정된 조건에 따라 동작되도록 만들어져 있다. 그러나, 또다른 많은 임베디드 시스템은 사람의 직접적인 조작을 필요로 하기도 한다.임베디드 시스템에 적용할 수 있는, 사용자의 입력을 받아 들이는 방법과 결과를 알려주는 방법은 셀 수 없이 많겠지만, 그 중에서도, 임베디드 시스템 개발 단계에서 가장 쉽고 유용하게 선택할 수 있는 기능인 UART를 통한 사용자 인터페이스에 대한 설명을 진행해 보도록 하겠다.지금까지는 주로 보드의 동작 상태를 확인하거나 디버거 메시지를 출력하기 위하여 UART를 사용하였다면, 앞으로 설명할 내용들은 사용자의 입력을 어떤 방식으로 처리할 것인지에 대한 내용을 다룰 것이므로 알아두면 유용하게 활용할 수 있을 것이다.먼저 확인할 ..
VS1003 자체적으로 제공하는 테스트 모드를 이용하여 sine파를 생성 시키는데 문제 없음을 확인한 다음, 실제 mp3파일 일부분을 추출해서 스피커로 재생시켜 보도록 하겠다. const unsigned char MP3_DATA[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0..
앞의 글에서 vs1003이 정상적으로 동작될 수 있는지 확인해 보기 위하여 특정 sine파를 생성해 보았다. 또한 적절한 음량 설정이 되는지도 같이 확인해 보았다.이번 글에서는 사용자 입력을 받아서 주파수값과 볼륨 크기를 변경 시켜 보는 기능을 구현해 보기로 하겠다.먼저 UART를 통한 사용자 입력을 제대로 받아들이는지 확인해 보는 코드부터 만든다. void loop(void) { switch (getc()) { case 'v': printf("Volume Down 1\n"); break; case 'V': printf("Volume Up 1\n"); break; case '': printf("Volume Up 10\n"); break; case 'i': printf("FsIdx Down\n"); bre..