Для форматированного вывода куда угодно в IARe под AVR (пробовал в 2.23, 4.10, 411)можно использовать следуюшие финты ушами: - определяешь функцию для вывода байта туда куда тебе нужно, например в UART (mega 32), но можно куда угодно (я прикручивал для вывода на LCD, на термопринтер, в UART одном проекте) void PC_TX(uchar ch) { UCSRA=b01000000; UDR=ch; while(!(UCSRA & b01000000)); }
- определаяшь функцию для подстановки в библиотечную функцию _formatted_write_P, которая собственно и делает форматированный вывод (строка хранится во флеш). Нужно подключить библиотеку #include <iccutl_p.h> static void put_one_char(char ch, void *dummy) { PC_TX(ch); } - а вот функция, вызываемая в проекте для форматированного вывода. Если хочешь в одном проекте делать форматированный вывод на разные железяки, то объявляй функции типа printk, put_one_char,PC_TX, только с разными именами void printk(char flash *format, ...) { va_list ap; va_start (ap, format); _formatted_write_P(format, put_one_char, (void *) 0, ap); va_end (ap); }
а вот пример вызова: unsigned int a; printk((char flash*)"Сообщение %u",a);
|