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

 
 
 
Reply to this topicStart new topic
> Это глюк компилятора? (CVAVR), потеря одного параметра
invertor79
сообщение Apr 29 2007, 18:13
Сообщение #1


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

Группа: Свой
Сообщений: 97
Регистрация: 25-04-06
Из: Краснодар
Пользователь №: 16 451



Писал следующую функцию (выводит измеренное АЦП напр. на индикатор):

Код
void lcd_print_adc_level_volt(uchar y, uchar x)
{
    uchar str[4];
    
    ftoa(ADC_Read(CH_2)*ADC_V, 2, str);
    
    print_string(y, x, str);
    
    print_char(y, x+CHAR_W*4, 'V');
}


в этом случае параметр x всегда равен 0 оказывается, параметр y передается нормально.

Переписал так:
Код
void lcd_print_adc_level_volt(uchar y, uchar x)
{
    uchar str[4];
    uchar temp;

            temp = x;

    ftoa(ADC_Read(CH_2)*ADC_V, 2, str);
    
    print_string(y, temp, str);
    
    print_char(y, temp+CHAR_W*4, 'V');
}


Всё стало работать как надо blink.gif

Такое впечатление, что ftoa портит параметр x, хотя никаким боком его не пользует. От чего это может быть?

P.S. (пользую CVAVR 1.24.8d Prof.)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 29 2007, 19:38
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(invertor79 @ Apr 29 2007, 17:13) *
Писал следующую функцию (выводит измеренное АЦП напр. на индикатор):
Код
void lcd_print_adc_level_volt(uchar y, uchar x)
{
    uchar str[4];
    ftoa(ADC_Read(CH_2)*ADC_V, 2, str);
    print_string(y, x, str);
    print_char(y, x+CHAR_W*4, 'V');
}


Такое впечатление, что ftoa портит параметр x, хотя никаким боком его не пользует. От чего это может быть?

P.S. (пользую CVAVR 1.24.8d Prof.)
А ты уверен, что ftoa не 5 байт в массив str[] пишет?
Может, как раз концевой "0" и попадает в x


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 29 2007, 20:08
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Или размер стека недостаточен.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
invertor79
сообщение Apr 29 2007, 21:03
Сообщение #4


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

Группа: Свой
Сообщений: 97
Регистрация: 25-04-06
Из: Краснодар
Пользователь №: 16 451



Цитата(ReAl @ Apr 29 2007, 20:38) *
А ты уверен, что ftoa не 5 байт в массив str[] пишет?
Может, как раз концевой "0" и попадает в x


В точку! Задал str[5], и всё стало нормально.
Ещё раз хелп на кодевижн посмотрел, там нет ничего об этом.
И всё-таки, это глюк компилятора, или так и должно быть (оптимизацию отключал, не помогало)?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 30 2007, 00:16
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(invertor79 @ Apr 29 2007, 22:03) *
В точку! Задал str[5], и всё стало нормально.
Ещё раз хелп на кодевижн посмотрел, там нет ничего об этом.
И всё-таки, это глюк компилятора, или так и должно быть (оптимизацию отключал, не помогало)?

это глюк пользователя стандартной С библиотеки
хелп нужно курить не на компилятор а на библиотеку
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 30 2007, 01:07
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Apr 30 2007, 00:16) *
это глюк пользователя стандартной С библиотеки
хелп нужно курить не на компилятор а на библиотеку

Ничего курить по ни по библиотекам ни по компиляторам не надо - стриг он и в африке стринг - нулем кончается.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 30 2007, 01:31
Сообщение #7


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Apr 30 2007, 02:07) *
Ничего курить по ни по библиотекам ни по компиляторам не надо - стриг он и в африке стринг - нулем кончается.

ну все-таки в C вроде как нет типа String smile.gif
так что курить нужно таки в сторону стандартных С библиотек smile.gif

или я чего-то недопонимаю ?
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 30 2007, 02:36
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(singlskv @ Apr 30 2007, 00:31) *
ну все-таки в C вроде как нет типа String smile.gif

В C есть понятие "строковой литерал"

"Строковые литералы

Синтаксис: "символы"["символы"]...

Строковый литерал это последовательность символов из представительной таблицы символов, которая заключена в двойные цитатные скобки. Например, строковый литерал может быть таким:

"This is f string literal."

....
...

Строковые литералы имеют тип массива char (char[]). Это значит, что строка это массив элементов типа char. Число элементов массива равно числу символов в строке плюс один для заканчивающего пустого символа. "

Так что курить кроме стандарта языка С ничего не надо.
Go to the top of the page
 
+Quote Post

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

 


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


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