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

 
 
> Printf in USART on AtMega8 IAR compiler, не получается заставить работать на IAR компиляторе
west329_
сообщение Dec 20 2007, 12:24
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Ни как не получается заставить Printf печатать в UART под IAR. Пример брал из ICC компилятора, проверял всё на Proteus, что самое интересное IAR в своём симуляторе C-SPY печатает в терминал как надо, в реалии в UART симворы не выводит.



вот такой код


#
#define ENABLE_BIT_DEFINITIONS

#include <iom8.h>
#include <inavr.h>

#include <stdio.h>

//extern int _textmode;


int putchar(int c)
{
// if (_textmode && c == '\n')
putchar('\r');
//while ((USR & 0x20) == 0) // UDRE, data register empty
// ;
while ( !( UCSRA & (1<<UDRE)) );

UDR = c;
return c;
}

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0,0%)
/*
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
//UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x2F; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x18;
}*/


void uart0_init(void)
{
/* Set baud rate */
UBRRH = 0x00;
UBRRL = 0x2F;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}


int main( void )
{
uart0_init();
while(1)
{
putchar('1');
printf("dcvjkxcznhkvxncv");
}

return 0;
}
#
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
west329_
сообщение Dec 21 2007, 07:01
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



676038 был совершенно прав. оказывается надо определить прототип функции.

Ох уж эти платформеннонезависымые языки программирования.

Да с кварцем я погарячился, память подвела wink.gif

теперь всё заработало. Это теперь по аналогии надо наверно и прототим GetChar прописать
чтото похожее на это

int getchar(void)
{
while ((USR & 0x80) == 0) ;
return UDR;
}

только наверно надо getchar к прерыванию по RX подвязать ??? или как тогда эта процедура будет вызыватся, или она у них в библиотеках IAR уже гдето сидит ??



Теперь возник вопрос с кольцевым буфером, посоветуйте чтото по проще, я просто с таким никогда не сталкивался ?? и как его правильно прикрутить ?

Сообщение отредактировал west329_ - Dec 21 2007, 07:13
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Dec 21 2007, 09:00
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата(west329_ @ Dec 21 2007, 10:01) *
676038 был совершенно прав. оказывается надо определить прототип функции.


Ну на самом деле dimka76 указал на вашу ошибку!
Прототип в самом IAR прописан, просто если компилятор встречает описание функции, соотв. прототипу из библиотеки, то он уже берет не библиотечную функцию, а пользовательскую.

Цитата
Ох уж эти платформеннонезависымые языки программирования.

Не до конца разбираясь в сути, эту фразу можно употреблять для любой области знанийsmile.gif

Цитата
только наверно надо getchar к прерыванию по RX подвязать ??? или как тогда эта процедура будет вызыватся, или она у них в библиотеках IAR уже гдето сидит ??

Всё точно также как и c putchar. Putchar вызывается из printf, а getchar из scanf. Вы же не привязывали putchar к прерыванию!

Думаю вам надо немного приостановиться, и до конца разобраться как работает ваш printf!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- west329_   Printf in USART on AtMega8 IAR compiler   Dec 20 2007, 12:24
- - Странник   Цитата(west329_ @ Dec 20 2007, 16:24) Ни ...   Dec 20 2007, 12:29
- - Сергей Борщ   Цитата(west329_ @ Dec 20 2007, 14:24) что...   Dec 20 2007, 12:45
- - dimka76   Цитата(west329_ @ Dec 20 2007, 15:24) int...   Dec 20 2007, 12:52
- - west329_   это я пробовал все возможные варианты, часть из IC...   Dec 20 2007, 13:17
|- - zhevak   Цитата(west329_ @ Dec 20 2007, 18:17) ......   Dec 20 2007, 20:28
|- - 676038   Цитата(west329_ @ Dec 20 2007, 18:17) это...   Dec 21 2007, 04:15
|- - west329_   Цитата(_Sam_ @ Dec 21 2007, 13:00) Ну на ...   Dec 21 2007, 09:41
- - vesago   Типовой атмеловский пример   Dec 21 2007, 09:21
- - __nik__   Вот пример, проверил, работает без stdio выдает ва...   Dec 23 2007, 20:33
- - zhevak   Извините, не в тему! Слишком часто в жизни вс...   Dec 23 2007, 20:56
|- - rezident   Цитата(zhevak @ Dec 24 2007, 01:56) Надею...   Dec 23 2007, 21:34
- - zhevak   2 rezident: Спасибо, за замечания. На счет точек (...   Dec 23 2007, 22:16
- - west329_   Это форум по английскому языку ????   Dec 24 2007, 09:05
- - _Sam_   ЦитатаЕслиб этот прототип заработал сразу на юарт,...   Dec 24 2007, 14:42


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:48
Рейтинг@Mail.ru


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