2009-07-20 3 views
1

저는 EFSL을 사용하여 ATmega128에 SD 카드를 인터페이스하고 있습니다. 카드가 초기화되지만 직렬 포트 출력에서 ​​"알 수없는 오류 0xff (sandisk docs p5-13 참조)"오류가 발생합니다.직렬 출력에서 ​​문자 서식 지정!

그게 전부는 아니지만, 저는 'sprintf'를 사용하여 직렬 포트에 표시되는 문자열을 구성했습니다. 의문의 여지는, 출력에 "% 02d"와 같은 실제 서식 지정 문자를 얻는 것입니다! 내 응용 프로그램 자체가 충돌하는 것 같아요. 내 소스 코드를 제공 할 수는 있지만 너무 큽니다. 누구든지보고 싶다면 여기에 붙여 넣으십시오.

내가도하지만 난 그것을 알아낼 수 없습니다 p5-13 샌 디스크의 문서를 확인했습니다

...

나는이 한 사람에 거 도움이 필요 해요 ... 나를 누구 경우 알려 주시기 바랍니다 이것에 관해서 무엇이든 알고있다 Thanxs ...

+0

나는 이것을 두 가지 질문으로 나누어야한다고 생각합니다. 하나는 sprintf 용이고 다른 하나는 SD 카드 용입니다. 두 가지 모두 관련 코드 스 니펫과 관련 문서 (게시판 회로도, "sandisk docs"등)에 대한 링크를 게시하십시오. – Gabe

+0

여기에 코드를 넣으려고했지만 너무 큽니다. 생성 된 .hex 파일은 28kB 바로 위에 있습니다. 하지만 당신은 'sprintf'에 관한 것이고, 나는 이것이 'sprintf'의 문제라고 생각합니다. sprintf가 그렇게하는 이유는 무엇입니까? 다른 사람이이 문제가 있었습니까 ??? –

답변

1

나는 ATmega8를위한 약간 부호를 쓰고 우연히 직렬 포트 here에 출력하는 나의 자신의 printf 함수를 썼다.

SerWrite 함수는 0으로 끝나는 부호없는 문자 배열을 직렬 포트로 전송하는 함수입니다.

#define SIZE_STATUS 80 

void ser_printf(const char *fmt, ...) { 
    va_list args; 
    uchar STATUS[SIZE_STATUS]; 
    va_start(args, fmt); 
    uchar s = (uchar) vsnprintf(STATUS, SIZE_STATUS, fmt, args); 
    va_end(args); 
    SerWrite(STATUS, s); 
} 
1

다른 카드를 사용할 때 어떻게 해결되었지만 문제가 해결되었습니다. 나는 FAT32 포맷으로 된 2 개의 1/2 GB 카드를 시험해 보았다. 둘 다 작동하지 않았지만 작동 한 카드는 FAT12 형식의 16MB 캐논 카드였습니다.이 문제를 파악하려고합니다. 어쨌든 고마워요.