|
Согласование переменных разных типов |
|
|
|
 |
Ответов
|
Feb 7 2010, 13:16
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Если уж использовать в WinAVR printf, то тогда так: Код void lcd_putchar(char data); // то, что уже есть
int lcd_file_putc(char ch, FILE * stream) { (void) stream; lcd_putchar(ch); return 0; }
// аналогично создаём и для UART void uart_putchar(char ch); // он может вообще в кольцевой буфер помещать, ждать только если места нет int uart_file_putc(char ch, FILE * stream) { (void) stream; if(ch == '\n') uart_putchar('\r'); uart_putchar(ch); return 0; }
FILE lcd_file = FDEV_SETUP_STREAM(lcd_file_putc, 0, _FDEV_SETUP_WRITE); FILE uart_file = FDEV_SETUP_STREAM(uart_file_putc, uart_file_getc, _FDEV_SETUP_WRITE);
#define lcd_stream (&lcd_file); #define uart_stream (&uart_file);
fprintf_P( lcd_stream, PSTR("Freq %6.3fMHz"), freq);
fputs_P( PSTR("Hello!\n"), uart_stream); fprintf_P( uart_stream, PSTR("Freq %6.3fMHz"), freq); А для ЖКИ можно и вообще так: Код void lcd_printf_P(uint8_t x, uint8_t y, prog_char *fmt, ...) __attribute__((format(printf, 3, 4)));
void lcd_printf_P(uint8_t x, uint8_t y, prog_char *fmt, ...) { lcd_gotoxy(x,y);
va_list vl; va_start(vl, fmt); vfprintf_P( lcd_stream, fmt, vl); va_end(vl); }
lcd_printf_P(1, 5, PSTR("%6.3MHz"), freq); Раз уж платить увеличенным расходом кода, то хоть знать за что. Цитата(GoodNews @ Feb 7 2010, 14:30)  Если раскомментить и вызвать через функцию - виснет. Почему? Да так вроде всё нормально. Не вижу причины :-( Определять переменные в .h нехорошо (это я про char buf[16]), но к зависанию это не имеет отношения.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 7 2010, 15:49
|

Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 12-01-09
Из: Minsk (BY)
Пользователь №: 43 259

|
Цитата(ReAl @ Feb 7 2010, 15:16)  Если уж использовать в WinAVR printf Собственно я не WinAVR использую. Платформа Linux, ядро 2.6.28-17_x86-64, компилятор AVR-GCC, прогер - avrdude, программатор - AVRISP (JONIS+ в запасе), набор библиотек avr-libc.
|
|
|
|
|
Feb 7 2010, 17:05
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(GoodNews @ Feb 7 2010, 17:49)  Собственно я не WinAVR использую. Платформа Linux, ядро 2.6.28-17_x86-64, компилятор AVR-GCC, прогер - avrdude, программатор - AVRISP (JONIS+ в запасе), набор библиотек avr-libc. Да это я по привычке, конечно, имелись ввиду avr-gcc и avr-libc, а инсталлятором этого добра и средой для выполнения служат WinAVR+Windows или apt + Linux - какая разница? У меня проекты собираются и там, и там.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 7 2010, 17:51
|

Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 12-01-09
Из: Minsk (BY)
Пользователь №: 43 259

|
Цитата(ReAl @ Feb 7 2010, 19:05)  Да это я по привычке, конечно, имелись ввиду avr-gcc и avr-libc, а инсталлятором этого добра и средой для выполнения служат WinAVR+Windows или apt + Linux - какая разница? У меня проекты собираются и там, и там. Ну там сильно отличий наверное нету. Только библиотеки по-разному называются (ioavr.h против io.h насколько я помню). Но не принципиально. Я думаю что реализую через int, так как всё-таки работает не так, как хотелось бы. Пока попробую через int в общем. Спасибо!
|
|
|
|
Сообщений в этой теме
GoodNews Согласование переменных разных типов Feb 3 2010, 22:22 volodya Цитата(GoodNews @ Feb 4 2010, 00:22) Если... Feb 4 2010, 06:36 Палыч Цитата(GoodNews @ Feb 4 2010, 01:22) Как ... Feb 4 2010, 07:44 GoodNews Цитата(Палыч @ Feb 4 2010, 09:44) Вам - ч... Feb 4 2010, 08:54  Палыч Цитата(GoodNews @ Feb 4 2010, 11:54) Я хо... Feb 4 2010, 09:05   GoodNews Цитата(Палыч @ Feb 4 2010, 11:05) Ну, так... Feb 4 2010, 09:20    Палыч Цитата(GoodNews @ Feb 4 2010, 12:20) Тут ... Feb 4 2010, 09:52    rezident Цитата(GoodNews @ Feb 4 2010, 14:20) Тут ... Feb 4 2010, 13:18     GoodNews Цитата(rezident @ Feb 4 2010, 15:18) Да, ... Feb 4 2010, 16:12 GoodNews Решил попробовать использовать такой вариант кода ... Feb 5 2010, 12:09 Палыч Цитата(GoodNews @ Feb 5 2010, 15:09) Поче... Feb 5 2010, 13:31  GoodNews Цитата(Палыч @ Feb 5 2010, 15:27) Функция... Feb 5 2010, 14:02 ukpyr http://www.avrfreaks.net/index.php?name=PN...;high... Feb 5 2010, 17:17 GoodNews Цитата(ukpyr @ Feb 5 2010, 19:17) http://... Feb 5 2010, 17:48 ukpyr ЦитатаПроблема в sprintf(Str, "%4.6fKHz... Feb 5 2010, 19:06 GoodNews Цитата(ukpyr @ Feb 5 2010, 21:06) а что в... Feb 5 2010, 19:35 GoodNews На данный момент решён вопрос с отображение значен... Feb 6 2010, 17:29 GoodNews Вариант #2. В таком виде - работает. Если раскомме... Feb 7 2010, 12:30    ReAl Цитата(GoodNews @ Feb 7 2010, 19:51) Ну т... Feb 14 2010, 09:52 XVR Пока видна 1 ошибка - sizeof(buf) в hzToStr и main... Feb 8 2010, 11:01 GoodNews Цитата(XVR @ Feb 8 2010, 13:01) Пока видн... Feb 8 2010, 16:37 GoodNews 2ReAl:
понятно. т.е. размерность массива buf вычис... Feb 21 2010, 18:56
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|