Чт июн 06, 2019 20:07:54
baron_P писал(а)://Процедура атомарной записи в 16-битный регистр OCR1A (пример из датащита на Atmega8)
Чт июн 06, 2019 20:11:45
конкретно это применение - да, "точно такое же". а что скажете на счет этого:KorbenDallas писал(а):Так что никакого "не так" тут нет.
unsigned int ReadOCRA1(void){
ATOMIC_BLOCK(ATOMIC_RESTORSETATE){
return OCR1A;
}
}
Пт июн 07, 2019 07:30:16
Пт июн 07, 2019 08:15:48
разница очень большая: если вы делаете атомарное ЧТЕНИЕ, то вам придется совершать без этого библиотечного макроса достаточно много "лишних" телодвижений - я привел код функции, возвращающей атомарно считанное значение регистра, попробуйте написать аналог без этого макросаbaron_P писал(а):Но какая разница - в датащите универсальный сишный вариант под любую среду разработки, насколько я понимаю.
да легко! только это будет не среднее за N_MAX семплов, а среднее за N_MAX предыдущих семплов. метод называется "скользящее среднее" и является простейшим вариантом какого-то там КИХ/БИХ (я нихрена в этом не понимаю) фильтра.baron_P писал(а):я ведь не получу новое среднее значение раньше, чем через 2^N_MAX операций
Пт июн 07, 2019 08:32:17
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;
}
Пт июн 07, 2019 08:46:28
хотя бы тем, что он в 3 раза объемнее по строкам соответственно, в 3 раза выше вероятность где-то ошибиться.baron_P писал(а):А чем плох этот пример чтения?
фильтр нужен практически всегда, и с частотой это не связано. первое, для чего он нужен - это сгладить "естественный" шум АЦП в младшем разряде.baron_P писал(а):мне он не нужен в данном случае - частота входного сигнала очень низкая
Пт июн 07, 2019 09:25:34
хотя бы тем, что он в 3 раза объемнее по строкам соответственно, в 3 раза выше вероятность где-то ошибиться.baron_P писал(а):А чем плох этот пример чтения?
фильтр нужен практически всегда, и с частотой это не связано. первое, для чего он нужен - это сгладить "естественный" шум АЦП в младшем разряде.baron_P писал(а):мне он не нужен в данном случае - частота входного сигнала очень низкая
Пт июн 07, 2019 09:37:10
Пт июн 07, 2019 10:11:20
Пт июн 07, 2019 10:16:50
Пт июн 07, 2019 10:24:26
Пт июн 07, 2019 10:47:35
Пт июн 07, 2019 11:03:35
Пт июн 07, 2019 14:00:50
Пт июн 07, 2019 14:35:44
Пт июн 07, 2019 16:33:32
Пт июн 07, 2019 17:25:10
Пн июн 10, 2019 10:11:41
Пн июн 10, 2019 12:16:29
Пн июн 10, 2019 12:46:50