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

За основу взят 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 для боевой буратины.
 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. Надо реализовывать подстроку в раб экране - если код ошибки ноль - то диагностика, иначе - расшифровка ошибки текстом. 
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 Реализовал копирование блока параметров при смене номера мотора на ходу.
 При остановленном моторе - смена номера мотора влечёт считывание другого блока параметров,
 но мотор может автостартовать.