реклама на сайте
подробности

 
 
11 страниц V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети, некоторые вопросы
SHUR1K
сообщение Apr 1 2011, 11:08
Сообщение #91


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(777777 @ Apr 1 2011, 10:56) *
А, кстати, почему умножение занимает так много? Может ты в плавающей точке вычисления делаешь?

Нет, умножение было целочисленным. А много потому, что нет аппаратного умножителя, а програмно получается так много.

Сообщение отредактировал SHUR1K - Apr 1 2011, 11:14
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 1 2011, 12:33
Сообщение #92


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(SHUR1K @ Apr 1 2011, 15:08) *
Нет, умножение было целочисленным. А много потому, что нет аппаратного умножителя, а програмно получается так много.

Страхи какие-то у вас sm.gif Повсеместно использую целочисленное умножение типа 16 х 16 или 32 * 32, и никаких таких мегаразмеров программы не получается, как же так?


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 1 2011, 12:46
Сообщение #93


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(Stanislav_S @ Apr 1 2011, 14:33) *
Страхи какие-то у вас sm.gif Повсеместно использую целочисленное умножение типа 16 х 16 или 32 * 32, и никаких таких мегаразмеров программы не получается, как же так?

16x16 и 32х32 - это совсем другое. Умножение на число, которое является степенью двойки - это просто сдвиг влево на соответствующие число позиций (степень двойки). А Вы попробуйте умножить на 11 или 13 и посмотрите как вырастет hex
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 1 2011, 13:03
Сообщение #94


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(SHUR1K @ Apr 1 2011, 16:46) *
16x16 и 32х32 - это совсем другое. Умножение на число, которое является степенью двойки - это просто сдвиг влево на соответствующие число позиций (степень двойки). А Вы попробуйте умножить на 11 или 13 и посмотрите как вырастет hex


Ну и на сколько?

Код
;*************************************************
;*      ;;/умножение Беззнаковых 16х16;;*       *
;*************************************************
Mul16x16:
        mul        temp,rab
        mov        R13,LoMul    ;| здесь AH*BH
        mov        R14,MeMul
        mul        temp1,rab1
        mov        R11,LoMul    ;| здесь AL*BL
        mov        R12,MeMul
        mul        temp,rab1    ;| здесь AH*BL
        add        R12,LoMul
        adc        R13,MeMul
        adc        R14,HiMUL
        mul        temp1,rab    ;| здесь BH*AL
        add        R12,LoMul
        adc        R13,MeMul
        adc        R14,HiMUL
        ret


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 1 2011, 13:29
Сообщение #95


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(SHUR1K @ Apr 1 2011, 16:46) *
16x16 и 32х32 - это совсем другое. Умножение на число, которое является степенью двойки - это просто сдвиг влево на соответствующие число позиций (степень двойки). А Вы попробуйте умножить на 11 или 13 и посмотрите как вырастет hex

Проверил, умножил 1000 на 25, программа выросла на 80 байт, но это еще с учетом вызова функции itoa(), и где обещанные килобайты? sm.gif


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 1 2011, 16:10
Сообщение #96


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(SHUR1K @ Apr 1 2011, 16:46) *
16x16 и 32х32 - это совсем другое. Умножение на число, которое является степенью двойки - это просто сдвиг влево на соответствующие число позиций (степень двойки). А Вы попробуйте умножить на 11 или 13 и посмотрите как вырастет hex

Это что, первоапрельский прикол такой ? 16x16 это, простите, не умножение числа 16 на число 16, а перемножение двух произвольных 16-битных чисел. В один килобайт влезают четыре действия в плавучке и еще место останется, а уж целочисленное умножение при отсутствии команды mul - три-четыре десятка команд (меньше сотни байтов).
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 1 2011, 18:04
Сообщение #97


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(rx3apf @ Apr 1 2011, 18:10) *
Это что, первоапрельский прикол такой ? 16x16 это, простите, не умножение числа 16 на число 16, а перемножение двух произвольных 16-битных чисел. В один килобайт влезают четыре действия в плавучке и еще место останется, а уж целочисленное умножение при отсутствии команды mul - три-четыре десятка команд (меньше сотни байтов).

Прошу прощения, тупанул. Перепроверил у себя, при использовании в одном выражении деления и умножения код вырастает значительно. Если делать это не в одном выражении, то прирост действительно не так велик.
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 2 2011, 12:08
Сообщение #98


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(SHUR1K @ Apr 1 2011, 22:04) *
Прошу прощения, тупанул. Перепроверил у себя, при использовании в одном выражении деления и умножения код вырастает значительно. Если делать это не в одном выражении, то прирост действительно не так велик.

Хм, что то у вас с компилятором, добавил деление в формуле, прирост чуть больше чем при умножении, что то у вас не так sm.gif Проверьте настройки компилятора.


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 3 2011, 14:35
Сообщение #99


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(Stanislav_S @ Apr 2 2011, 14:08) *
Хм, что то у вас с компилятором, добавил деление в формуле, прирост чуть больше чем при умножении, что то у вас не так sm.gif Проверьте настройки компилятора.

Нет, не с компилятором :-). Просто если использовать в одном выражении умножении и деление, ну например *3/2, то получается *1.5, а это уже дробное число, вот и растет код безбожно.
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 3 2011, 15:30
Сообщение #100


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(SHUR1K @ Apr 3 2011, 18:35) *
Нет, не с компилятором :-). Просто если использовать в одном выражении умножении и деление, ну например *3/2, то получается *1.5, а это уже дробное число, вот и растет код безбожно.

?? мы говорили о целочисленном делении, разве нет? Если вы говорите о плавучке, тогда да, код раздувается на байт 800 примерно, но! Мы ведь говорили о целых числах sm.gif


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 4 2011, 05:39
Сообщение #101


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(Stanislav_S @ Apr 3 2011, 17:30) *
?? мы говорили о целочисленном делении, разве нет? Если вы говорите о плавучке, тогда да, код раздувается на байт 800 примерно, но! Мы ведь говорили о целых числах sm.gif

абсолютно правильно, мы говорили о целых числах. Просто я не обратил внимание на то, что при таких раскладах получаются дробные числа, чем ввел и себя и всех присутствующих в заблуждение. Так что, прошу прощения.
Go to the top of the page
 
+Quote Post
ae_
сообщение Apr 4 2011, 08:01
Сообщение #102


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(SHUR1K @ Apr 4 2011, 14:39) *
...Просто если использовать в одном выражении умножении и деление, ну например *3/2, то получается *1.5, а это уже дробное число, вот и растет код безбожно...
абсолютно правильно, мы говорили о целых числах. Просто я не обратил внимание на то, что при таких раскладах получаются дробные числа, чем ввел и себя и всех присутствующих в заблуждение. Так что, прошу прощения.

*3/2 это целочисленная арифметика, а вот *1.5 - уже с плавающей точкой.
В первом случае никаких дробный чисел не будет, например 1*3/2=1, а не 1.5, как во втором случае.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Apr 6 2011, 07:35
Сообщение #103


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Разрешите вмешаться в интересную беседу о плавающей точке rolleyes.gif .
Мне пока все равно, сколько оно места занимает. В обработчике прерывания суммы квадратов я считаю целочисленно, а потом, когда цикл измерений (20 мс - пероид 50 Гц) завершится, все дальнейшие расчеты с плавающей точкой.
Проц у меня сейчас ATMega16, на данный момент флэшки занято 47-48% - поэтому размер кода в настоящий момент совершенно не жмет sm.gif . Когда все расчеты будут готовы, тогда займусь оптимизацией.

Калибровку я сделал, вольтметр показывает нормально.
Возникли вопросы о канале измерения тока.

Собрана схема - вложено. ОУ питаются от +5в и земли. Питание однополярное.

Когда ТТ (токовый транс) вообще отсутствует (он у меня подключается проводками через клеммник) - левая нога R4 висит в воздухе, то на выходе ОУ я вижу свое напряжение смещения (2.18в). Вроде нормально.
Когда я подключаю ТТ без нагрузки (или просто закорачиваю пинцетом вход R4 в землю), то сразу вижу на выходе ОУ 3.72в. Отнимаю смещение 3.72-2.18=1.54в. Откуда берутся эти 1.54в - я не понимаю wacko.gif .
То же самое я наблюдаю и на канале напряжения, если я отключаю вход с обмотки и закорачиваю на землю.

Подключил нагрузкой свой паяльник 25W. На выходе транса вольтметр показал 0.035в= 35мВ. В пересчете это 0.1176А.
Амперметр показывает 0.11-0.12А. Т.е. сам ТТ работает нормально.
Но ОУ это напряжение совершенно не замечает - на выходе те самые 3.72в.
Наверное оно слишком мало. ОУ ведь неидеален sad.gif .
Вот я и думаю - может организовать ему 2-полярное питание - вместо земли кинуть небольшое отриц. напряжение. Такая возможность есть - на трансе БП есть ср. точка.
Или взять другой ОУ. Есть у меня LF353.
Спасибо.

Сообщение отредактировал hd44780 - Apr 6 2011, 07:38
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 6 2011, 08:56
Сообщение #104


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(hd44780 @ Apr 6 2011, 11:35) *
Когда ТТ (токовый транс) вообще отсутствует (он у меня подключается проводками через клеммник) - левая нога R4 висит в воздухе, то на выходе ОУ я вижу свое напряжение смещения (2.18в). Вроде нормально.
Когда я подключаю ТТ без нагрузки (или просто закорачиваю пинцетом вход R4 в землю), то сразу вижу на выходе ОУ 3.72в. Отнимаю смещение 3.72-2.18=1.54в. Откуда берутся эти 1.54в - я не понимаю wacko.gif .

Ваше непонимание... Это же не инструментальный (дифференциальный) усилитель, а ОУ.
На самом деле, если резисторы, которые 10к были бы равны, то на выходе должно было быть удвоенное - 2.18*2.
Это потому, что на входах должно быть одинаковое напряжение.
Кроме всего прочего у Вас неправильно сделан канал измерения напряжения - входное сопротиление у инверитрующей схемы не бесконечность, а Ваш переменный резистор (10к) войдет сложным образом в коэффициент усиления.
Еще... ток в трансформаторы потечет, но небольшой...
Go to the top of the page
 
+Quote Post
hd44780
сообщение Apr 6 2011, 09:09
Сообщение #105


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



То что резисторы по факту разные я понимаю.
Собственно меня висящие входы мало интересуют. В готовом устройстве их не будет.

Меня больше волнует - надо ли заводить на ОУ отриц. питание, чтобы он мог работать с малыми сигналами на входе?

Цитата(Tanya @ Apr 6 2011, 10:56) *
у Вас неправильно сделан канал измерения напряжения


А как правильно сделать?
Разделительные кондеры те поставить между делителем на трансе и резистором ОУ?


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

11 страниц V  « < 5 6 7 8 9 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016