Страница 94 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт ноя 05, 2010 22:16:32
Modest
Неужели мой вопрос настолько глуп что не достоин внимания....

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт ноя 05, 2010 22:27:49
Барсик
Modest писал(а):Почему, и как можно это изменить...
Есть подозрение, что это такой сорт компилятора. Возможно, из-за того, что задержка в микросекундах, т.е. довольно маленькая, компилятор не хочет подставлять туда переменную. Скорее всего, это изменить невозможно.
Лично я не использую библиотечную функцию задержки, а делаю собственную, на таймере.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт ноя 05, 2010 22:46:58
Modest
нет, путей замены этой библиотечки конечно много, просто было интересно почему, и были подозрения что возможно это только у меня.
Спасибо.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт ноя 05, 2010 23:06:14
ARV
Барсик писал(а):Поэтому, я напишу вот так, и будет счастье: var = ((long int)a) *((long int)b) / 1000;
достаточно писать var = (long int)a * b / 1000; :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб ноя 06, 2010 09:38:15
ValBag
Барсик писал(а):
ARV писал(а):а если b = 50 ???
Будет жопа ! В смысле, 34.
А не -31?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб ноя 06, 2010 11:39:30
Барсик
Нет. У меня переменные объявлены как unsigned :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб ноя 06, 2010 11:56:54
Gudd-Head
ARV писал(а):в том-то и дело, нифига не получается... как вы думаете, чему будет равна переменная var в следующем коде:

Код: Выделить всё

int a = 2000;
int b = 20;
int var = a * b / 1000;
если вы думаете, что 40 - вы не правы! результат хоть и влезает в int, но, увы, будет удивительным образом равным -25
Опять же, к сожалению, проверить смогу только в понедельник. Но подозреваю, что с "простым" int так и получится. Хотя...

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб ноя 06, 2010 15:47:43
ARV
Gudd-Head писал(а):Опять же, к сожалению, проверить смогу только в понедельник. Но подозреваю, что с "простым" int так и получится. Хотя...
есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб ноя 06, 2010 16:21:52
avreal
Ну почему же...
Можно проверить конкретный компилятор на соответствие этим правилам :)))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб ноя 06, 2010 22:53:18
Jack_A
ARV писал(а):есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.
Не скажу насчет этого конкретного случая, с микроконтроллерным 'С' дел не имел, а вот с ПК-шным были хохотунчики. Давно работающую прогу откомпилил на соседнем компе - и полный затык. Оказалось, в настройках компилятора у меня по умолчанию char unsigned, а на другом наоборот, поэтому генерится совсем другой код. С тех пор завел правило: забудь Фортран, не полагайся на умолчание и объявляй все, что только можно.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн ноя 08, 2010 10:40:12
Gudd-Head
Барсик писал(а):А я объявлю переменные как unsigned int и буду прав :) Нахрен мне старший разряд отдавать под знак, когда у меня арифметика беззнаковая :)
С unsigned тоже получается -25 (FFE7)
ARV писал(а):есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.
Да, наверное, проверять смысла не было. В любом случае, все с чего-то начинали :)
avreal писал(а):я бы вычислял не

Код: Выделить всё

    (ADC0 * 957) / 1000
а

Код: Выделить всё

    (ADC0 * 245) / 256
Вменяемый компилятор деление на 256 заменит на несколько пересыланий байт по регистрам. Кода займёт меньше, чем вызов процедуры деления.
avreal, действительно с делением именно на 256 размер кода сократился с 232 до 140 слов :)) Значит, у меня вменяемый компилятор :)))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт ноя 09, 2010 12:09:30
demonchik
Хлопцы!!!! всем мяу!!!! доделал я почти свой осцил!!! но загвоздка - как присвоить елементу массива число? у меня не получается! должно быть что то вроде этого :

unsigned char koordy[];

while(что-то)
{
y=какое-то_выражение;
koordy=y;
i++;
}

но не работает!!! помогите пожалуйста :cry:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт ноя 09, 2010 12:13:37
ARV
ну так размерность массива-то надо задавать :)
unsigned char koordy[32]; // тут может быть 32 разных байта!

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср ноя 10, 2010 17:33:45
Сериг
кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт ноя 11, 2010 21:53:23
andrey_artemov
Сериг писал(а):кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...
Используй ШИМ и будет тебе счастье !

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт ноя 11, 2010 22:13:51
Сериг
andrey_artemov писал(а):
Сериг писал(а):кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...
Используй ШИМ и будет тебе счастье !
я понимаю что шим (PWM) дайте плз пример. :?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт ноя 11, 2010 23:12:57
andrey_artemov
Ну вот пример, регулируется с помощью кнопки, или переменника
посмотри, всё поймёшь...

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт ноя 11, 2010 23:35:03
Сериг
andrey_artemov писал(а):Ну вот пример, регулируется с помощью кнопки, или переменника
посмотри, всё поймёшь...
сенк,а можете подсказать,как сделать что бы при замыкании порта на минус включался режим плавного разгорания к примеру за 5 сек он дожен разгорется...

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт ноя 12, 2010 00:01:03
andrey_artemov
Лови ....

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт ноя 12, 2010 14:55:57
Сериг
andrey_artemov писал(а):Лови ....
благодарю!