и очень желательно, чтобы ты его попробовал в деле.
во-первых, я применил вот это свое предложение:
во-вторых полностью переделал подпрограмму cal1024.Starichok51 писал(а):есть прямой смысл включить вызов rcall delay40mks в подпрограмму write_lcd перед командой ret
я там применил сдвиг вправо через перенос.
но ты там перемещал биты на 5 разрядов вправо, а это соответствует делению на 32, то есть, ты вычитал 1/32, а это в 2 раза больше, чем 1/64.
я поставил 6 сдвигов, чтобы поделить на 64.
правда, я так и не понял, зачем тебе нужно вычитать 1/64 от исходного значения...
также полностью оптимизировал кусок подпрограммы, начинающийся меткой schetokoncen.
в-третьих, также в секундомере оптимизировал код - изменил условные переходы.
в итоге сделанной оптимизации из текста ушло более сотни строк (команд).
теперь о кнопках.
при одновременном нажатии двух или всех трех кнопок зафиксируются биты каждой кнопки.
и при дальнейшем анализе клавиатуры нет блокировки от прохождения через обе подпрограммы menshe и bolshe.
поэтому при одновременном нажатии кнопок "Плюс" и "Минус" может получиться фигня.
правда, я сильно не вникал в эту часть и работу с кнопками не трогал.
возможно, у тебя есть блокировка от одновременного срабатывания на уменьшение и на увеличения уставки.
ну, и еще убрал опечатки и ошибки, а также привел текст к более читабельному виду.
кстати, я смотрел описание на ATmega16 - у нее есть масштабирование АЦП, а тут посмотрел на ATmega8 - у нее нет такого масштабирования.
а поскольку ты ориентируешься в основном на ATmega8, то мои рассуждение об использовании в АЦП масштаба х10 вообще теряют всякий смысл.
ну, Flash.#13, судя по исходнику, не такой уж большой знаток (извини, я не в обиду), а у меня опыта в ассемблере значительно больше.Sergey3a23 писал(а): поскольку вы такие знатоки языка ассемблер , можно ли как-то калибровать амперметр а программе ? Не подбором резисторов (это не наш метод), а изменением каких - нибудь циферок в программе?
правда, я уже более 10 лет, как забросил МК и уже не собирался к ним возвращаться.
но Flash.#13 своей темой зацепил меня капитально...
но если бы я взялся делать (но не возьмусь - на пенсию не разгонишься в творчестве), я бы делал на сороконожках ATmega16 или ATmega32, где есть полных 4 порта - мало ли, что еще захочется навесить на порты...
канэшна, можно. даже в ATmega8 еще полно свободной программной памяти.
сейчас уже есть ввод (изменение) уставки по напряжению.
но придется несколько усложнить программу.
придется вводить отдельный режим различных настроек.
я, лично, вижу 3 настраиваемых параметра:
1. уставку напряжения (отключения).
2. калибровку измерения тока (что ты и предлагаешь).
3. калибровку измерения напряжения.
полученные значения желательно сохранять в EEPROM, чтобы при снятии питания они не пропадали.
конешно, удобнее всего добавить еще одну кнопку для входа в режим настроек.
но чтобы не добавлять еще одну кнопку, переход в режим настроек будет выполняться одновременным нажатием кнопок "Плюс" и "Минус".
а в программе придется удалять обработку этих кнопок в основном режиме.
далее просматривается такой алгоритм настроек:
1. кнопками "Плюс" и "Минус" будем выбирать настраиваемый параметр.
2. удерживая кнопку "Старт", нажимаем кнопку "Плюс" - входим в изменение параметра.
3. кнопками "Плюс" и "Минус" изменяем параметр.
4. удерживая кнопку "Старт", нажимаем кнопку "Минус" - выходим из настройки данного параметра и сохраняем его в EEPROM.
при необходимости повторяем пункты 1-4 для всех настраиваемых параметров.
5. одновременным нажатием кнопок "Плюс" и "Минус" выходим из режима режима настроек в режим обычной индикации работы.
для настройки уставки отключения можно оставить существующую подпрограмму.
а для коэффициентов тока и напряжения придется еще вводить полноценные подпрограммы умножения и, возможно, деления 16 бит на 16 бит.
например, для коэффициентов тока и напряжения число 32768 будет означать коэффициент 1.
тогда, в пределе, 65535 будет почти 2, а 16384 будет соответствовать 0,5.
но это надо еще тщательно обмозговать...
это несерьезно.Flash.#13 писал(а):Вместо "0x32" пишете больше или меньше, как вам надо, и компилируете...
а на хрена ты тогда вводил несколько поддипазонов в программу?
что, для каждого поддиапазона заново компилировать программу и прошивать флешь?
же калибровать...goldmen8 писал(а):Циферками проще
- Вложения
-
- Imax2.asm
- (19.5 КБ) 220 скачиваний
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


