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

 
 
 
Reply to this topicStart new topic
> как в IAR AVR переопределить getchar, подцепить scanf к UARTU
Seregio
сообщение Jul 29 2009, 09:33
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 3-06-09
Пользователь №: 49 874



в IAR перерепределяю функцию putchar и все работает.
начинаю переписывать getchar как прописано в EWAVR_CompilerReference.pdf
выкидывает ошибку Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\seregio\Мои документы\Release\Obj\main.r90 ) redefined in module.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 29 2009, 10:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Seregio @ Jul 29 2009, 12:33) *
выкидывает ошибку Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\seregio\Мои документы\Release\Obj\main.r90 ) redefined in module.

И что, так текст ошибки и оборван, или Вы не скопипастили правильно?
Как функция getchar в хэдере записана?
Как файлы включаются?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Seregio
сообщение Jul 29 2009, 10:49
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 3-06-09
Пользователь №: 49 874



Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\seregio\Мои документы\Release\Obj\main.r90 ) redefined in module
?getchar ( L:\Program Files\IAR Systems\Embedded Workbench Evaluation 5.3\avr\LIB\DLIB\dlAVR-3s-ec_mul-64-n.r90 )
Error while running Linker

в хедере прописана стандартно: __INTRINSIC int getchar(void); т.е. ничего не трогал
printf - работает без замечаний, scanf ругается

код

#include <iom128.h>
#include <stdio.h>
#include <intrinsics.h>

int putchar(int c)
{
while ( !UCSR0A_UDRE0 ){};
UDR0 = c; return c;
}
int getchar(void)
{
while ( !(UCSR0A_RXC0) ){}
return UDR0-1;
}

void main (void)
{
float x;

DDRB_DDB0=1; PORTB_PORTB0 = 0;
UCSR0A=0x00; UCSR0B=0x18; UCSR0C=0x86; UBRR0H=0x00; UBRR0L=0x33;

scanf("%f", &x);
printf("X = %f ", x);

}
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 31 2009, 13:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Seregio @ Jul 29 2009, 13:49) *
в хедере прописана стандартно: __INTRINSIC int getchar(void); т.е. ничего не трогал
printf - работает без замечаний, scanf ругается

Сейчас нет компилятора AVR под рукой, на MSP-шном все компилируется.
Можен что-то не то в свойствах проекта?
Но тут ничего не могу уточнить, scanf практически не использую, так как у меня событийная обработка, и клавиши считываются в фоне.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
D1ma
сообщение Nov 16 2009, 13:29
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



Уменя таже проблема и printf не работает как надо, выводит только первый символ (попадает в putchar только один рас)

Код
#include <stdio.h>
#include "wh2004.h"

wh2004 lcd;
int putchar(int c)
{
  lcd.printChar(c);
  return 1;
}
int getchar()
{
  return 0;
}
int main()
{
  printf("Hello world!");
  printf("Hello world!");
  

  return 0;
}


Выводит :
Цитата
HH



с printf разобрался.
putchar должна возврачать тотже символ, что и принемает
Код
int putchar(int c)
{
  lcd.printChar(c);
  return c;
}


а scanf дает ошибку
Цитата
Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\D!m@\Ðàáî÷èé ñòîë\USA\project\boot\Debug\Obj\main.r90 ) redefined in
module ?getchar ( C:\Program Files\IAR Systems\Embedded Workbench Evaluation 5.3\avr\LIB\DLIB\dlAVR-3s-ec_mul-f.r90 )
Error while running Linker
Go to the top of the page
 
+Quote Post

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

 


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


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