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

 
 
> Как приручить scanf ?, Пересброс мк
alux
сообщение Jul 26 2007, 07:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Необходимо инициализировать время в DS1388 (часы реального времени). В прилагаемом апноте это реализовано при помощи printf/scanf:
Код
printf("\nEnter the year (0-99): ");
scanf("%bx", &yr);
.......

Чтобы не забивать ОЗУ применил --string_literals_in_flash и добавил суффиксы _P в функции printf/scanf.
С printf_P все работает , а вот при попытке вставить scanf_P происходит переполнение стека. Увеличение CSTACK, RSTACK не спасает положения. Думаю что scanf("%bx", &yr); создает копию строки в ОЗУ. Или я ошибаюсь? Переменная yr - глобальная. Странное и то, что отдельно ds1388.c с функциями scanf_P при компиляции показывает:
Цитата
1 356 bytes of CODE memory (+ 6 bytes shared)
8 bytes of DATA memory

Т.е. ОЗУ не занято. Слышал, что вместо scanf можно использовать frmrd.c с необходимыми параметрами.
Если подключить к проекту frmrd.c , как компилятор разберется откуда использовать функцию scanf ?
И напоследок пару вопросов по сути не относящихся:
1) Что за модификатор формата "%bx" ?
2) Откуда берется переменная RI в функции disp_clk_regs ?
Апнот для ds1388 прилагаю.
Спасибо.
P.S. Может "%bx" - это банальная очепятка и должно быть "%dx" ?
Прикрепленные файлы
Прикрепленный файл  3482Fig01.zip ( 6.5 килобайт ) Кол-во скачиваний: 56
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spf
сообщение Jul 26 2007, 08:43
Сообщение #2


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Лучше делать через явный буфер и sscanf.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
alux
сообщение Jul 26 2007, 11:59
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(spf @ Jul 26 2007, 11:43) *
Лучше делать через явный буфер и sscanf.

Расскажите, пожалуйста, подробней, как осуществить форматированный ввод через заполнение буфера? А что, на счет остальных вопросов?
Go to the top of the page
 
+Quote Post



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

 


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


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