Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт ноя 05, 2010 22:16:32
Неужели мой вопрос настолько глуп что не достоин внимания....
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Есть подозрение, что это такой сорт компилятора. Возможно, из-за того, что задержка в микросекундах, т.е. довольно маленькая, компилятор не хочет подставлять туда переменную. Скорее всего, это изменить невозможно.Modest писал(а):Почему, и как можно это изменить...
достаточно писать var = (long int)a * b / 1000;Барсик писал(а):Поэтому, я напишу вот так, и будет счастье: var = ((long int)a) *((long int)b) / 1000;
А не -31?Барсик писал(а):Будет жопа ! В смысле, 34.ARV писал(а):а если b = 50 ???
Опять же, к сожалению, проверить смогу только в понедельник. Но подозреваю, что с "простым" int так и получится. Хотя...ARV писал(а):в том-то и дело, нифига не получается... как вы думаете, чему будет равна переменная var в следующем коде:если вы думаете, что 40 - вы не правы! результат хоть и влезает в int, но, увы, будет удивительным образом равным -25Код: Выделить всё
int a = 2000; int b = 20; int var = a * b / 1000;
есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.Gudd-Head писал(а):Опять же, к сожалению, проверить смогу только в понедельник. Но подозреваю, что с "простым" int так и получится. Хотя...
Не скажу насчет этого конкретного случая, с микроконтроллерным 'С' дел не имел, а вот с ПК-шным были хохотунчики. Давно работающую прогу откомпилил на соседнем компе - и полный затык. Оказалось, в настройках компилятора у меня по умолчанию char unsigned, а на другом наоборот, поэтому генерится совсем другой код. С тех пор завел правило: забудь Фортран, не полагайся на умолчание и объявляй все, что только можно.ARV писал(а):есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.
С unsigned тоже получается -25 (FFE7)Барсик писал(а):А я объявлю переменные как unsigned int и буду правНахрен мне старший разряд отдавать под знак, когда у меня арифметика беззнаковая
Да, наверное, проверять смысла не было. В любом случае, все с чего-то начиналиARV писал(а):есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.
avreal, действительно с делением именно на 256 размер кода сократился с 232 до 140 словavreal писал(а):я бы вычислял неаКод: Выделить всё
(ADC0 * 957) / 1000Вменяемый компилятор деление на 256 заменит на несколько пересыланий байт по регистрам. Кода займёт меньше, чем вызов процедуры деления.Код: Выделить всё
(ADC0 * 245) / 256
Используй ШИМ и будет тебе счастье !Сериг писал(а):кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...
я понимаю что шим (PWM) дайте плз пример.andrey_artemov писал(а):Используй ШИМ и будет тебе счастье !Сериг писал(а):кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...
сенк,а можете подсказать,как сделать что бы при замыкании порта на минус включался режим плавного разгорания к примеру за 5 сек он дожен разгорется...andrey_artemov писал(а):Ну вот пример, регулируется с помощью кнопки, или переменника
посмотри, всё поймёшь...
благодарю!andrey_artemov писал(а):Лови ....