Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как в IAR AVR переопределить getchar
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Seregio
в 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.
Dog Pawlowa
Цитата(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 в хэдере записана?
Как файлы включаются?
Seregio
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);

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

Сейчас нет компилятора AVR под рукой, на MSP-шном все компилируется.
Можен что-то не то в свойствах проекта?
Но тут ничего не могу уточнить, scanf практически не использую, так как у меня событийная обработка, и клавиши считываются в фоне.
D1ma
Уменя таже проблема и 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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.