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

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

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

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

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

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

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

 
Опции темы
Непрочитано 25.07.2011, 21:42  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

К - корректировочная константа для АЦП, С1 - выход с АЦП, С - на индикацию.
Но почему же с типом unsigned long int всё работает, а с типом unsigned int - не хочет.
С1 изменяется от 0 до 1024, K от 0 до 255.
Формула: C = C1*(1024+K-127)/1024) или C = C1+С1*(K-127)/1024).
Реклама:

Последний раз редактировалось Slava-martyn; 25.07.2011 в 21:46.
Slava-martyn вне форума  
Непрочитано 25.07.2011, 22:33  
Nfc
Прописка
 
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
Nfc на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

При умножении двух чисел с разрядностью 10 бит, результат может занимать до 20 разрядов, это нужно учитывать. Потому с int (16бит) и ведет не корректно.
Да , и у вас на протяжении темы белиберда со скобками... C1*(1024+K-127)/1024) и (C1*(1024+K-127))››10 не есть одно и тоже. Первое даст в результате либо C1*0 , либо C1*1. Второе эквивалентно (C1*(1024+K-127))/1024 , скорей всего, вы 'это' задумывали.
Nfc вне форума  
Непрочитано 25.07.2011, 23:00  
Nfc
Прописка
 
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
Nfc на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Чтобы не раздувать переменные, можете вот в таком духе записать: ((unsigned long int)C1*(1024+K-127))››10
Nfc вне форума  
Сказали "Спасибо" Nfc
Slava-martyn (26.07.2011)
Непрочитано 26.07.2011, 09:53  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Сообщение от Slava-martyn Посмотреть сообщение
Где нить описание есть какие типы когда применять, как с ними математические операции происходят?
Сообщение от Slava-martyn Посмотреть сообщение
Но почему же с типом unsigned long int всё работает, а с типом unsigned int - не хочет.
В голове есть. Сам подумай, если С1 может быть 1024, выражение в скобках тоже 1024, следовательно при умножении для хранения промежуточного результата потребуется 3 байта. Типов такой размерности в С нет, следовательно unsigned long int.
Someone вне форума  
Непрочитано 26.07.2011, 09:54  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

ЗЫ: И вообще, не понятно, зачем для коррекции значения АЦП умножать и делить.
Someone вне форума  
Непрочитано 26.07.2011, 19:53  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Сообщение от Someone Посмотреть сообщение
не понятно, зачем для коррекции значения АЦП умножать и делить
Перед АЦП стоит делитель напряжения, у резисторов разброс +-5%, для опорного напряжения +-1% - вот и придётся корректировать.
Комбинация
PHP код:
unsigned int C,C1,C2=0;
C=((unsigned long int)C1*(1024+K-127))››10
позволила сохранить в целости ещё несколько процентов памяти (и программ и данных).
Slava-martyn вне форума  
Непрочитано 27.07.2011, 08:44  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Сообщение от Slava-martyn Посмотреть сообщение
вот и придётся корректировать.
Это понятно. Делить и умножать зачем? Почему бы просто не вычесть или прибавить корректирующую константу? Разве у тебя разброс будет достигать 50%? Судя по ранее звучавшему "считать нажатия кнопок" корректирующую константу ты всё равно не знаешь, и будешь определять по ходу, кнопками. Тогда тебе лонги не потребуются.
Someone вне форума  
Непрочитано 27.07.2011, 12:24  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Потому что там стоит делитель напряжения (перед входом АЦП), а не прибавлятель (вычитатель).

Допустим С1 = 557, K=147, то по моей формуле С=567.
То есть С-С1=10.
Допустим С1 = 1000, K=147, то С=1019.
То есть С-С1=19.
Как ведите константа одна и та же, а результат разный (19-10=9 т.е. 0,3 V!!!) для меня это существенно.
Slava-martyn вне форума  
Непрочитано 27.07.2011, 12:28  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Чо мудриш?
На опорное к АЦП привяжи REF198 к примеру,а делитель сделай из резистора и много оборотного подстроечника.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 27.07.2011, 12:28  
Nfc
Прописка
 
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
Nfc на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Сообщение от Someone Посмотреть сообщение
Это понятно. Делить и умножать зачем? Почему бы просто не вычесть или прибавить корректирующую константу?
x = y +(-) k - это, применительно к АЦП, будет коррекцией смещения (или подстройкой нуля другими словами).
x = y * (/) k - это коррекция масштаба, абсолютной погрешности. Естественно, они не взаимозаменяемы. Каждая для своей погрешности.
Nfc вне форума  
 

Закладки

Метки
hi-tech picc, математика
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си, IAR AVR & Hi Tech PICC picavr Микроконтроллеры, АЦП, память и т.д 47 25.02.2014 12:20
PIC16C57 как считать прошивку avs2009 Микроконтроллеры, АЦП, память и т.д 5 17.01.2011 21:30
не хочет долго считать быстроменяющиеся сигналы alek-epapu Proteus, KiCAD и другие ECAD 0 07.12.2009 08:39
[Решено] Компилятор PICC и Proteus Кот Баюн Proteus, KiCAD и другие ECAD 7 30.11.2009 01:47
PICC как будет выглядеть код в CVAVR rv6yi Микроконтроллеры, АЦП, память и т.д 15 22.10.2009 23:22


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot