Обсуждаем контроллеры компании Atmel.
Ответить

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 10:48:27

400 + (120 - 400) / 2 = (400 + 120) / 2 = 260

что не так?

Добавлено after 1 hour 41 minute 12 seconds:
slav0n, ваше выражение справедливо пока ADC > Out_To_Display.
Как только ADC станет < Out_To_Display, представляете какой результат получится?

фикс специально для вас:
Код:
Out_To_Display += ((int)ADC - Out_To_Display) / 2;


Добавлено after 23 minutes 12 seconds:
кстати, кому сильно хочется может применять дробные коэффициенты сглаживания:
Код:
Out_To_Display += ((int)ADC - Out_To_Display) * 2 / 3;

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 11:28:56

Спасибо, Карбофос :beer:

вот с таким кондом заработала платка без мигалова этого раздражающего. второй канал тоже работает, но проверить его полноценно смогу только в мастерской. надо запустить в шунт 75мВ сотку амперов с источника лбп. пока только от омметра подавал на второй вход ацп - канал работает. и второй вариант собрать на линейном дадчеге Холла ss-495a.

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 11:31:01

charchyard писал(а):вот с таким кондом заработала платка
кондом древний, спору нет.
прощай будущее с таким кондомом

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 14:03:01

slav0n писал(а):фикс специально для вас:
что? (int)ADC ? Это жестко.
slav0n писал(а):что не так?
может как нибудь так
Код:
(int16_t)(ADC - Out_To_Display)
да и деление на 2 заменить сдвигом
Код:
((int16_t)(ADC - Out_To_Display))>>1

slav0n писал(а):прощай будущее с таким кондомом
особенно деление на 17

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 15:11:14

Dimon456 писал(а):да и деление на 2 заменить сдвигом

сдвигать знаковое целое - лютая ересь

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:01:00

slav0n, недостаток Вашего метода в том, что остаток при делении теряется, т.е. если ADC стабилен и прирос на число меньшее делителя, то показания дисплея не изменятся...

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:04:43

Ivanoff-iv писал(а):если ADC стабилен и прирос на число меньшее делителя, то показания дисплея не изменятся...

хде я?!!
если ADC стабилен ... то показания дисплея не изменятся

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:13:10

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

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:16:39

все зависит от коэффа
1 - повторитель
0 - сам розум маєш шо таке

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:17:06

или вдруг надо сильно сглаживать (делитель = 100) так вообще показаний не дождёшься..

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:38:14

тыж вумный, должен понять шо тут на самом деле не дялитель, а множитель 0→1

Добавлено after 11 minutes 17 seconds:
дети, зарубайте себе на носи
в системе без ОС, зглаживание происхотит в моске

Добавлено after 3 minutes 33 seconds:
вчера било 400, сегодня 120, тебе показали 260
шо ти хочиш ще?

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 16:47:43

вчера было 400, сегодня 401, и завтра 401, и послезавтра... а ты об этом и не узнаешь...

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 17:47:27

эсли информер = 0, то да, объебалово
якщо информер = 1, то все шаги записаны
информер = 1/2, хуйло...

Добавлено after 13 minutes 54 seconds:
цифры не мелькают, но живешь вчерашним днем

Добавлено after 16 minutes 6 seconds:
дети, внимайте, я ушел

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 18:12:47

Dimon456 писал(а):да и деление на 2 заменить сдвигом

сдвигать знаковое целое - лютая ересь


В машинных кодах для сдвига вправо есть специальная команда с сохранением знака - ASR Reg. Может С компилер это учитывает? (это предположение, а не утверждение)

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 19:26:16

lizard66 писал(а):В машинных кодах для сдвига вправо есть специальная команда с сохранением знака - ASR Reg. Может С компилер это учитывает?
Вот asm код
Проблема в том что при входных данных
Код:
         Out_To_Display = 400;
         ADC = 120;
на выходе Out_To_Display при делении на 2 получает завышенное показание на 1, то есть 121, а при сдвиге, ровно 120.

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 20:38:37

Наверное, эта пара строк вас смутила:
Код:
  34:   97 fd          sbrc   r25, 7
  36:   01 96          adiw   r24, 0x01   ; 1

Это стандартная коррекция при инвертировании знака числа.
Как видно, при использовании операции сдвига, эта коррекция не выполняется.
Т.о. в данном случае правильно делить, а не сдвигать.
на выходе Out_To_Display при делении на 2 получает завышенное показание на 1, то есть 121, а при сдвиге, ровно 120.

Это неверно.

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 21:03:01

Карбофос писал(а):Это стандартная коррекция при инвертировании знака числа.
Да, только эту коррекцию надо будет потом отнимать.
Карбофос писал(а):Т.о. в данном случае правильно делить, а не сдвигать.
Правильно будет без приведения типов.
Карбофос писал(а):Это неверно.
По чему неверно, прокрутите в цикле раз так нцать.

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 21:09:32

Карбофос писал(а):Это стандартная коррекция при инвертировании знака числа.
какая еще коррекция?
возьмем простой пример:
03 - 05 = FE. а FE - это и есть -2, то есть правильный результат.
а после прибавления 1 получим -1, то есть неправильный результат.

Re: 3-х разрядный ампервольтметр на атмега

Сб май 08, 2021 21:10:14

алгоритм slav0n'а, ещё плох тем, что дисплей 0 показывать будет только при включении, а потом как не опускай напряжение - нуля на дисплее уже не добиться...
я помню гдето тоже пытался применить такой код - не понравилось... с накопителем лучше.

Re: 3-х разрядный ампервольтметр на атмега

Вс май 09, 2021 00:20:43

ага, нуля нима, но есть минуса

Добавлено after 17 minutes 38 seconds:
вчира било 0, седня 0, показали 0
вчира било 10, седня -10, показали раздватри
вчира било 10, седня -5, показали раздватри
вчира било -10, седня 5, показали раздватри
Ответить