|
Проблема с sscanf_P, или StringToInt |
|
|
|
Dec 21 2007, 07:38
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Для преобразования строки в целое число попробовал сделать так: Код sscanf_P(lcd_buf, "%d", &mn); printf_P("\n\rMONTH %d", mn); ................... sscanf_P(lcd_buf, "%d", &dt); printf_P("\n\rDATE %d", dt); .................... sscanf_P(lcd_buf, "%d", &yr); printf_P("\n\rYEAR %d", yr); rtc_set_time(0,min,hr,dy,dt,mn,yr-2000); Терминал честно выводит переменную yr= 2007. Точно так же делаю с другими переменными времени. Проблема в том, что эти переменные не пишутся в RTC. Вернее пишут, но 0. Точнее записалось только значение года ("2007").Хотя если явно инициализировать эти переменные какими-то значениеми или преобразовать с помощью ф-ции StrToInt(), то эти "какие-то"значения или результат ф-ции StrToInt() запишутся без проблем в RTC. В ф-ции rtc_set_time() каждое значение делается dec2bcd. В чем дело?
|
|
|
|
|
 |
Ответов
|
Dec 21 2007, 08:25
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561

|
Цитата(alux @ Dec 21 2007, 10:38)  Для преобразования строки в целое число попробовал сделать так: Код sscanf_P(lcd_buf, "%d", &yr); printf_P("\n\rYEAR %d", yr); rtc_set_time(0,min,hr,dy,dt,mn,yr-2000); Терминал честно выводит переменную yr= 2007. Точно так же делаю с другими переменными времени. Проблема в том, что эти переменные не пишутся в RTC. Вернее пишут, но 0. Точнее записалось только значение года ("7").Хотя если явно инициализировать эти переменные какими-то значениеми или преобразовать с помощью ф-ции StrToInt(), то эти "какие-то"значения или результат ф-ции StrToInt() запишутся без проблем в RTC. В ф-ции rtc_set_time() каждое значение делается dec2bcd. В чем дело? ...подробней можно? Покажите прототипы функций и как объявлены переменные
|
|
|
|
|
Dec 21 2007, 09:08
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(tag @ Dec 21 2007, 12:25)  ...подробней можно? Покажите прототипы функций и как объявлены переменные Переменные объявлены как глобальные. В компиляторе включена опция --string_literals_in_flash. void rtc_set_time(unsigned char second, unsigned char minute, unsigned char hour, unsigned char day, unsigned char date, unsigned char month, unsigned int year); int sscanf_P(const char *__s, PGM_P __format,…); int printf_P(PGM_P __format,…); Использую CLIB
|
|
|
|
Сообщений в этой теме
alux Проблема с sscanf_P Dec 21 2007, 07:38  tag Цитата(alux @ Dec 21 2007, 12:08) Перемен... Dec 21 2007, 12:44 sergik_vrn Цитата(alux @ Dec 21 2007, 10:38) Для пре... Dec 21 2007, 10:15 alux Цитата(sergik_vrn @ Dec 21 2007, 14:15) ч... Dec 21 2007, 10:41  sergik_vrn Цитата(alux @ Dec 21 2007, 13:41) Все ост... Dec 21 2007, 11:19 Dog Pawlowa Цитата(alux @ Dec 21 2007, 11:38) Проблем... Dec 21 2007, 12:17 alux Цитата(Dog Pawlowa @ Dec 21 2007, 16:17) ... Dec 21 2007, 13:21  tag Цитата(alux @ Dec 21 2007, 16:21) Весь ко... Dec 21 2007, 14:09   alux Цитата(tag @ Dec 21 2007, 18:09) Например... Dec 21 2007, 14:31  Сергей Борщ Цитата(alux @ Dec 21 2007, 15:21) Виноват... Dec 21 2007, 15:05   alux Цитата(Сергей Борщ @ Dec 21 2007, 19:05) ... Dec 21 2007, 15:13 Dron_Gus А scanf("%d") случайно не на int требует... Dec 21 2007, 18:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|