История изменения версий

За основу взят 1-Wire_LCD прожект. Для увеличения структурности
реализовал AddIncludeFiles.bat - сборщик включаемых файлов из подсистем.
Результирующие _Out\*_All.inc собираются перед каждой компиляцией из фрагментов в подсистемах.
Сбылась затея про "много файлов, хороших и разных".
Ctrl+Shift+F "Find in Files" - весьма удобная и полезная штука в таком контексте.
В процессе переноса кода в новую структуру - слово "бутстрап" новое понимание пришло.
Когда для вытягивания прожектом самого себя из трясины небытия за шнурки ботинок -
вначале для отладки делается временный СД и временный бипер, потом источник времени от таймера,
потом ЛЦД, потом АЦП, а потом источник реального времени переносится на АЦП (отлаженный)
и прожект уже имеет экран, клаву, енкодер и часики с бипером для вдумчивой отладки
всего остального с использованием этих ресурсов.
Отладчик ICD-2 так и не заработал - "нет связи с модулем". То ли разгон виноват то ли линкер-скрипт.

Таймеров мало, надо переносить и экономить.
для измерения времени расширить прерывание 1 КГц от таймера-1
Ещё есть прерывания АЦП и прерывания PCPWM модулей как потенциальные источники времени.
Совместно реализован бипер 500 Гц - инверсия ноги в 1 КГц прерывании указанное количество раз.
Килогерцовое прерывание используется для задержек при инициализации ЛЦД и для опроса клавы/енкодера.

 Таймер0 = генератор микросекундных задержек протокола 1-Варе,
 высокий приоритет, прескалер 1/4
 Таймер1 = освободил
 Таймер2 = свободен
 Таймер5 = Учёт реального времени 16+8 бит для "тахометра", практически свободен - ибо тахометр с делением был лишь исследовательским.

объявление проца в Main\Define_Main_3F.inc он включается в каждый файл - смена проца проще. 

01/03/2017 09:52 - Отладка абсолютных путей для встроенного отладчика при  использовании AddIncludeFiles.bat
Добавлять ASM модули надо только по абсолютным путям, и корректировать   
Абсолютный путь прожекта Proj_Dir  в Main\Define_Main_3F.inc	
01/03/2017 14:40 - Отладка возбуждения прерываний - затянулась.
Конфигурирование контроллера прерываний вынес в конец Init_All (частично в Main_Module)
Запрет высокого приоритета - запрещает и низкий фактически вопреки мануалу.
01/03/2017 19:05 - Отладка прерываний - затянулась.
Добавил RealTimeKeep.asm в прожект вместо включаемого файла.
Тикает бипером раз в секунду в отладочных целях, команды на ЛЦД
Моргает светодиодой наконец-то (двумя).
 02/03/2017  08:22 - Утро вечера мудренее.
Попытка реорганизации банков - преждевременна, ЛЦД не так прост.
Возврат на нулевую страницу - многое изменил, начало инициализироваться
неустойчиво, через раз. Реализовал отключаемый бипер, Beeper 0x10 символ/макрос
 02/03/2017 16:12 - нашёл причину неустойчивой инициализации ЛЦД - не перенёс 
 инициализацию флагов/буферов в ЛЦД модуле. Отключение ЛЦД/клавы/енкодера проверил - работает,
 необходимо убрать АСМ файлы ЛЦД из компиляции и закоментить строку подсистемы в БАТ файле. 
 02/03/2017 19:20 - нашёл причину НЕ работы подлитого 1-варе - единовременно ставился бит "надо"
нашёл в отладчике и "Find in files" тоже. Заготовка почти готова к приёму цели - синтезатора частоты.
Процесс структурирования/раздирания на файлы - не так сложен как казалось, "глаза боятся, руки делают".
 02/03/2017 20:40 подключил EPROM, устранил явные ошибки компиляции. Работает ли сохранение - 
покажет опыт после подсоединения енкодера и кнопок.
 02/03/2017 00:15 подключил АЦП от старого прожекта 4 канала 64 усреднения, заработало вроде.
 03/03/2017 02:12 Измерил количество прерываний АЦП в секунду и количество переполнений буфера,
 цифири вывел на экран. Непонятные значения количества прерываний - арифметика не вяжется с мануалом.
 03/03/2017 10:02 Нашёл глюку и непонимание мануала. Частота прерываний циклического АЦП теперь в соответствии 
 с мануалом - 18750 Гц, по ней подстроил коррекцию Таймера реального времени и можно освобождать таймер,
 1/10 сека будет достаточно точно генерироваться, 1/100 и 1/1000 сека будут не ровными, но изохронными.
 При частоте прерываний АЦП 31+ КГц наблюдаются весьма редкие потери буферов АЦП. 18750 Гц - наиболее приемлемый вариант.
 Коррекцию придётся 1 раз в сек изобретать отдельный счётчик или корректор придумывать.
 Правильнее набор корректорв в секунду/минуту/час.
 03/03/2017 15:35 Перекинул буфера АЦП в банк-1, удвоил количество каналов, реализовал чередователь групп.
   за 5 часов теста - 0 раз потерянных выборок при частоте прерываний АЦП 18750 Гц.
 03/03/2017 22:57 - попытка перекинуть 1-Варе в первую страницу - провалилась. Вынужден был откатить на прежнюю 
 резервную копию всю подсистему 1-варе. Недостаточно часто резервные копии, однако легко восстанавливать по подсистемам
 индивидуально. Бонус от разделения на каталоги и много файлов подействовал.
 05/03/2017 11:41 - реализовал тетрадный алгоритм вывода символов на ЛЦД вместо побитного - 14 команд вместо 32,
 но как это будет в "общем зачёте" драйвера ЛЦД - надо измерять, отладочная нога - резистор - конденсатор - АЦП вход.
 05/03/2017 15:44 - Прерывания АЦП = источник реального времени. Точность не хуже 0.1 сека за 2 минуты (дольше не засекал)
 06/03/2017 06:12 - Новые провода ЛЦД и клавы, биты управления и Бипера поменялись, енкодер и клава чутка заработали.
 Енкодер весьма давно не включался - глюки с выводом текста енкодера (лепит не туда, систематически).
 06/03/2017 09:56 - Новые-Новые-Новые (3 перепайки) провода клавы/енкодера. Увеличил резисторы енкодера.
	Перевёл опрос клавы в 1000 Гц.
 06/03/2017 10:40 - вернул взад строки на экран для регулировки енкодером. Сохранение в ЕПРОМ не проверял пока что.
 Как бы так не случилось что убился ЕПРОМ записями без предела при отладочных бдениях буратины.
 06/03/2017 18:40 - заготовил структуру для PCPWM модуля, светодиоды на выходах фаз светят
	тусклым светом 1/20. Прерывания PCPWM 23 KHz похожи на правду "double updates".
 07/03/2017 01:21 - первые волны синуса по трём диодам побежали. Пока без умножения на напругу.
 07/03/2017 17:48 - целый день грыз двоичное умножение синуса на амплитуду, пока победы нет.
 07/03/2017 20:23 - заработало умножение на амплитуду. Надо было прибавить половину размаха для перехода к беззнаковому
представлению. Междуфазные светодиодики мыргают как ожидается.
 08/03/2017 00:16 - таблица перевода Скорость-Приращение начал реализовывать. Пока не пойму - надо ли оно.
 08/03/2017 08:33 - резервная копия перед переносом увеличения счётчика оборотов в прерывание и укорачивание его до 16 бит.
 08/03/2017 09:01 - тупо перенёс строки кода из основного циклера в прерывание - вроде работает. Приступаю к 16 битам.
 08/03/2017 10:14 - разделил увеличение счётчика вращения (в прерывании 11 КГц) и вычисление приращения/скорости - 100 Гц.
 08/03/2017 10:25 - присоединил LCD_Text.inc к LCD_Task.asm = одна подсистема = один АСМ для простоты.
 08/03/2017 12:20 - Удвоил DoubleUpdates для отладки, разделил обработчики фаз по 1 на прерывание,
   обнаружил что не успевает 10 раз в сек когда строка №6 выводится. Отключение 1-Варе не особо спасло.
 Видимо надёжное реагирование на прерывание находится в районе 20 КГц.
 Для разгрузки надо самые частые прерывания (18750 АЦП и 23400 PWM) перенести в высокий приоритет.
 На сохранении регистров и анализе запретов и прочем можно ощутимо сэкономить время проца.
 Начну с PWM - они чаще. Потом 1-Ware - они требовательные к скорости реагирования.
 АЦП и обработчики реалтайма - длинные, в последнюю очередь перенесу. 
 08/03/2017 13:21 - Заработали высоко приоритетные прерывания PCPWM модуля.
 Пропуск обработчика 1 раз в сек при 23400 PWM прерываниях Double Updates
 Добавление любого двоично-десятичного преобразования в строку - увеличивает частоту пропусков до 10 раз в сек.
 08/03/2017 14:51 - Подредактировал экран, в том числе строки енкодера
 08/03/2017 15:30 - Перенёс АЦП и РеалТайм в высокий приоритет для разгрузки проца.
 Добавил отладочный СменаБипа в переполнение PCPWM
  08/03/2017 21:56 - Напорол с арифметикой V/F. Возможно ACCESS/BANKED тоже перепутал.
  08/03/2017 23:08 - Отладил арифметику V/F. Не заменил один регистр.
  08/03/2017 24:44 - Добавил включаемый файл в 1-В обработки температуры синхронно с появлением показаний датчиков.
 Арифметика пока не работает, надо отлаживать.
  09/03/2017 07:55 - заработало сравнение темп с уставкой и зажигание/гашение СД в соответствии
	со знаком результата SUBWF Subtract W from f.
  09/03/2017 19:20 - ЕПРОМ заработало, обороты отладочные вывод раз в минуту.
  10/03/2017 05:22 - начал авантюру по разбивке BIN_2_BCD на участки кода.
  10/03/2017 06:12 - на 2 этапа разбивка вроде заработала.
  10/03/2017 07:03 - внедрил переклюк в Define_PCPWM_3F.inc #ifdef	PCPWM_1PhCalc	;
; Признак разбивки вычислений - по 1 фазе каждый вызов.
для оперативного опробывания влияния на потерю обработчиков.
Частота потери обработчиков 23 КГц не изменилась или уменьшилась.
  10/03/2017 11:02 - убрал задержки из драйвера ЛЦД и чтения клавы.
 ; rcall	Delay;Задержка - убрал 10/03/2017, 12 МИПС, работает.
  10/03/2017 11:25 - перенёс Timer-0/1-W прерывание в высокий приоритет.
  Пропуск обработки буфера прерыванием 23.4 КГц примерно 1 раз в минуту .
  14/03/2017 22:00 - первое вращение двигла 36 вольт 200 Гц от синтезатора. Версии проги разделены между деревней и базой - некоторая асинхронность
  возможна. Но глобальных не делал изменений - только синхронный режим работы выходов. Боевая буратина обзавелась енкодером и LCD и датчиком температуры
  силовухи. 
  17/03/2017 11:12 синхронизовал деревню с базой.
  Добавил тестовую задержку в вычислитель фазы - удлиннение на 72 команды вычислителя каждой фазы
  оставляет пропуски вычислителя в разумных пределах. Сохранение и Вывод RCON на экран для анализа причин сброса - 
  различаются 1С (подача питания) 0F (после прошивки) 0E (пониженное питание) 07 (WDT TimeOut) .
  18/03/2017 16:54 настроил собаку 4 мс, делитель в основном циклере 1/256, кусает как надо,
  вычислитель фаз 12-15 тестовая задержка без укусов. После укуса собаки RCON 07 читается.
  18/03/2017 19:06 Первая версия разделения рабочего/служебного экрана - заработала. 1-Варе почему-то перестаёт работать в 
  рабочем экране, выясняю. разобрался - 1-Варе был синхронизован с печатью 6 строки. Теперь либо 6 либо 7.
  18/03/2017 23:09 наворотил с единым тайм-аутом перехода из раб в настройки и наоборот, надо отлаживать.
  19/03/2017 08:28 Процедура енкодера вызывается лишь при обнаружении изменения его состояния. А тайм аут надо было чистить непрерывно.
   Сейчас состояние нажатия кнопы енкодера проверяется 10 раз в сек. Вначале вставил в опрос енкодера 1 КГц. 
  19/03/2017 18:40 Вызов переменной Под строки (код 1A) по номеру в регистре - заработал, но конфликтует с 1-Ware внезапно,
		 надо отлаживать.
  19/03/2017 20:03 Реализовал кнопы смены состояний флагов Stop/Run и Forward/Reverse с индикацией 10 раз в сек в 07 строке.
  19/03/2017 23:03 Нашёл причину конфликта с 1-ware вывода под строк - добавка кода для 1-варе не анализировала 
  вывод под строки. Убрал эту синхронизацию нафик.
  20/03/2017 09:12 Укоротил до 10 команд и обрезал до 16 бит и отладил GotoWreg (1 байт буфер нужен),
   добавил BraReg макрос 8 команд, которому не нужен буфер.
  20/03/2017 09:50 Добавил и опробовал CaseBra сабпрогу. Работает тоже. Заставил бипер арать если собака куснула.
  21/03/2017 12:45 Отображение и Анализ битов старт/стоп и прямо/реверс стругаю, понизил частоту ШИМ вдвое.
  22/03/2017 08:57 Плавный старт/стоп реализован и отлажен, запрет реверса при вращении поля реализовано,
   регулируемое сохраняемое в ЕПРОМ ускорение реализовано, разные частоты опроса енкодера и кнопок реализованы.
  22/03/2017 20:10 Отлажен и проконтролирован останов PCPWM модуля с проверкой уровня на выходах после RESET и при останове.
  Некоторое НЕ соответствие документации обнаружено, интерпретация бита состояния LPOL зависит от режима выходов - 
  синхронные или независимые. Обнаружен глюк с НЕ печатью признака редактирования параметра в настроечном экране.
  23/03/2017 07:19 Обороты - раз в сек, раб экран отшлифован,
   печать символов редактирования параметра в служебном экране восстановлена, нехватка буфера BIN2BCD обнаружена и устранена.
  23/03/2017 08:32 Разделено во времени выдача синхронных строк 1 раз в сек и 10 раз в сек.
   Обнаружена опасная НЕ сработка WDT при лишнем возврате в обработчике высоко приоритетного прерывания.
   Проц повис и наглухо. 
  23/03/2017 09:34 Настроил WDT для учёта количества прерываний ADC, PWM и оборотов главного цикла каждые 4 мСек
  23/03/2017 10:26 Обнуление таймаута смены экранов при редактировании параметра в экране настроек.
  25/03/2017 06:44 Добавил и отладил полный адрес ОЗУ в команду ЛЦД 0x11 для начала перехода к полным адресам.
	Добавил и отладил засекание максимального значения некоторых каналов АЦП каждый оборот.
  25/03/2017 07:05 Перенёс АЦП во вторую страницу для распределения памяти - успешно.
   Засёк запас по быстродействию для прерывания АЦП после добавки определения
   3х максимумов - уменьшился вдвое запас. Запас в вычислителе PCPWM уменьшился не сильно,
   запас в главном циклере (при отключении собаки) тоже засёк - 8.8 МИПС при потере вычислителей
   и 7.8 МИПса практически без потерь вычислителей фаз (1910 оборотов * 102 задержка * 4 * 10 раз в сек)
   Задачи в основной циклер можно добавлять без несомнений.
 25/03/2017 09:11 добавил 4 чтения буфера ФИФО АЦП в случае пропуска обработчика
 26/03/2017 19:07 закончил переход LCD_Text на полные адреса регистров во всех командах вывода.
 26/03/2017 23:43 Переделал и отладил синхронизацию ЕПРОМ по полным адресам регистров.
  Теперь Синхронизируются регистры с адресами, внесёнными в файл Proj_Dir\EPROM\EPROM_RegsAdr.inc
 27/03/2017 20:12 Добавил модуль арифметических вычислений. Начал с деления FXD1608U Reciproating
  Заготовка пока содержит 4-5 команд вычислителю и 45 шагов внутри вычислителя. Первое деление 
  заработало как ожидалось.
 27/03/2017 24:55 Перенёс все саб проги деления в прокрустово ложе кооперативной многозадачности -
	 работают не стабильно, надо отлаживать.
 28/03/2017 08:16 FXD2416U из AN900 - не работает. Вся работа по шлифовке чужого глюкала=зря, лишь тренировка отладчика.
  AN900 использует указатели таблиц между переходами, а они портятся в главном циклере.
  Реально листинг Си раскатали на АСМ,  живой человек пишет не так. 
 28/03/2017 14:11 Div32/16 заработала. После архивации - вырежу глюкало FXD нафик.
 28/03/2017 22:02 Вырезал FXD, сместил Div в 0 и 2 шаги. Во 2 шаге тестовый с нормальным
 порядком байт и человеческими именами переменных. Анализирую алгоритмы делителя.
 29/03/2017 08:50 Тест вычислителя FDivU32/16 и FMuL1616U показал результат 31 секунда на 65К операций умножения и деления
 с сопоставлением результатов. Итого 2+К делений в секунду реальное доступное быстродействие вычислителя на фоне остальной
 загрузки. Реальное потребление вычислителя 1.8 МИПСа, 1/6 от общего. 1/3 сожрали прерывания PCPWM/АЦП.  
 Тест добавки в основной циклер показал что 6+ МИПс можно догружать основной циклер кусками по 300 команд со снижением оборотов до 20КГц.
 При этом быстродействие вычислителя упало до 607 делений в сек, 0.5 МИПса потребление.
 Итого КПИ мелкопроца при дружественной многозадачности - не превысит 1/2 при реальном применении.
 Вторая половина уходит на накладные потери Cooperative Multitasking если гарантируемое время отклика главного циклера около 1/23 КГц.
 30/03/2017 07:09 Добавил Bad_Block в синхронизатор ЕПРОМ,
 Добавил каркас задачи АЦП с флагами обработчиков, добавил 16 бит тайм-аут готовности ЛЦД.
 30/03/2017 10:16 Макрос FXM1616U macro A_Arg,A1A,B_Arg,A1B,_Work,A1W; ; Подразумевается в памяти Младший-Старший байт идут
  добавлен в Pic_18M.inc и проверен/освобождён от лажи. 
 31/03/2017 06:57 Озадачился отсутствием автомат резервного копирования после каждой компиляции,
	(несколько раз было надо откатить на пару компиляций или поглядеть как было)
 подключил старый собственный батник изготовления циклических резервных копий, подрезал и отладил.
 31/03/2017 13:00 Вольты и Амперы наконец добежали до экрана, пока не правильные.
 Реализовал подстроку в 6 служебном экране - 4 строка заменяемая. Реализовал строки енкодера для 4х корректорчиков.
 31/03/2017 16:39 Заплутал в 3 флагах при попытке сделать независимые очереди на обработку буферов АЦП.
   Заработало в итоге, отладил. Надо писать обработку тока.
 02/04/2017 14:48 Обдумал и переделал прерывания. Длинное АЦП единственное в низком приоритете, 
 короткое и сверх короткое от таймера-0 и Таймера-5 - в высоком.
 Вычислители фаз из основного цикла - в низкий приоритет. В итоге - пропуски обработчиков фаз исчезли на реальных режимах.
 Обнаружилось арифметическое НЕ соответствие - тестовая задержка в вычислителе фаз 240 команд * 18750 * 3 вычислителя 
 даёт 13.5 МИПСов потерь только на задержку. А ещё есть и другие дела.
 03/04/2017 10:33 Шлифанул вычисление фазного значения, новый макрос FXM1680U отладил. Выяснил причину арифметического НЕ соответствия - 
  было включено раздельное вычисление фаз, отключил.
 04/04/2017 07:14 Переименовал каталог подсистемы Int_Low в Interrupt, АСМ тоже переименовал.
 05/04/2017 11:32 Переделал SpeedCalc на линейную скорость, добавил хранимый в ЕПРОМ параметр "индекс максимальной скорости", 
   добавил таблицу простых чисел 256 штук 16 бит и прогу на басице по её заполнению.
   Оформил макросами подготовку таблицы к выборке и умножение 8 бит на табличное значение (используется 2 раза)
 05/04/2017 14:17 Часть глюков после масштабной переделки SpeedCalc устранена. Освободил Access каплю.
 05/04/2017 15:42 Устранил неполадки с переполнением при Y=k*X+B в SpeedCalc
 05/04/2017 18:27 Добавил отладочную строку для вывода ст байт всех каналов АЦП, соответствие номера ноги
  и адреса буфера АЦП надёжно подтверждено. Заработал циклический старт-стоп при регулировке ускорения.
 05/04/2017 23:35 закопался в попытке сделать много канальный вход в ЛЦД модуль, надо отлаживать.
 06/04/2017 06:24 Обнаружил что отладчик не слишком правильно WDT симулирует и загрузку прерываний не слишком 
	правильно делает. Добавляю условные блоки __DEBUG
 06/04/2017 07:04 Нашёл ошибки "блуждания в 3х флагах" - в макросе не ставил флаг, после сброса флага не добавил RETURN
 и перед выводом строки №0 не ставил флаг. Однако чудесным образом перестал зажигать светодиоды 
 PCPWM модуль. Сделаю откат и устраню обнаруженные ошибки в той версии где работало без экрана.
 06/04/2017 07:19 Откат каталога PCPWM_3F на версию "вчера ночер" EC_177 решил проблему. Надо поглядеть предметную разницу.
 Условная компиляция макросов __DEBUG выявила глюки или я напорол в спешке прибавления кода ?
 06/04/2017 10:05 Несколько дней назад начались укусы собаки при сохранении параметров в ЕПРОМ неизвестной природы.
  Примерно с тех пор когда 6 экран разгребал под смену нижней строки. Причина даже примерно НЕ понятна.
 07/04/2017 20:32 Копия перед переделкой АЦП для удвоения частоты прерываний АЦП.
 07/04/2017 23:07 Проскочить не удалось.
  Виснет если приходить к нужной комбинации через чтение-модификация-запись 1 и 2 битов.
 08/04/2017 08:41 Признал попытку удвоить частоту прерываний АЦП НЕ удавшейся с наскока, откатываю взад подсистему АЦП.
 13/06/2017 18:47 добавил 4 таблицы простых чисел в качестве приращений для 100-200-400-800 макс Герц синтезатора.
 17/06/2017 Обошёл ошибку "длительность больше периода" увеличив период от 0x03FF до 0x0404 - провалы синуса и пение двигла исчезли.
 27/06/2017 начал реализовывать конечный автомат состояний синтезатора с задержками. Нарвался на глюки, отлаживаю.
 01/07/2017 09:03 Отладка глюков конечного автомата состояний двигла затянулась.
 01/07/2017 12:11 Отловил глюку с сохранением параметров ЕПРОМ - для прерывания не сохранялся EECON1 изменяемый при сохранении ЕПРОМ
 01/07/2017 13:12 Флаги конечного автомата работы двигла заработали примерно как планировалось - сохранил версию.
 01/07/2017 20:12 Регулируемые Уставки порогов термистора, тока и напряжения - заработали как ожидается примерно.
 02/07/2017 12:27 Добавил регуляцию и обработку порогов температуры, щлифанул экраны и параметры, поменял напругу на 460 вольт
 08/07/2017 08:49 Мелкие шлифы, отладил отключение PWM, добавил защиту дребезга в клаву, вращение енкодера стало тупить,
	копия перед полным разделением веток обработки изменения состояния енкодера и кнопок.
 08/07/2017 10:58 Полностью разделил обработчик изменения состояния енкодера 1000 Гц и клавы 100 Гц с фильтрацией дребезка
	30 стабильных состояний подряд.
 08/07/2017 12:28 Вроде отладил изменение действия второй кнопы Старт по просьбе Сварного.
 Реализована разница присоединения кнопок в учебной и боевой буратинах.
 12/07/2017 07:04 Устранил ошибку в фильтрации дребезга кнопок, добавил регулируемый параметр количества стаб
	состояний клавы перед реакцией на событие. Обнаружил ошибку при чтении ЕПРОМ -
	если параметров больше порога - то буратина висла и в отладчике не проглядывалось, заподозревал
	прерывания, запретил и укоротил циклер чтения ЕПРОМ. Забанил 1-Ware для боевой буратины.
 18/02/2018 опубликовал внедрённый прожект   
 26/02/2018 15:33 Пробная компиляция с использованием mpasmx от  MPLAB_X_IDE_v4.10 - вроде скомпилилось.
 15/03/2018 18:28 Исправил опечатки в описании, опубликовал первую версию "истории изготовления первого экземпляра".
 21/09/2018 09:38 Добавил условности для 28 ног 2431 (наличие PortD и прочих ADCON1), отладил клаву/энкодер на PortC.
	добавил условности #define PCPWM_IRAMY Yes	; Силовой модуль НЕ отключается через ITRIP - надо гасить PWM модуль.
	добавил условности #define CyrTable	Yes	; Таблица и код подмены кирилики из Win1251 в HD4478, русификация сообщений.
	обнаружил и устранил глюку с разной скоростью изменения скорости енкодером в раб экране
	добавил макрос гашения PWM ITRIP_Stop macro	используется 4 раза.
 30/09/2018 21:53 попытка внедрить макрос MoveEditToWorkSpeed окончилась неудачей - при переключении бита 
	срабатывает защита от термистора по непонятной причине (банки или Fault от IRAMY - 02/10/2018 оказалось просто обороты = 0,
	но кто их обнуляет - пока не искал)
 02/10/2018 11:51 по логам выходная компиляция под цель - питание шпинделя 250-450 Гц 2.2 КВт.
	По причине цейтнота не записывал переделки в процессе модификаций кода, по памяти на 03/10/2018 20:00:
	1. Внедрил смену направления вращения не переменой фаз а переменой направления "вращения" симулятора вращения
	(прибавление/вычитание приращения=скорости). Надо проверить измеритель оборотов на реверсном вращении 
	(мог накосячить с инверсным заёмом). Старт-стоп-реверсы должны стать без рывков, которые иногда бывали заметны, в тч на видео.
	2. Проверил осциллографом работу ШИМ - реально подтвердилась потеря двойки из мануала - ШИМ вдвое быстрее.
	В итоге имеем 12 бит 11+ КГц центрально-симметричный ШИМ.
	3. Опция компиляции "No Reverse" меняет назначение кнопы "Реверс" на переклюк органа управления 
	(модификация источника оборотов) - энкодер или переменник. Автомат переклюк сделаю позже.
	4. Добавил в раб экран отображение 2 байт буфера АЦП измерителя тока - для подбора резистора смещения нуля ОУ.
	Выявилась заметная зависимость величины компенсации от потребляемого мозгами тока - добавка 25 мА подсветки экрана
	сместила 0 в минуса (резистор подтяжки ~333 КОм надо чутка уменьшать и искать как снизить влияние тока потребления на показания измерителя).
	5. Надо реализовывать подстроку в раб экране - если код ошибки ноль - то диагностика, иначе - расшифровка ошибки текстом. 
 03/10/2018 опубликовал внедрённый прожект   
 01/01/2019 Создал каталог подсистемы PCPWM_12b для попытки замены 8 бит арифметики фазного вычислителя на 12 бит.
	Некоторые INC файлы берутся из прежней 8 бит подсистемы. Подсистемы разбаниваются либо 8 либо 12 бит в AddIncludeFiles.bat. 
 04/01/2019 16:00 Спаял мозги до экрана/енкодера/1 кнопы/переменника - отлаживаю 12 бит.
 09/01/2019 23:00 Нашёл первую ошибку в 12 бит - не обнулял младший бит угла перед выборкой синусов - исправил.
 11/01/2019 19:10 Нашёл вторую ошибку в 12 битах - перемножение 12 бит синуса на 12 бит амплитуды - переполнялось
	при амплитуде 0xFFF, ограничил размах таблицы синуса 4096 до 4080 для не достижения переполнения при умножении на амплитуду.
 12/01/2019 07:00 Добавил файл отладки макроса вычислителя фазы с выводом данных в текстовый файл через симулятор UART - 
	по показаниям осциллографа есть ощущение неоднородности преобразований синуса в PDC - это либо биения
	 частоты ШИМ и частоты выборок 25 КГц, либо огрехи арифметики - надо выяснить.
 13/01/2019 13:13 борьба с загадочной добавкой 0x0D (13.) перед любым 0x0A (10.) в симуляции вывода на UART.
 13/01/2019 22:13 Причина НЕ монотонности значений в PDC исчезла при замене макроса масштабирования
 ; FXM1680U на не упрощённый FXM1616U2 - надо искать косяки упрощения.
 Файлы отладки UartDbgOut_14.bin и UartDbgOut_13.bin для сравнения.
 14/01/2019 14:14 Исправил макрос умножения 1680U2 и дополнительно укоротил его.
 Свобода ОЗУ:P0=123 0x60 0x25 P1=147 0x100 0x6d P2=116 0x200 0x74
 15/01/2019 07:00 Переделка вычислителя фазы на коэффициенты из ОЗУ.
 15/01/2019 12:31 Вроде таблица параметров ШИМ из экселя переехала в ОЗУ
 15/01/2019 19:19 Вроде параметры ШИМ из экселя добежали до PDC и остального - пара ошибок устранена отладчиком
	Добавляю параметры в регулировку енкодером.
 16/01/2019 08:53 Открыжил реорганизованный список параметров в ексель, вношу в LCD_Enc_Text.inc
	с русификацией CyrTable
 16/01/2019 17:51 Новый список параметров енкодера вроде заработал - сохранение надо делать с блоками.
 16/01/2019 20:51 Обнаружил что с 1-Ware буратина не работает после начала добавки 12 бит.
 19/01/2019 09:30 Припаял второй переменник на АЦП-1/3 (напруга шины либо переменник) и третий RC фильтрации ШИМ 1 Ком/1 мкФ.
	Отладка таблиц настроек ЕПРОМ, отладка частоты ШИМ, отладка 12 бит - затянулась.
 19/01/2019 20:15 Чтение настроек из ЕПРОМ при старте вроде заработало.
 20/01/2019 EPROM_Sync code 0x003886 program 0x00018a до выделения саб проги - отладка затянулась
	EPROM_Sync code 0x003888 program 0x000168 - сабпрога сэкономила 34 байта,
	но инициализация не прошла - глюков добавилось, откатил взад.
 20/01/2019 19:30 EPROM_Sync вроде заработал со сменой мотора - пишет параметры куда требуется, смена мотора работает.
	Занесение значений в ЕПРОМ при программировании - тоже проверено.
 20/01/2019 20:00 Проверил на осц как работает PDC_TableLoad.inc при различных амплитудах - похоже на правду,
	но строка №0 не генерирует - надо проверять или ограничить выбор без неё.
 25/01/2019 19:01 порочная практика НЕ вести данный лог об вносимых изменениях - привела к откату на пару 
	дней - запутался между деревней и базой, забыл что именно делал на выезде, заготовка стала виснуть.
	Откатил на состояние ближайшей компиляции в деревне 23/01/2019 00:00 VFD3F_839.7z в него добавлю файл
	макросов Pic18M и строки нового прибавления угла - заработали.
 25/01/2019 20:56 Проверил работоспособность 12 бит при вычислении 3 фаз каждое прерывание АЦП - вроде не виснет.
	Пропуски обработчика буферов сейчас погляжу.
 25/01/2019 22:52 Архив 12 бит 3 фазы и работающей 1-Ware - 190125_1W_3F_12b_FirstWork.ZIP
 	Реализую таблицу углов сдвига 2 и 3 фаз из 4 штук 2*3 байта значений.
	Из недо отлаженных - выделение повторяющегося кода в ЕПРОМ в саб проги - почему-то с первых попыток не удалось.
 26/01/2019 11:29 - проверяю возможность подъёма частоты прерываний с 1/640 до 1/512 от тактовой.
	Без ЕПРОМ и PCPWM - работает на 1/4 быстрее, но не работает даже если 8 бит по 1 фазе вычислять.
	Возможно проблема именно в ЕПРОМ, но его отключать - это все значения руками инициализировать - напряг.
	Отключение ЕПРОМ реально убрало зависание при инициализации на повышенной частоте АЦП - разгадка близко.
	Видимо не успевает прочитать до 1 прерывания блок параметров.
	Запас быстродействия при прерываниях АЦП 24.414 КГц около 2.2 МИПСа или 90 команд на каждое прерывание
	до начала повторных входов в прерывание ~ 1 раз в секунду.
 05/02/2019 20:07 Припаял ток и термистор и силовой модуль. Обнаружились удивительные глюки при подключении 1-Варе - исследую.
 Пищит, и оползень на ЛЦД. При этом задачи не виснут и собака не кусает.
 06/02/2019 23:59 Вычислитель амплитуды 12 бит вроде заработал, начальное смещение возводится в квадрат,
	макрос Con16v12 тоже вроде работает. Хочется вдвое укоротить таблицу синусов или вдвое поднять разрядность угла.
 07/02/2019 02:32 попытка обработки старшего бита адреса таблицы синусов не заработала - отлаживать надо.
 08/02/2019 01:14 Недочёты вычислителя вроде найдены, половина периода косинуса выглядит неразрывной, экономия ~2 Кб. 
	Table_Sinus code 0x0001f2 program 0x001b84
	Table_Sinus code 0x0001f2 program 0x001392
 08/02/2019 01:41 После укорачивания таблицы синусов - 1Ware волшебным образом самопочинилась. Свободно ~2 Кб ПЗУ.
	1-Варе отняла ~1200 байт ПЗУ
 08/02/2019 19:27 Отловил глюку с тахометром - используемая рабочая переменная переехала в прерывания
	 вместе с фазным вычислителем, заменил на рабочую от главного циклера.
 08/02/2019 22:06 в поисках причин странной глюки с экраном - переместил все таблицы в верхнюю половину памяти,
 исполняемый код в нижней половине. Неудобно руками править начала таблиц при удлиннении текста например. 
 11/02/2019 18:09 Поправил контроль длинны ЕПРОМ и блока ОЗУ, нашёл ошибку ACCESS/BANKED в LCD мешающую переносу из 0 банка. 
 11/02/2019 22:11 Вроде заработала регулировка угла между фаз из меню - 4 варианта:
   0 = 1/5 и 1/2 оборота для конденсаторных, 1 = 1/4 и 1/2 оборота для конденсаторных
   2 = (1/2-1/5) и 1/2 оборота для конденсаторных,3 = 1/3 и 2/3 оборота для 3 фазы двигла
 12/02/2019 19:11 Исправил порядок байт в таблице смещений угла, выходной синус стал как ожидается,
 средний вывод модуля = вторая фаза (которая через конденсатор питалась) конденсаторных двигателей,
 крайние = бывшие выводы 220 вольт.
 14/02/2019 21:10 Частота автостарта из параметров двигла заработала.
 15/02/2019 17:34 Удвоил подъём амплитуды с оборотами для амплитуды 100% в середине оборотов,
	периодическая инициализация экрана 1 раз в минуту/секунду рабочий/служебный.
 16/02/2019 11:08 Заработала читалка серийников 1-варе, присоединил новые пару датчиков.
 23/02/2019 12:04 Сократил прерывание 1-варе,
	добавил синхронизацию обмена битов 1-варе с частотой ШИМ для уменьшения шума ШИМ
	от интерференции с чтением битов 1-варе - возможно нет смысла но работает.
	Убрал прерывание таймера-5 - вроде тахометр не изменился.
 24/02/2019 08:50 Убрал CaseBra из Lcd_Task по подозрению в редкопроявляющейся глюке.
	Мотор могет крутится до глюки более часа - надо длительное тестирование версий.
	Глюка опять внезапно вылезла после укорачивания/переделки кода 1-варе 23/02/2019,
	время работы мотора до глюки варьировалось 3-60 минут, возможно в зависимости от напряжения, тока и прочих случайных факторов.
 24/02/2019 12:34 в поисках глюки долговременной работы - произвёл учёт количества и сделал переклюк выбора вычисляемых переходов
 "Ощущение" не подтвердилось - отсутствие CaseBra не убрало глюку, замена всех на CaseBra - работает уже 7 минут.
 В ожидании часа/второго - буду пилить текст ЛЦД.
 24/02/2019 15:42 перенос вычисляемого перехода внутрь кода 1-ware с целью укорачивания Bra менее 512 байт - повысил 
 устойчивость до 6 часов работы, далее не проверял, архив 190225_Stable_3F_1W_6H.ZIP
 25/02/2019 23:48 для увеличения надёжности исполняемого кода и таблиц в ПЗУ - произвёл разделение с выносом таблиц в конец ПЗУ.
 Добавлен суммируемый файл для НЕ исполняемого кода Table_SubDir собираемые в Table_All.
 Добавлен код чистки стека для попытки восстановления после промаха Bra с глобальным именем Restore_ML
(получению управления там где его не должно быть). Все таблицы подключаются в Main.asm.
 08/03/2019 17:11 перенёс вычисляемый переход в середину ADC_Step - 1022 байта
 08/03/2019 17:28 перенёс вычисляемый переход в середину Speed_Change - 256 байт
 09/03/2019 ~17:00 Начал реализацию возможности выбора PcPwmProg нескольких программ управления мотором 
 10/03/2019 08:44 Первая успешная компиляция c независимым вариантом PCPWM_1 длинна 0x1c2 = 450 байт
 10/03/2019 09:09 Использовал CaseGoTo для использования одинаковых секций из первоначальной проги управления
	PCPWM_1 0x01ae = 430 байт при общем шаге №0
 10/03/2019 09:30 PCPWM_1 0x0160 = 352 байта общие шаги №0,1,2,3
 10/03/2019 13:05 PCPWM_1 0x0166 = 358 байт общие шаги №0,1,2,3,5,6
 10/03/2019 16:19 Заработал новый автомат состояний двигла
 16/04/2019 09:50 Сделал вычитание смещения нуля из накопителя АЦП тока,
 буферирование DTCON который регулярно обнаруживается нулевое значение.
 Присвоение DTCON сделал при каждом старте синтезатора.
 Сопутствующие шлифы служебного экрана
 16/04/2019 13:46 Реализовал копирование блока параметров при смене номера мотора на ходу.
 При остановленном моторе - смена номера мотора влечёт считывание другого блока параметров,
 но мотор может автостартовать. 
 Добавил параметр "Максимальное напряжение замедления" и обработку этого параметра (при напряжении выше указанного порога скорость поля не уменьшается).
 24/12/2019 опубликовал НЕ тестированный полностью прожект   
 27/12/2019 Заменил интерпретацию Par_VS теперь это дэльта от порога защиты по току/напряжению.
добавил отсутствие разгона при приближении к порогу защиты по току
 27/12/2019 13:40 добавил под строки диагностики при срабатывании аварийного останова в рабочем экране
 27/12/2019 22:35 добавил счетчик терпения защиты от не превышения тока/напруги при разгоне/торможении
 28/12/2019 Чутка восстановил прогу управления 0, разрушенную при экспериментах. Надо упрощать алго - плутаю в 3х флагах.
 29/12/2019 10:51 Добавил в 12 бит таблицу косинусов + 17% третьей гармоники CoSin_3_dW12.inc 
 копипаст из Parameters_PSW_12b.xls'CoSin Tab_123_16'!O5:O2059 отношение междуфазного к DC = 2.000
 17/01/2020 14:40 перенос буфера енкодера из PortB_Buf в Encoder_Bits заработал, третья прога управления заработала
 18/01/2020 08:30 Перенёс обработку кнопок в начало каждого SpeedChange из Ml_Task для не пересечения меток при копировании,
отладил прогу №2 токарника (увеличил однократные задержки/разбил обработчик кноп/убыстрение реакции на кнопы)
 18/01/2020 12:20 Добавлены наименования наборов настроек моторов, добавлен байт смещения в вывод ПОД строки.
 заменил интерпретацию Par_VS теперь это относительная дэльта вместо абсолютной, program memory utilization is 97%
 19/01/2020 12:12 добавил текстовые имена программ управления - свободно 44 байта ПЗУ - пора откапывать запасы/резервы.
25/01/2020 17:24 синусоида из 12 бит 1/4 периода таблицы отладочно добежала до PDC PWM и экрана отладки.
 25/01/2020 22:00 синусоида 8+1 бит 1/4 периода таблица отладочно добежала до PDC PWM и экрана отладки.
 26/01/2020 10:20 Длинна DelayCuriosity-PCPWM_Task=804 байта 3 макроса взяли, саб прога нужна.
 26/01/2020 11:20 Длинна DelayCuriosity-SinTabLd=334 байта после выделения в саб прогу,
 470 байт ПЗУ экономия от саб проги ценой ~ 3*6 циклов. На частотнике НЕ тестировалось пока.
 30/01/2020 20:30 Начал писать _DEBUG ветку отладки прибавляемой 3 гармоники для оценки возможности применения.
 01/02/2020 21:00 Первые волны синуса с 3 гармоникой побежали в отладочном Usart2Graf.bas - рвёт макушку, угадывание знаков.
 02/02/2020 08:00 Нашёл арифметическую ошибку (модуль числа не означает чистку знака), прибавление 3 гармоники без разрывов, ограничение стало маловато.
NotSendSinus   0x000492 EndDeBugLoop   0x0006f4 длинна 610 байт как таблица приращений из простых чисел 
 02/02/2020 10:00 Начало тотальной переделки для внедрения фазных вычислителей с 3 гармоникой и оценки применимости.
 05/03/2020 14:27 Попытки взять с наскока работоспособность 3H провалились, откат на копию 1121.
  1- Перенос сабпроги PCPWM_Task в тело прерывания для экономии команд.
 05/03/2020 19:02 Ошибка длинны PCPWM_AmpSin3 найдена и устранена
 05/03/2020 21:12 Ошибка смещения угла Angle_1/2 найдена и устранена
 05/03/2020 22:29 Обнуление амплитуды 3 гармоники исправлено и отшлифовано.
 Запас быстродействия до повторных входов в прерывание 1 раз в 10 сек ~28 команд при частоте прерываний CLC/512.
 07/08/2020 11:52 Причесал опции PCPWM_1PhCalc, PCPWM_3H, DelayCuriosityTest, записал запасы в Int_PCPWM_3H_x431.inc
 15/03/2020 16:32 Начал реализацию единой настраиваемой из меню 4 строки для служебного и рабочего экранов.
 20/03/2020 11:43 Единая 4 строка с приоритетным отображением PCPWM_MotorStatus и PCPWM_Alarm_Route вроде заработала,
	свободно ~50 байт ПЗУ = ещё -1 таблица простых чисел 750 байт.
 20/03/2020 18:51 замер быстродействия Math 16*16 умножения + 32/16 деления даёт ~284 Гц < меньше частоты данных АЦП 382 Гц
 если деление бить по 1 сдвигу за вызов. Если без разбиения то ~1200 Гц .
 22/03/2020 12:00 случайно найдена ошибка SpeedChange шаг 6 ожидание термистора НЕ изменён канал при переделке №2А, добавил
	строку диагностики 74 
 22/03/2020 13:58 вроде заработала компенсация амплитуды от измеренного напряжения DC шины на частоте CLC/32768,
	третий параметр амплитуды, индивидуальный по двиглам. Отредактировал ЕПРОМ_Дата и ЕПРОМ_Таблица соответственно.
 26/05/2020 10:01 Пробный Откат на версию 1119 от 02/02/2020 показал что
	1ware в №2Б неисправен схемотехнически а не программно.
 26/05/2020 11:30 Увеличение периода усреднения индикации тока/напруги/мощи до ~1 сек (381/256= ~1.5 Гц) заработало.
 07/06/2020 07:43 Начал реализацию проги управления поддержания давления по датчику/сигналу с АЦП.
 08/06/2020 18:20 Замыкание датчика давления устранил, первая компиляция Sp_Ch_3 копия из Sp_Ch_1
 10/06/2020 17:37 Добавил 10 регулируемых параметров, поправил ссылки на номера строк.
 11/06/2020 15:18 Программная стабилизация давления начала подавать признаки жизни, начал старт с реверса делать.
 11/06/2020 21:01 Прога №3 достаточно устойчиво стартует с реверсом до 8-10 атм противодавления.
 12/06/2020 09:15 Добавил формат вывода давления: 0x1B=DW	; без знаковый десятичный вывод слова давления ХХ.ХХ - 5 симв 
и другие мелкие шлифы экранов/подстрок/удобства регулировки параметров.
 12/06/2020 12:59 Копия работающего в видео №2 варианта  - удвоение задатчика в ней опять с маленькой ошибкой.
 13/06/2020 08:55 Подготовка укорачивания таблиц синуса до 10 бит адрес/9+8 бит данные четверть периода фикс адреса таблиц.
 01/07/2020 11:49 Обновил прошивку в  для внедрения новых возможностей.  
 19/07/2020 07:17 Анализ старта двигла и попытка ловли глюки "КЗ при старте", иногда/часто/всегда/никогда проявляющейся/прячущейся на №2А
	после 5 месяцев эксплуатации на токарном станке. Переделаю PWM_Start macro, StartOvd сабпрогу и SpCh_R5_0 SpCh_R6_0 шаги.
	Зарядка кондёров плавающего питания по одному, пауза на зарядку сглаживающего кондёра термистора как предполагаемые решения неизвестной причины глюки. 
 21/07/2020 09:05 Нашёл ошибку вычислений нуля тока в SpeedChange - мелькание 4 строки после останова ушло.
 Но опять высунулась глюка с термистором/триггером защиты от КЗ - исследую.
 26/07/2020 Поставил КиКад. 5 версия "мультиплатформенной"программы не заработала под ХР.
 31/07/2020 Первый вариант схемы/расположения деталей на плате в КиКаде версии 5.153.
 30/10/2020 11:16 Начало переноса настроек и изменений под мозги №3 в деревне - назначение выводов, легкосменный драйвер ЛЦД/Клавы,
	синхронный вывод в ЛЦД без использования R/W и без чтения занятости
 04/11/2020 12:37 Первая успешная компиляция с асинхронным выводом на экран
 04/11/2020 20:56 Разделение на	Write_LCD_Data и Write_LCD_Cmd с программной копией LCD_RS в Flag1,6,ACCESS чутка заработало.
	16534 out of 16664 program addresses used, program memory utilization is 99% - назревает очередная экономия ПЗУ.
 06/11/2020 16:30 Восстановил/шлифанул опцию #define Nibble_Lcd_Bus 0x1;0x1=High;0x0=Low ; Шина LCD 4 бита в старшей/младшей тетраде
	Редкие ошибки записи в LCD остались, увеличение задержек либо не изменяет либо увеличивает количество ошибок.
	Поведение LCD возможно похоже на глюку 05/02/2019.
 06/11/2020 22:01 Написание BraWarning.bas и замена найденных с его помощью ~35 шт BRA и RCALL длиннее 510 байт на
	goto и call ситуации НЕ изменила либо ухудшила - версия с влиянием неустойчивости BRA на ЛЦД не подтвердилась.
 08/11/2020 21:09 Исправлена ошибка печатки LCD RS и EN поменяны местами. Направление енкодера тоже поменял.
	Бипер подправил - выход включается перед подачей сигнала.
 12/11/2020 07:28 Разнообразные эксперименты с задержками влияют на количество ошибок LCD не предсказуемо -
	забанивание Math или 1-Ware резко увеличивают количество ошибок.
 12/11/2020 08:25 Перенос табл синусов по фикс адресу 0х1900 ошибки LCD не убрал, забанивание Math увеличивает ошибки.
	В отличие от глюки 05/02/2019 изменение расположения кода в ПЗУ не влияет на устойчивость записи в ЛЦД.
 13/11/2020 18:07 Проверка ЛЦД на макетной плате со схемой №3 и другим экземпляром мелкопроца не изменила количество ошибок.
	Шлифанул/проверил/отладил опции побитной/тетрадной записи, синхронной/асинхронной записи с чтением занятости - на ошибки ЛЦД не влияют.
 15/11/2020 19:52 Устранил ошибку назначения вывода 1-Варе, устранил ошибку исполнения интервала синхронной записи, очистку служебного экрана
	сделал в 9 тике для отображения часов - работает. Добавлен делитель частоты прерываний АЦП для опроса енкодера Encoder_Debounce_Time
	Рабочий вариант архивирован 201115_LCD_Syn_3F
 15/11/2020 21:23 Шлифанул опцию ;#define PCPWM_Board, устранил причину НЕ опроса левой кнопы, проверил генерацию ШИМ