Например TDA7294

Форум РадиоКот • Просмотр темы - Нескольно простых вопросов о программировании AVR на Си.
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт янв 21, 2020 03:39:27

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 963 ]     ... , , , 47, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт июн 06, 2019 20:07:54 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 31, 2016 06:23:19
Сообщений: 18
Рейтинг сообщения: 0
baron_P писал(а):
//Процедура атомарной записи в 16-битный регистр OCR1A (пример из датащита на Atmega8)

атомарные операции в AVR-GCC делаются не так


Ваш вариант - абсолютно то же самое, только завернутое в другой "синтаксический сахар". Так что никакого "не так" тут нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт июн 06, 2019 20:11:45 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14456
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
KorbenDallas писал(а):
Так что никакого "не так" тут нет.
конкретно это применение - да, "точно такое же". а что скажете на счет этого:
Код:
unsigned int ReadOCRA1(void){
   ATOMIC_BLOCK(ATOMIC_RESTORSETATE){
      return OCR1A;
   }
}
;) ?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 07:30:16 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
Во-первых, среднее у вас вычисляется не из `N_MAX` значений, как написано в комментарии, а из `2^N_MAX` значений.
Во-вторых, вышеприведенная функция возвращает новое среднее только на каждой `2^N_MAX` итерации. На остальных итерациях возвращается последнее вычисленное среднее. Это так и задумано?

1. Да, я забыл обновить комментарий после обновления кода.
2. Да, так и задумано, я ведь не получу новое среднее значение раньше, чем через 2^N_MAX операций. Наверно, можно было добавить флаг "обновлено/не обновлено" и записывать значение в OC1A, только если оно обновилось, но мне показалось это лишним в этом случае. В векторах прерываний тут ничего важного не происходит (может, индикатор потом прикручу), остановка прерываний раз в цикл не критична.

Не знал о существовании спец. библиотеки атомарных операций для AVR-GCC. Но какая разница - в датащите универсальный сишный вариант под любую среду разработки, насколько я понимаю. А атомарность операций нужна здесь "чтоб была" - в процессе борьбы ловли багов Протеуса добавил для надежности, Atmel ведь рекомендует.

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 08:15:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14456
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
baron_P писал(а):
Но какая разница - в датащите универсальный сишный вариант под любую среду разработки, насколько я понимаю.
разница очень большая: если вы делаете атомарное ЧТЕНИЕ, то вам придется совершать без этого библиотечного макроса достаточно много "лишних" телодвижений - я привел код функции, возвращающей атомарно считанное значение регистра, попробуйте написать аналог без этого макроса :)
baron_P писал(а):
я ведь не получу новое среднее значение раньше, чем через 2^N_MAX операций
да легко! только это будет не среднее за N_MAX семплов, а среднее за N_MAX предыдущих семплов. метод называется "скользящее среднее" и является простейшим вариантом какого-то там КИХ/БИХ (я нихрена в этом не понимаю) фильтра.
алгоритм вам ранее был описан словесно

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Контроль в спящем режиме: повышение КПД батарейного питания с помощью DC/DC MAX17225 nanoPower

В статье описан практический опыт разработчика, применившего повышающий DC/DC-преобразователь MAX17225. В результате ряда практических экспериментов, потребовавших существенного обновления технической базы компании-разработчика, автор убедительно доказывает преимущества выбранного компонента и схемотехнической реализации. Увеличенное на 50% время автономной работы лучше других аргументов говорит об эффективности конвертеров MAX17225, а также о важности предварительной оценки элементной базы.

Читать статьи>>
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 08:32:17 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
разница очень большая: если вы делаете атомарное ЧТЕНИЕ, то вам придется совершать без этого библиотечного макроса достаточно много "лишних" телодвижений - я привел код функции, возвращающей атомарно считанное значение регистра, попробуйте написать аналог без этого макроса :)
да легко! только это будет не среднее за N_MAX семплов, а среднее за N_MAX предыдущих семплов. метод называется "скользящее среднее" и является простейшим вариантом какого-то там КИХ/БИХ (я нихрена в этом не понимаю) фильтра.
алгоритм вам ранее был описан словесно

А чем плох этот пример чтения?
Код:
unsigned int TIM16_ReadTCNT1( void )
{
unsigned char sreg;
unsigned int i;
/* Save Global Interrupt Flag */
sreg = SREG;
/* Disable interrupts */
_CLI();
/* Read TCNT1 into i */
i = TCNT1;
/* Restore Global Interrupt Flag */
SREG = sreg;
return i;
}


Я слышал про этот метод, но мне он не нужен в данном случае - частота входного сигнала очень низкая.

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 08:46:28 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14456
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
baron_P писал(а):
А чем плох этот пример чтения?
хотя бы тем, что он в 3 раза объемнее по строкам :) соответственно, в 3 раза выше вероятность где-то ошибиться.
baron_P писал(а):
мне он не нужен в данном случае - частота входного сигнала очень низкая
фильтр нужен практически всегда, и с частотой это не связано. первое, для чего он нужен - это сгладить "естественный" шум АЦП в младшем разряде.
но, разумеется, хозяин - барин :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 09:25:34 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
baron_P писал(а):
А чем плох этот пример чтения?
хотя бы тем, что он в 3 раза объемнее по строкам :) соответственно, в 3 раза выше вероятность где-то ошибиться.
baron_P писал(а):
мне он не нужен в данном случае - частота входного сигнала очень низкая
фильтр нужен практически всегда, и с частотой это не связано. первое, для чего он нужен - это сгладить "естественный" шум АЦП в младшем разряде.
но, разумеется, хозяин - барин :)

Это копипаста из датащита - в нажатии двух кнопок ошибиться трудно :))
Я не использую АЦП - это обработка цифровых сигналов очень низкой частоты. Усреднение - чтобы минимизировать влияние внезапных импульсных помех, если оные проберутся в сигнал.

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 09:37:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14456
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
:facepalm:

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 10:11:20 
Мучитель микросхем

Карма: 6
Рейтинг сообщений: 10
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 485
Рейтинг сообщения: 0
Я не использую АЦП - это обработка цифровых сигналов очень низкой частоты. Усреднение - чтобы минимизировать влияние внезапных импульсных помех, если оные проберутся в сигнал.

может лучше контрольные суммы использовать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 10:16:50 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
Я не использую АЦП - это обработка цифровых сигналов очень низкой частоты. Усреднение - чтобы минимизировать влияние внезапных импульсных помех, если оные проберутся в сигнал.

может лучше контрольные суммы использовать?

Не соображу, как это можно сделать здесь. Железка с 12-ю открытыми коллекторами соединена со входами контроллера. Иногда, значения на входах меняются по желанию этой железки. Куда тут контрольную сумму можно воткнуть? :)

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 10:24:26 
Мучитель микросхем

Карма: 6
Рейтинг сообщений: 10
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 485
Рейтинг сообщения: 0
т.е. за входной сигнал ты не в ответе? Ну, а о нем хоть что-то известно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 10:47:35 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
т.е. за входной сигнал ты не в ответе? Ну, а о нем хоть что-то известно?

Не в ответе. О том, какие значения будут выставлены в конкретный момент - нет, не известно. Есть еще тринадцатый бит, который говорит о том, что сигнал с 12 остальных можно читать. Я собираю значения со входов только когда активен этот бит.
Код (лишнее выкинулЮ нужное добавил):

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 11:03:35 
Мучитель микросхем

Карма: 6
Рейтинг сообщений: 10
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 485
Рейтинг сообщения: 0
Не в ответе. О том, какие значения будут выставлены в конкретный момент - нет, не известно.

а частота тоже неизвестна?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 14:00:50 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
Не в ответе. О том, какие значения будут выставлены в конкретный момент - нет, не известно.

а частота тоже неизвестна?

Частота тоже неизвестна. Известно, что имеют место быть импульсные помехи около 10 кГц частотой. На входах будет подаваться 24 В через делитель 20 кОм - 3,9 кОм. Параллельно 3,9 кОм будут конденсаторы 0,01 мкФ, чтобы срезать все, что выше 1 кГц.

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 14:35:44 
Мучитель микросхем

Карма: 6
Рейтинг сообщений: 10
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 485
Рейтинг сообщения: 0
тогда отфильтровать весьма непросто. Усреднения может ничего не дать. А какова длительность импульса на 13 контакте?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 16:33:32 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 172
Откуда: Ростов
Рейтинг сообщения: 0
тогда отфильтровать весьма непросто. Усреднения может ничего не дать. А какова длительность импульса на 13 контакте?

И того я, пока, не знаю. Документации нет, вопрос прояснится, когда получится добраться до железки с осциллографом.

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт июн 07, 2019 17:25:10 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 35
Рейтинг сообщений: 283
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2069
Рейтинг сообщения: 1
baron_P, от импульсных помех избавляются медианный фильтром, а не усреднением. То бишь, формируем скользящее окно из N показаний. N - нечётное. Окно лучше формировать списком. В списке держим N последних показаний в отсортированном порядке. Среднее показание - наша медиана. При поступлении нового показания удаляем из списка самое старое показание и вставляем в список, сохраняя сортировку по значениям показаний, новое показание. Средний элемент списка снова наша медиана.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн июн 10, 2019 10:11:41 
Мучитель микросхем

Карма: 6
Рейтинг сообщений: 10
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 485
Рейтинг сообщения: 0
baron_P, от импульсных помех избавляются медианный фильтром, а не усреднением. То бишь, формируем скользящее окно из N показаний. N - нечётное. Окно лучше формировать списком. В списке держим N последних показаний в отсортированном порядке. Среднее показание - наша медиана. При поступлении нового показания удаляем из списка самое старое показание и вставляем в список, сохраняя сортировку по значениям показаний, новое показание. Средний элемент списка снова наша медиана.

короче, надо знать, что представляют собой эти самые показания и можно ли их вообще фильтровать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн июн 10, 2019 12:16:29 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 35
Рейтинг сообщений: 283
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2069
Рейтинг сообщения: 0
ozonn, так ТС же явно сказал, что "имеют место быть импульсные помехи". Если только импульсные помехи - то медианного фильтра достаточно. Если не столько ипульсные, сколько шум при известном спектре полезного сигнала - то уравнение Винера.
В общем случае - собираем мегабайты статистики, берем R в зубы, находим функцию распределения и от нее уже пляшем.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн июн 10, 2019 12:46:50 
Мучитель микросхем

Карма: 6
Рейтинг сообщений: 10
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 485
Рейтинг сообщения: 0
ozonn, так ТС же явно сказал, что "имеют место быть импульсные помехи". Если только импульсные помехи - то медианного фильтра достаточно. Если не столько ипульсные, сколько шум при известном спектре полезного сигнала - то уравнение Винера.
В общем случае - собираем мегабайты статистики, берем R в зубы, находим функцию распределения и от нее уже пляшем.

а теперь представь, что полезная информация - это буквы. И ты бльшую часть из них фильтруешь. Короче, надо знать, какую инфу нисут в себе принимаемые числа


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 963 ]     ... , , , 47, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y