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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 10.01.2024, 15:07  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Запись переменной в массив и дальнейшая работа с содержимым

Но я же ранее написал алгоритм поиска мин и макс значений.
Вначале поред поиском переменные max = 0, min = 0xFFFF. Затем, если текущее value › max то max = текущее value, так же и если текущее value ‹ min, то min = value. И повторять цикл сравнений для каждого value в массиве измерений одного канала. Проверки на 0 здесь не нужны.
Да, тяжело вам будет постигать науку, коль даже уже готовое не в силах скопировать
Реклама:
NewWriter вне форума  
Непрочитано 10.01.2024, 18:46  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Запись переменной в массив и дальнейшая работа с содержимым

Сообщение от Devil Byte Посмотреть сообщение
Но для чего тогда служит опция при включении 1‹‹REFS0??
Вы даташит читаете?
Там указаны все комбинации. В частности REFS0=1, REFS1=0 задаёт напряжение питания AVCC в качестве опорного для АЦП.

Сообщение от Devil Byte Посмотреть сообщение
правильно сденлать вот так
Код:
	while(!(ADCSRA &(1‹‹ADIF))); // Ожидание прерывания
	ADCSRA |= (1‹‹ADIF);
или можно использовать что то типа этого
Код:
while(!(ADCSRA &(1‹‹ADSC)))
??
Я уже говорил вам по этому поводу.
Бит ADSC будет установлен в 1 во время одиночного преобразования.
Отрицание в условии - уже не нужно. Этот код не будет ждать окончания преобразования.
В даташите явно не сказано, что регистр данных будет обновлён в момент сброса этого бита. Это косвенно следует из графиков.
Но битом ADSC можно пользоваться только при одиночных преобразованиях. При Free Running всё равно нужно использовать бит ADIF.


Сообщение от Devil Byte Посмотреть сообщение
Глобальные нет. А разве Установка флага ADIF не относится к прерыванию?
Использовать прерывания - это означает, что у вас есть обработчик прерывания, который может вызываться в момент установки флага соответствующего прерывания. Тогда можно разрешать или запрещать как конкретные прерывания (установкой нужных бит в регистре конфигурации (для АЦП, например, это бит ADIE в регистре ADCSRA), так и все сразу (командами sei и cli).


Сообщение от Devil Byte Посмотреть сообщение
Это был еще один совет...мол некоторые говорят что лучше сбрасывать биты.
Биты лучше сбрасывать, если вы пишите универсальную функцию для любого режима работы АЦП, которую вы потом будете везде использовать в других проектах, зная, что она не меняет опорное напряжение и выравнивание результата, заданное при инициализации АЦП. Но если уж сбрасывать биты, то надо сбрасывать все биты, а не младшие 4.

Сообщение от Devil Byte Посмотреть сообщение
ADMUX |= (1‹‹REFS0); // Внешний ИОН
Это не внешний ИОН, а напряжение питания AVCC.

Сообщение от Devil Byte Посмотреть сообщение
ADMUX|=channel;
Вы постепенно устанавливаете все биты MUX. В итоге ADMUX перестанет меняться, а записанное в него значение не будет соответствовать никакому из channel, ранее передаваемых как параметр функции.

Сообщение от Devil Byte Посмотреть сообщение
return ADCW; // Возрат прочитанных значений со старшего и младшего бита
Старшего и младшего БАЙТОВ . Вы не различаете понятия бит и байт?


Сообщение от Devil Byte Посмотреть сообщение
double adcTOvolts = (vref / ADCMAX) * volt_devive;
Забудьте слово double для 8-битных контроллеров. Код для чисел с плавающей точкой двойной точности будет выполняться очень и очень медленно. У вас всего 10 бит. Это 1024 значения. Ну пусть 4 значащих цифры. Откуда вы возьмёте ещё 12 значащих цифр для обработки и хранения типа double? А вот быстродействие упадёт раз в 10.
Godzilla82 вне форума  
Непрочитано 10.01.2024, 19:09  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Запись переменной в массив и дальнейшая работа с содержимым

Ух, ну не даёте вы вычислить значение напряжения с точностью до "over-дохрена" знаков
double - 8-байтное число двойной точности, диапазон от 308 знаков после запятой до 308 знаков перед запятой! от 10^-308 до 10^+308.
Интересно, кто ж так "насоветовал" то? Покажите ево.
NewWriter вне форума  
Непрочитано 10.01.2024, 19:52  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Запись переменной в массив и дальнейшая работа с содержимым

Сообщение от NewWriter Посмотреть сообщение
диапазон от 308 знаков после запятой до 308 знаков перед запятой! от 10^-308 до 10^+308.
Значащих цифр всего 15-17.
Godzilla82 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто-нибудь работал с RF модулями nRF2401A? Easyrider83 Автоматика и аппаратура связи 1481 04.09.2021 23:24
Анекдот, анекдот ... (часть 1) DK Отвлекитесь, эмбеддеры! 8148 05.06.2013 23:14


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


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