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

 
 
 
Reply to this topicStart new topic
> Вопрос к знатокам по stdio.h
megaloki
сообщение Nov 11 2006, 13:28
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 28-09-05
Пользователь №: 9 057



Извините если что но все же. решыл попробовать переназначить ввод-вывод через функции printf scanf

Переписал либы так:
size_t __write(int Handle, const unsigned char * Buf, size_t Bufsize)
{
int nChars = 0;
/* Check for stdout and stderr
(only necessary if file descriptors are enabled. */

if (Handle != 1 && Handle != 2)
{
return -1;
}

for (/*Empty */; Bufsize > 0; --Bufsize)
{
lcd_putchar(Buf[nChars]);
nChars++;
}
return nChars;

}

size_t __read(int Handle, unsigned char * _Buf, size_t size)
{
int nChars = 0;

/* Check for stdout and stderr
(only necessary if file descriptors are enabled. */
/*
if (Handle != 1 && Handle != 2)
{
return -1;
}
*/
for (/* Empty */; size > 0; --size)
{
int c = read_char_USART1();
if (c < 0){
_Buf[nChars]=0;
break;
}

*_Buf++ = c;
++nChars;
}
return nChars;
}

В функции main() написал так:
__no_init char buffer [MAX_BUFFER_LENGTH + 1];
int i;

for(;;)
{

lcd_clear();
temp=scanf("%i",&i);
if (temp==0) scanf("%s",buffer);
printf("%i",i);
i=0;buffer[0]=0;
lcd_gotoxy(0,1);
printf("sca=%i",temp);
Delay_ms(1000);
}

Функция ввода читает символы с юсарта и выводит их на ЖК дисплей. Вроде все пашет но как только я ввожу число из 3 однаковых цифр (например 222) то на дисплей выводится 22 и вывод прекращаэтся тоесть если я ввожу 1234 то все ок.

Подскажыте в чом косяк... help.gif help.gif help.gif


--------------------
Было бы железо софт напишем
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 12 2006, 18:19
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Извините за оффтоп, вопрос почти по теме:
В CrossWorks есть такая волшебная функция debug_printf, которая выводит текст в окошечко в CW через JTAG. Можно ли подобное организовать в среде IAR? rolleyes.gif


--------------------
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Nov 12 2006, 19:58
Сообщение #3


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

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(AVR @ Nov 12 2006, 22:19) *
Извините за оффтоп, вопрос почти по теме:
В CrossWorks есть такая волшебная функция debug_printf, которая выводит текст в окошечко в CW через JTAG. Можно ли подобное организовать в среде IAR? rolleyes.gif

Точно "почти по теме". В ИАРе для АВР можно было, думаю и для АРМов тоже есть. Но в таком случае будут замещены отлаживаемые низкоуровневые функции.
Go to the top of the page
 
+Quote Post
megaloki
сообщение Nov 12 2006, 23:05
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 28-09-05
Пользователь №: 9 057



w00t.gif Все всем спасибо проблема решылась. Просто при вводе с USART была слишком велика погрешность и при 3х однаковых посилках всплывал старшый бит..........


--------------------
Было бы железо софт напишем
Go to the top of the page
 
+Quote Post

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

 


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


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