Форматирование символов на последовательном выводе! - PullRequest
1 голос
/ 20 июля 2009

Я подключаю SD-карту к ATmega128, используя EFSL. Карта инициализируется, но я получаю сообщение об ошибке «Неизвестная ошибка 0xff (см. Sandisk docs p5-13)» ... на выходе последовательного порта.

Это еще не все, я использовал sprintf для формирования строк, которые я отображаю на последовательном порту. Загадочная вещь, я также получаю фактические символы форматирования, такие как "% 02d" на выходе! Я думаю, что мое приложение само падает. Я могу дать свой исходный код, но он слишком большой. Если кто-то захочет посмотреть, я скопирую и вставлю его сюда.

Я также проверил документы по sandisk p5-13, но не могу понять ...

Мне нужна помощь в этом, ребята ... Пожалуйста, дайте мне знать, если кто-нибудь знает об этом Thanxs ...

Ответы [ 2 ]

1 голос
/ 21 июля 2009

Не знаю как, но проблема была решена, когда я использовал другую карту. Я попробовал две карты 1/2 ГБ с форматированием FAT32; оба не работали, но работала карта канона 16 МБ с форматированием FAT12. Я пытаюсь это выяснить. Я отправлю ответ, если найду его, В любом случае, спасибо, ребята ...

1 голос
/ 20 июля 2009

Я написал код для ATmega8 и написал свою собственную функцию 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); 
}
...