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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Modest
Сверлит текстолит когтями
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

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

Сообщение Modest »

Неужели мой вопрос настолько глуп что не достоин внимания....
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Реклама
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

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

Сообщение Барсик »

Modest писал(а):Почему, и как можно это изменить...
Есть подозрение, что это такой сорт компилятора. Возможно, из-за того, что задержка в микросекундах, т.е. довольно маленькая, компилятор не хочет подставлять туда переменную. Скорее всего, это изменить невозможно.
Лично я не использую библиотечную функцию задержки, а делаю собственную, на таймере.
Реклама
Аватара пользователя
Modest
Сверлит текстолит когтями
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

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

Сообщение Modest »

нет, путей замены этой библиотечки конечно много, просто было интересно почему, и были подозрения что возможно это только у меня.
Спасибо.
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Барсик писал(а):Поэтому, я напишу вот так, и будет счастье: var = ((long int)a) *((long int)b) / 1000;
достаточно писать var = (long int)a * b / 1000; :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

Барсик писал(а):
ARV писал(а):а если b = 50 ???
Будет жопа ! В смысле, 34.
А не -31?
Реклама
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

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

Сообщение Барсик »

Нет. У меня переменные объявлены как unsigned :)
Реклама
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

ARV писал(а):в том-то и дело, нифига не получается... как вы думаете, чему будет равна переменная var в следующем коде:

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

int a = 2000;
int b = 20;
int var = a * b / 1000;

если вы думаете, что 40 - вы не правы! результат хоть и влезает в int, но, увы, будет удивительным образом равным -25

Опять же, к сожалению, проверить смогу только в понедельник. Но подозреваю, что с "простым" int так и получится. Хотя...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

Ну почему же...
Можно проверить конкретный компилятор на соответствие этим правилам :)))
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

ARV писал(а):есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.

Не скажу насчет этого конкретного случая, с микроконтроллерным 'С' дел не имел, а вот с ПК-шным были хохотунчики. Давно работающую прогу откомпилил на соседнем компе - и полный затык. Оказалось, в настройках компилятора у меня по умолчанию char unsigned, а на другом наоборот, поэтому генерится совсем другой код. С тех пор завел правило: забудь Фортран, не полагайся на умолчание и объявляй все, что только можно.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Барсик писал(а):А я объявлю переменные как unsigned int и буду прав :) Нахрен мне старший разряд отдавать под знак, когда у меня арифметика беззнаковая :)

С unsigned тоже получается -25 (FFE7)
ARV писал(а):есть вещи, проверять которые нет смысла - они как аксиомы, не требут доказательств. одна из таких вещей - правила преобразования типов при вычислениях Си.

Да, наверное, проверять смысла не было. В любом случае, все с чего-то начинали :)
avreal писал(а):я бы вычислял не

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

    (ADC0 * 957) / 1000
а

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

    (ADC0 * 245) / 256

Вменяемый компилятор деление на 256 заменит на несколько пересыланий байт по регистрам. Кода займёт меньше, чем вызов процедуры деления.

avreal, действительно с делением именно на 256 размер кода сократился с 232 до 140 слов :)) Значит, у меня вменяемый компилятор :)))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

Хлопцы!!!! всем мяу!!!! доделал я почти свой осцил!!! но загвоздка - как присвоить елементу массива число? у меня не получается! должно быть что то вроде этого :

unsigned char koordy[];

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

но не работает!!! помогите пожалуйста :cry:
радиоэлектроника - жизнь моя...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

ну так размерность массива-то надо задавать :)
unsigned char koordy[32]; // тут может быть 32 разных байта!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...
Аватара пользователя
andrey_artemov
Встал на лапы
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза
Контактная информация:

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

Сообщение andrey_artemov »

Сериг писал(а):кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...

Используй ШИМ и будет тебе счастье !
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

andrey_artemov писал(а):
Сериг писал(а):кто нить может подсказать как плавно включить светодиод?дайте плз образец у меня не получается...

Используй ШИМ и будет тебе счастье !

я понимаю что шим (PWM) дайте плз пример. :?
Аватара пользователя
andrey_artemov
Встал на лапы
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза
Контактная информация:

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

Сообщение andrey_artemov »

Ну вот пример, регулируется с помощью кнопки, или переменника
посмотри, всё поймёшь...
Вложения
shim.zip
(113.95 КБ) 197 скачиваний
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

andrey_artemov писал(а):Ну вот пример, регулируется с помощью кнопки, или переменника
посмотри, всё поймёшь...

сенк,а можете подсказать,как сделать что бы при замыкании порта на минус включался режим плавного разгорания к примеру за 5 сек он дожен разгорется...
Аватара пользователя
andrey_artemov
Встал на лапы
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза
Контактная информация:

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

Сообщение andrey_artemov »

Лови ....
Вложения
shimm1.zip
(50.92 КБ) 214 скачиваний
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

andrey_artemov писал(а):Лови ....

благодарю!
Ответить

Вернуться в «AVR»