Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Ответ
Опции темы

Помогите с АЦП атмеги 16

Непрочитано 11.05.2011, 11:17   #31
oleg_harp
Прописка
 
Регистрация: 25.08.2007
Сообщений: 193
Сказал спасибо: 11
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
oleg_harp на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Сообщение от _guardianangel Посмотреть сообщение
Для того что бы получить 225 Вам надо написать так y = abs(x * 0.707).
Загвоздка в том, что я никогда не пишу ни одного совета, не проверив его. Так вот, компилятор CVAVR обрабатывает
Код:
unsigned int x,y;
y=x*0.707;
именно так. Может, он, конечно неправильный? (компилятор)
Я так понимаю, что компилятор при вычислении приводит формат чисел к максимальному операнду, а затем опять приводит к формату искомого. Поправьте, если не так.
Реклама:

Последний раз редактировалось oleg_harp; 11.05.2011 в 11:22.
oleg_harp вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:27   #32
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Сообщение от _guardianangel Посмотреть сообщение
Вы представление чисел почитаете хотя бы здесь http://ru.wikipedia.org/wiki/Числа_с_плавающей_запятой. Для того что бы получить 225 Вам надо написать так y = abs(x * 0.707).
Спасибо за совет, но Вы наверно не программист для МК а программист для компьютеров и приложений Если я умножаю 319 на 0.707 то получаю 225 на индикаторе без всяких преобразований. Но если умножаю х на 0.707 то получаю большое число(примерно 27000), как будто переполнение. Х - это измеренное значение АЦП.
у - промежуточная переменная
х - значение измеренное с АЦП(переменный резистор стоит) и сохраненное в эту переменную
формула:
у=х*0.707;

Display(y);

ниже процедура для вывода чисел. Может из-за нее чтото???
void Display(unsigned int Number) - процедура для представления чисел на 7-индикаторе
{
unsigned char Num1, Num2, Num3,Num4, Num5;
Num1=0;
Num2=0;
Num3=0;
Num4=0;
Num5=0;

while (Number ›= 10000) //10000
{
Number -= 10000;
Num1++;
}

while (Number ›= 1000) //1000
{
Number -= 1000;
Num2++;
}

while (Number ›= 100) //100
{
Number -= 100;
Num3++;
}

while (Number ›= 10) //10
{
Number -= 10;
Num4++;
}

Num5 = Number; //îñòàòîê
Disp1 = Dig[Num1];
Disp2 = Dig[Num2];
Disp3 = Dig[Num3];
Disp4 = Dig[Num4];
Disp5 = Dig[Num5];
};


Странно... столько программистов тут которые много раз перемножали числа с точкой, но никто не может дать правильного совета

вот две недели парился с индикацией, а добрый человек подсказал про еепром и всё срослось )) ОООчень ему благодарен.
miwutka вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:30   #33
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

GCC вобщем то тоже сожрал. Просто числа с плавающей запятой представляются как мантисса (число от 0 до 1) и порядок (степень). Так что Ваше 225.533 будет представлено как 0.225 * 10E3.
_guardianangel вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:38   #34
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Сейчас на отладке проверил - действительно округляет до целого. Кстати я ошибочно указал функцию abs, там round должен быть. У самого таких проблем не было, я при умножении дробных чисел, для результата, всегда использовал float или double. Ну и соответственно далее либо округлял, либо выводил как дробное. Сказывается опыт программирования для компов.
_guardianangel вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:41   #35
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Кстати если Вы в программе просто умножите константы, то их перемножит именно компилятор. А в текст программы пойдет просто присвоение переменной результата константы результата.
_guardianangel вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:42   #36
oleg_harp
Прописка
 
Регистрация: 25.08.2007
Сообщений: 193
Сказал спасибо: 11
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
oleg_harp на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Сообщение от miwutka Посмотреть сообщение
ниже процедура для вывода чисел. Может из-за нее чтото???
Код:
Num5 = Number; //îñòàòîê
Не вдаваясь в подробности, Вы переменной char присваиваете значение int. Так нельзя делать. Правильно вот так
Код:
Num5 = (unsigned char) Number;
oleg_harp вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:44   #37
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

компилятор должен был обругать .. варнинги читать нуно
OlegNZH вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:47   #38
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

OlegNZH, WinAVR даже в варнингах не ругнулся.
_guardianangel вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:51   #39
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Спасибо, но подскажите как мне тогда правильно перемножить числа и вывести на 7-индикатор??? Программирую в кодевижн
miwutka вне форума   Ответить с цитированием
Непрочитано 11.05.2011, 11:57   #40
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Помогите с АЦП атмеги 16

Опробуйте сначало совет oleg_harp.
_guardianangel вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Помогите чайнику симулировать АЦП прерывание на Proteus - e shatakhian Микроконтроллеры, АЦП, память и т.д 10 14.10.2011 03:26
Помогите с програмированием АЦП для PIC18F245 Piroknight Микроконтроллеры, АЦП, память и т.д 11 23.01.2011 23:00
АЦП помогите разобраться Uragan90 Информация по радиокомпонентам 5 21.09.2010 00:40
Помогите найти микросхему АЦП следящего типа vitamin12 Микроконтроллеры, АЦП, память и т.д 2 18.05.2010 22:01


Часовой пояс GMT +4, время: 11:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.