BASIC4MCU | 질문게시판 | MP3 모듈 질문있습니다.
페이지 정보
작성자 초짜 작성일2019-12-06 18:14 조회3,610회 댓글1건본문
DFPplay 모듈을 사서 하고 있는데 얘가 작동을 안하네요,,
코드상 문제만 있는지 봐주실수 있으신가요?
#include <mega128a.h>
#include <delay.h>
char default_buffer[10] = {0x7E, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF}; // Default Buffer
volatile char mp3_cmd_buf[10] = {0x7E, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF};void display_OP();
void mp3_send_cmd(char cmd, char MSB, char LSB);
void USART0_Transmit( char data );
int MP3_checksum (void);void main(void)
{
UCSR0A = 0x0;
UCSR0B = 0x18;
UCSR0C = 0x06;
UBRR0H = 0;
UBRR0L = 103;
display_OP();
while (1)
{
// Please write your application code here
mp3_send_cmd(0x12,0,1); delay_ms(5000); // 0001.mp3 Play
}
}
void display_OP(){
mp3_send_cmd(9,0,2);delay_ms(10);
mp3_send_cmd(6, 0, 0x1E); delay_ms(10);
}
void mp3_send_cmd(char cmd, char MSB, char LSB){
int i;
int checksum;
mp3_cmd_buf[3] = cmd;
mp3_cmd_buf[5] = MSB;
mp3_cmd_buf[6] = LSB;
//volatile INT8 mp3_cmd_buf[10] = {0x7E, 0xFF, 0x06, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0xEF};
checksum = MP3_checksum();
mp3_cmd_buf[7] = ((checksum >> 8) & 0x00FF);
mp3_cmd_buf[8] = (checksum & 0x00FF);
for( i=0; i< 10; i++){
USART0_Transmit(mp3_cmd_buf[i]);
mp3_cmd_buf[i] = default_buffer[i];
}
}
int MP3_checksum (void)
{
int sum = 0;
int i;
for (i=1; i<7; i++) {
sum += mp3_cmd_buf[i];
}
return -sum;
}
void USART0_Transmit( char data )
{
// Wait for empty transmit buffer
while (!( UCSR0A & 0x20 ) ) // (1<<UDRE)
UDR0 = data;
}
댓글 1
조회수 3,610master님의 댓글
master 작성일
라이브러리의 예제로 구동해서 제대로 동작하지 않으면
선연결 문제가 있든지
전원에 문제가 있든지
모듈이 고장난 경우입니다.
예제를 몇종류 받아서 동작시켜보세요