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

 
 
> Работа printf(), Помогите кто чем сможет
fmdost
сообщение Sep 21 2007, 21:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Доброго времени суток Уважаемые.
Подскажите как настроить printf() IAR в меге64? Не понял как задавать номер порта, и надо ли разрешать TXCIEx UDRIE?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Sep 21 2007, 22:02
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Достаточно написать свой putchar() совместимый с прототипом:
int putchar(int ch)
Go to the top of the page
 
+Quote Post
fmdost
сообщение Sep 21 2007, 23:01
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(defunct @ Sep 22 2007, 02:02) *
Достаточно написать свой putchar() совместимый с прототипом:
int putchar(int ch)

То-же самое написано в мануале. В С Я новичок. Обьясните пожалуйста чайнику про этот прототип?
Почему есть возвращаемое значение? И почему putchar(int ?) а не char?
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 21 2007, 23:19
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Т.Достоевский @ Sep 22 2007, 02:01) *
а не char?

Для AVR было бы лучше char, но низя, т.к. по стандарту int, и прототип этот уже объявлен в stdio.h, его вызывает функция printf при печати символов. (по крайней мере в IAR'е так).
Цитата
Почему есть возвращаемое значение?

чтобы возвращать код ошибки. putchar предназначен для вывода символов в любое последовательное устройсво вывода, например в файл. Как пример кода ошибки может быть - нет доступа/устройство не готово и т.п., но этим можно пренебречь.

простейший вариант putchar для отправки символов по UART'у может быть таким:

Код
int putchar(int ch)
{
    while( !(UCSRA & (1 << UDRE) ) );
    UDR = ch;
    return 0;
}
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 22 2007, 00:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(defunct @ Sep 22 2007, 05:19) *
простейший вариант putchar для отправки символов по UART'у может быть таким:

Код
int putchar(int ch)
{
    while( !(UCSRA & (1 << UDRE) ) );
    UDR = ch;
    return 0;
}

Вообще-то putchar при нормальной операции должен возвращать тот же символ, что и в аргументе указан. А EOF возвращает только в случае НЕуспешной операции. Цитата из стандарта ANSI C (C99)
Цитата
7.19.7.9 The putchar function
Synopsis
1 #include <stdio.h>
int putchar(int c);
Description
2 The putchar function is equivalent to putc with the second argument stdout.
Returns
3 The putchar function returns the character written. If a write error occurs, the error
indicator for the stream is set and putchar returns EOF.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 14:19
Рейтинг@Mail.ru


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