реклама на сайте
подробности

 
 
> Согласование переменных разных типов
GoodNews
сообщение Feb 3 2010, 22:22
Сообщение #1


Частый гость
**

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



Если есть одна переменная у которой тип "char", вторая переменная типа "uint16_t" на которой реализован счётчик. Как их представить в переменной типа "char" для последующей записи в порт LCD?

МК - mega16
Компилятор - AVR-GCC
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Feb 7 2010, 13:16
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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]), но к зависанию это не имеет отношения.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
GoodNews
сообщение Feb 7 2010, 15:49
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 7 2010, 17:05
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 - какая разница? У меня проекты собираются и там, и там.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
GoodNews
сообщение Feb 7 2010, 17:51
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 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 в общем. Спасибо!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016