\chapter{Конфигурирование Тестера}
\label{sec:config}
Пакет программного обеспечения для Тестера доступен с исходными кодами. Компиляцией модулей управляют с помощью 
Makefile. Разработка была сделана в операционной системе Linux Ubuntu с GNU toolchain (gcc версия 4.5.3). Можно 
использовать и другие операционные системы, например, Windows. Чтобы загрузить скомпилированные данные во Flash 
память и память EEprom программой avrdude (версия 5.11svn) загружают Makefile и указывают «make upload». Программа 
avrdude \cite{avrdude} доступна для операционных систем Linux и Windows. C-компилятор GNU gcc также поддерживается 
программным обеспечением AVR Studio и WinAVR \cite{winavr1},\cite{winavr2} в операционной системе Windows. Вы можете 
запрограммировать ATmega данными (.hex и.eep) также и другими инструментами, но только моя версия Makefile 
автоматически загрузит правильные данные в выбранный микроконтроллер. Avrdude загружает данные в ATmega, если 
Signature Bytes, подключённого ATmega, идентичны выбранному. Если Вы измените Makefile, то все программное 
обеспечение нужно будет скомпилировать вновь, указав команду «make» или «make upload». Программное обеспечение, 
скомпилированное для ATmega8, не работает на ATmega168. Программное обеспечение, скомпилированное для ATmega328, 
не работает на ATmega168! Исключением из этого правила является программное обеспечение, скомпилированное для 
ATmega168, эти данные могут также использоваться для ATmega328 без изменений. Будьте внимательны, если Вы не 
используете мой Makefile. 

При правильном выборе установок, мое программное обеспечение запускается на недоработанных аппаратных средствах 
от Markus F.
Вы должны установить PARTNO=M8, и {\bf НЕ} устанавливать опции NO\_AREF\_CAP и PULLUP\_DISABLE. 
Тактовая частота может также быть установлена \(8~MHz\) с фьюзами, указывающими, что кварц не требуется! 

Для конфигурирования программного обеспечение Вашего Тестера доступны следующие опции, определенные в Makefile.


\begin{description}
  \item[PARTNO] Описывает целевой микроконтроллер:\\
         m8 = ATmega8\\
         m168 or m168p	= ATmega168\\
         m328 or m328p	= ATmega328\\
         m644 or m644p	= ATmega644\\
         m1284p		= ATmega1284\\
         m1280		= Atmega1280\\
         m2560		= ATmega2560\\   
Пример:  PARTNO = m168

  \item[WITH\_MENU] Активируется меню выбора функций для ATmega328. Вы сможете выбрать некоторые дополнительные 
функции работы прибора из меню при длительном (\textgreater~\(0,5~s\)) нажатии кнопки {\bf TEST}.\\
Пример: CFLAGS += -DWITH\_MENU

  \item[WITH\_ROTARY\_SWITCH] Использование поворотного инкрементального энкодера в
качестве опции для быстрого доступа в меню дополнительных функций (смотрите описание
~\ref{fig:RotExt} в разделе Улучшения и расширения к прибору).
Если количество циклов переключения контактов, за каждый оборот Вашего энкодера, соответствует количеству 
фиксированных позиций, Вы должны установить значение WITH\_ROTARY\_SWITCH=2 или 3. Если полный цикл переключения 
требует поворота энкодера на две фиксированные позиции, то опцию WITH\_ROTARY\_SWITCH нужно установить =1.
Установка опции WITH\_ROTARY\_SWITCH равной 5 выбирает максимальное разрешения энкодера. Каждый цикл переключения 
в двух каналах дает 4 результата состояния счетчиков. Обычно этот параметр полезен только для энкодеров без фиксации.
Значение опции WITH\_ROTARY\_SWITCH равной 4 необходимо, если установлено две отдельные кнопки 
«Вверх» и «Вниз» вместо энкодера. Не используйте значение 4 если у Вас установлен энкодер!\\
Пример: CFLAGS += -DWITH\_ROTARY\_SWITCH=1

  \item[CHANGE\_ROTARY\_DIRECTION] Опция позволяет программно изменить направление движения курсора при повороте 
энкодера. Опция CHANGE\_ROTARY\_DIRECTION равнозначна физической перестановке выводов каналов энкодера.\\
Пример: CFLAGS += -DCHANGE\_ROTARY\_DIRECTION

  \item[ROTARY\_2\_PIN=PD2] Опция позволяет программно изменить назначение порта PD1. Лучшее решение для подключения 
инкрементального энкодера это порт PD1 и PD3. Tак как первый проект использовал PD2 вместо PD1, то 
вернуться к старому варианту Вы можете, переопределив PD1 и установив следующую опцию настройки по умолчанию: 
CFLAGS += -DROTARY\_2\_PIN=PD2. Для второго канала энкодера можно использовать любой 
свободный порт PD указав его номер.\\
Пример: CFLAGS += - DROTARY\_2\_PIN=PD2
 
  \item[UI\_LANGUAGE] Определяет выбранный язык\\
В настоящее время доступны:\\
    LANG\_BRASIL, LANG\_CZECH, LANG\_DUTCH, LANG\_ENGLISH, LANG\_GERMAN,

    LANG\_HUNGARIAN, LANG\_ITALIAN, LANG\_LITHUANIAN, LANG\_POLISH,
 
    LANG\_RUSSIAN, LANG\_SLOVAK, LANG\_SLOVENE, LANG\_SPANISH и 

    LANG\_UKRAINIAN. Русский или украинский язык требует LCD-дисплей с 
кириллической кодировкой.\\
Пример:  UI\_LANGUAGE = LANG\_RUSSIAN

  \item[LCD\_CYRILLIC] Необходима для некоторых LCD-дисплеев с кодировкой для европейских или кириллических языков.
Символы \(\mu\) и \(\Omega\) отсутствуют в их кодировке. Если Вы выбрали эту опцию, то оба символа 
отображаются на LCD-дисплее программно.\\
Пример: CFLAGS += -DLCD\_CYRILLIC

  \item[LCD\_DOGM] Должна быть установлена, если применяется LCD-дисплей с контроллером ST7036 (тип DOG-M). 
Контрастность LCD-дисплея устанавливают командами программного обеспечения. 
Если значение контраста изменено не корректно и на дисплее ничего не видно, то Вы можете попытаться 
его отрегулировать при просмотре дисплея под большим углом. Если и это не решило проблему, то надо переписать
содержимое EEPROM при помощи ISP программатора.\\
Пример: CFLAGS += -DLCD\_DOGM

  \item[FOUR\_LINE\_LCD] Предусматривает установку символьного 4x20 LCD для более детального отображения 
дополнительной информации. Для графических контроллеров 128х64 установка этой опции не обязательна, так как
для них информация выводится всегда в четыре строки.\\
Пример: CFLAGS += -DFOUR\_LINE\_LCD

  \item[DD\_RAM\_OFFSET] Некоторые символьные дисплеи используют различные DD-RAM стартовые адреса для начала каждой строки.
Обычно для строки 1 начальный адрес DD-RAM 0.
Некоторые дисплеи, например TC1604 или TC1602 используют 128 (0x80) для начала строки 1.
Эта опция может разрешить такую проблему. \\
Пример: CFLAGS += -DDD\_RAM\_OFFSET = 128

  \item[LCD\_LINE\_LENGTH=20] Задает количество символов, выводимых в одну строку для отображения на LCD.
Следует заметить, что для графических индикаторов 128х64 выводится 16 символов в строку. 
Этот параметр игнорируется для таких индикаторов. \\
Пример: CFLAGS += -DLCD\_LINE\_LENGTH=20

  \item[DPAGE\_MODE] При применении индикатора 4x20 LCD или графического индикатора 128х64 точек, позволяет 
изменить способ выбора пунктов меню: неподвижный курсор в третьей строке с перемещением пунктов меню или 
перемещаемый курсор по пунктах меню. \\
Пример: CFLAGS += -DPAGE\_MODE
 
  \item[WITH\_LCD\_ST7565] Эта опция должна устанавливаться при использовании графического 128x64 точек LCD с 
контроллером ST7565, который подключен по последовательному интерфейсу SPI или I\textsuperscript{2}C. Для этого типа дисплея должны быть 
установлены дополнительные параметры, которые указаны в таблице~\ref{tab:cod-display}.
При использовании контроллера ST7565 Вы должны установить значение этого параметра 1 или 7565. 
Вы также можете использовать совместимый контроллер SSD1306 вместо контроллера ST7565.
Это должно быть сделано путем установки переменной WITH\_LCD\_ST7565 = 1306.
Поддерживается дисплей с контроллером PCF8812 или PCF8814, если опция установлена правильно.
Также может быть подключен дисплей с контроллером ST7920 или ST7108.
Для контроллера ST7108 нужно использовать последовательно-параллельный преобразователь интерфейсов 
74HC(T)164 или 74HC(T)595. \\
Пример: WITH\_LCD\_ST7565 = 1

 \item[LCD\_INTERFACE\_MODE] Для контроллера SSD1306 возможно использование интерфейса I\textsuperscript{2}C с адресом 0x3c
вместо 4-проводного SPI интерфейса. Для использования такой возможности, значение параметра 
LCD\_INTERFACE\_MODE установите равным 2.
Для контроллера ST7920, при подключении по специальному последовательному интерфейсу, этот параметр должен быть установлен равным 5.
Все возможные, на текущий момент, значения LCD\_INTERFACE\_MODE и WITH\_LCD\_ST7565 указаны в таблице~\ref{tab:cod-display}.

\begin{table}[H]
  \begin{center}
    \begin{tabular}{| c | c | c | c|}
    \hline
  Тип дисплея         &  Итерфейс        & WITH\_LCD\_ST7565 & LCD\_INTERFACE\_MODE \\
    \hline
    \hline
  символьный 16x2,    & 4-Bit parallel   & Параметр        &  Параметр отключён (1) \\
  символьный 20x4     & 4-Bit SPI        & отключён (0)    &    4  \\
                     & I\textsuperscript{2}C &            &   2 \\
    \hline
  графический ST7565  & 4-Bit SPI        & 1 или 7565      &  Параметр отключён (4) \\
    \hline
  графический ST7565  & I\textsuperscript{2}C & 1 или 7565 &   2 \\
    \hline
  графический SSD1306 & 4-Bit SPI        & 1306            &  Параметр отключён (4) \\
    \hline
  графический SSD1306 & I\textsuperscript{2}C & 1306       &   2 \\
    \hline
  графический ST7920  & 4-Bit parallel   & 7920            &  Параметр отключён (1) \\
    \hline
  графический ST7920  & 2-Bit serial     & 7920            &   5 \\
    \hline
  графический ST7108  & 8-Bit parallel   & 7108            &  Параметр отключён (6) \\
      или KS0108      &    + 74HCT164    &                 &     \\
    \hline
  графический PCF8812 & SPI              &   8812          &  Параметр отключён (4) \\
    \hline
  графический PCF8814 & SPI              &   8814          &  Параметр отключён (4) \\
                    & I\textsuperscript{2}C & 8814         &   2 \\
                      & 3-проводной      &   8814          &   3 \\
    \hline
  графический ILI9163 & 4-Bit SPI        &   9163          &  Параметр отключён (4) \\
  128x128 Color     &                 &                   &              \\
    \hline
  графический ST7735 & 4-Bit SPI         &   7735          &  Параметр отключён (4) \\
  128x160 Color     &                 &                   &              \\
    \hline
    \end{tabular}
  \end{center}
  \caption{Настройка интерфейса подключаемого дисплея}
  \label{tab:cod-display}
\end{table}

В таблице значение кода в скобках указано для справки и используется внутрипрограммно.
По этому, параметр, значение которого указано в скобках, при использовании такого дисплея 
должен быть отключён в makefile.\\
Пример: CFLAGS += -DLCD\_INTERFACE\_MODE=2

 \item[LCD\_SPI\_OPEN\_COL] С опцией LCD\_SPI\_OPEN\_COL уровень сигнала данных SPI интерфейса
не достигает непосредственно уровня VCC.
Низкий уровень сигнала равен уровню GND, а высокий уровень ограничен использованием «подтягивающих» резисторов ATmega.
Если опция PULLUP\_DISABLE установлена, то требуется внешний резистор для сигнала RESET.
Для других сигналов внутренние «подтягивающие» резисторы ATmega используются, 
даже если опция PULLUP\_DISABLE установлена.\\
Пример: CFLAG += -DLCD\_SPI\_OPEN\_COL

  \item[LCD\_I2C\_ADDR] Адрес для контроллера SSD1306 при подключении по интерфейсу I\textsuperscript{2}C . Вы можете выбрать два 
варианта: 0x3c если вывод контроллера D/C подключен к GND и 0x3d если к VCC.\\ 
Пример: CFLAGS += -DLCD\_I2C\_ADDR=0x3d

  \item[LCD\_ST7565\_RESISTOR\_RATIO] Эта опция позволяет выбирать соотношение резисторов, для внутреннего 
регулятора напряжения контроллера ST7565.
На практике обычно эти значения от 4 до 7.
Возможна установка значений от 0 до 7.\\
Пример: LCD\_ST7565\_RESISTOR\_RATIO = 4

  \item[LCD\_ST7565\_H\_FLIP] Эта опция позволяет перевернуть выводимое на LCD изображение по горизонтали.
Возможные значения: 0 - без поворота; 1 - с переворотом.\\
Пример: CFLAGS += -DLCD\_ST7565\_H\_FLIP = 1
   
  \item[LCD\_ST7565\_H\_OFFSET] Горизонтальное адресное пространство контроллера (132) больше чем видимая область LCD (128).
В зависимости от конструктивной особенности модуля, для правильного отображения, может понадобиться задать значения 
0, 2 или 4.\\
Пример: CFLAGS += -DLCD\_ST7565\_H\_OFFSET = 4

  \item[LCD\_ST7565\_V\_FLIP] Эта опция позволяет перевернуть выводимое на LCD изображение по вертикали.
Значение 0 - без переворота, 1 - с переворотом изображения по вертикали.\\
Пример: CFLAGS += -DLCD\_ST7565\_V\_FLIP = 1

  \item[VOLUME\_VALUE] Для контроллеров ST7565 или SSD1306 можно переопределить значение контрастности.
Для контроллера ST7565 значение должно быть между 0 и 63. Для контроллера SSD1306 значение нужно
выбрать от 0 до 255.\\
Пример: CFLAGS += -DVOLUME\_VALUE = 25

  \item[LCD\_ST7565\_Y\_START] С этой опцией Вы можете установить первую строку правильно, 
т.е. вверху экрана. Первая строка в некоторых версиях дисплеев смещена к середине видимой области. 
Для такого варианта дисплея, Вы можете сместить первою строку к верху видимой области, 
если опция установлена 32 (половина высоты видимой области).\\  
Пример: CFLAGS += -DLCD\_ST7565\_Y\_START = 32

  \item[LCD\_CHANGE\_COLOR] Эта опция расширяет функции меню и позволяет 
изменить цвет фона и цвет выводимой информации. Если значение установлено равным 2, то цвета синий 
и красный меняются местами. Вы можете выбрать эту опцию только для цветных дисплеев (контроллер ST7735 или ILI9163).\\
Пример: CFLAGS += -DLCD\_CHANGE\_COLOR=1

  \item[LCD\_BG\_COLOR] Задав 16-битное значение, можно выбрать цвет фона.
Как правило, верхние 5 битов используются для красного цвета, средние 6 битов используются для зеленого цвета, 
а нижние 5 битов используются для синего цвета. Иногда биты для красного и синего цвета меняются местами.
Вы можете выбрать эту опцию только для цветных дисплеев (контроллер ST7735 или ILI9163).\\
Пример: CFLAGS += -DLCD\_BG\_COLOR=0x000f

  \item[LCD\_FG\_COLOR] Этим 16-битным значением Вы можете выбрать цвет выводимой информации.
В приведенном примере -- белый цвет для текста и символов.
Вы можете выбрать эту опцию только для цветных дисплеев (контроллер ST7735 или ILI9163).\\
Пример: CFLAGS += -DLCD\_FG\_COLOR=0xffff

  \item[FONT\_8X16] Вы должны выбрать размер шрифта для графического контроллера.
Доступны следующие размеры символов шрифтов с именем «FONT\_» из нижеперечисленных (ширина Х высота).
Размеры 6X8, 8X8, 7X12, 8X12, 8X14, 8X15, 8X15thin, 8X16 и 16X16thin сейчас доступны.
Шрифты 8х16 и 8х16thin наиболее эффективно используют графическое пространство дисплея 128x64 пикселя.\\
Пример: CFLAGS += -DFONT\_8X16

  \item[CFLAGS += -DBIG\_TP] Опция позволяет незначительно увеличить шрифт номеров выводов ТП на графическом 
изображении.\\
Пример: CFLAGS += -DBIG\_TP

  \item[CFLAGS += -DINVERSE\_TP] Опция позволяет вывести номера выводов на графическом изображении инверсно - «черное 
на белом». Использование опции INVERSE\_TP автоматически отключает опцию BIG\_TP, поскольку требуется место 
для обрамления.\\
Пример: CFLAGS += -DINVERSE\_TP
  
  \item[STRIP\_GRID\_BOARD] Эта опция позволяет изменить назначения выводов порта D для подключения дисплея.
Более подробное описание Вы можете найти в описании аппаратных средств главы \ref{sec:hardware} на 
странице~\pageref{sec:hardware}.
Вы также можете выбрать альтернативное подключение выводов ATmega к графическому индикатору.
Для китайского клона «T5» Вы должны установить значение STRIP\_GRID\_BOARD=5.
При альтернативном назначении контактов для графического дисплея подключение кнопки {\bf TEST} остается неизменным.\\
Пример: CFLAGS += -DSTRIP\_GRID\_BOARD

  \item[WITH\_SELFTEST] Если Вы выбираете эту опцию, программное обеспечение будет включать функцию самодиагностики. 
Самодиагностика будет начата, если Вы соедините все 3 испытательных порта вместе «перемычкой» и нажмете кнопку 
{\bf TEST}. Если функция выбрана, запускается только калибровка. Самодиагностика T1 - T7 возможна только при выборе 
функции из дополнительного меню.\\
Пример: CFLAGS += -DWITH\_SELFTEST

  \item[NO\_TEST\_T1\_T7] Эта опция отключает выполнение функций самодиагностики Т1 - Т7.
Эти тесты самодиагностики полезны для обнаружения ошибок в аппаратных средствах, например, неправильного измерения 
сопротивлений или проблемы с изоляцией. Если Вы уверены, что оборудование исправно, то для ускорения калибровки 
Вы можете пропустить самодиагностику Т1 - Т7, установив эту опцию. 
При включенной опции тесты Т1 - Т7 самодиагностики запускаются только из дополнительного меню «Selftest». 
Если с микроконтроллером ATmega168 используются оба метода измерения hFE, то функции самодиагностики T1 - T7 
пропускаются автоматически.\\
Пример: CFLAGS += -DNO\_TEST\_T1\_T7

  \item[SHORT\_UNCAL\_MSG] Если тестер не откалиброван, то отображается сообщение для процессоров, по крайней
мере, \(32~K\) флэш-памяти. Это напоминание с кратким описанием, как тестер может быть откалиброван.
Это описание не отображается, если Вы установите опцию SHORT\_UNCAL\_MSG в Makefile.
С этой опцией, тестер отображает только краткое напоминание, состоящее из одной строки.
Это уменьшает требуемый объем флэш-памяти, а также время показа для пользователей, которые уже знают, как
осуществить калибровку тестера.\\
Пример: CFLAGS += -DSHORT\_UNCAL\_MSG

  \item[WITH\_SamplingADC] С этой опцией, тестер использует метод дискретизации АЦП при определенных измерениях.
Используется время дискретизации АЦП с шагом 1, 4 или 16 тактов процессора для повторяющихся сигналов и
быстрые изменения напряжений могут быть отслежены.
Время зарядки маленьких конденсаторов ниже \(100~pF\) может контролироваться с разрешением \(0,01~pF\) при 
тактовой частоте процессора \(16~MHz\).
С помощью параллельно подключенного конденсатора, по резонансной частоте LC-контура, может быть
определена индуктивность маленьких катушек ниже \(2~mH\).
Если ёмкость параллельного конденсатора известна, индуктивность катушки может быть рассчитана с высокой
точностью, исходя из резонансной частоты. В качестве дополнения, по значению резонансной частоты, может
быть оценена добротность Q контура.
Эту особенность можно включить установкой опции WITH\_SamplingADC.
При калибровке дополнительно измеряется нулевые значения ёмкости для метода дискретизации, и после этого измеряется
значение ёмкости устанавливаемого конденсатора для LC-контура при определении индуктивности неизвестной катушки.\\
Пример: WITH\_SamplingADC = 1

  \item[WITH\_XTAL] Если функция SamplingADC включена и в тестере установлен \(16~MHz\) кварц (OP\_MHZ = 16),
то эта опция позволяет тестировать кварцы и резонаторы.
Если возможно, то определяются частоты для схем с параллельным и последовательным резонансом,
а также параметр $C_{m}$ -- эквивалентная ёмкость механической колебательной системы резонатора.\\
Пример: CFLAGS += -DWITH\_XTAL

  \item[WITH\_UJT] Эта опция позволяет проводить дополнительные тесты для однопереходных транзисторов.
Если функция SamplingADC включена, тестер пытается построить генератор с тестируемым транзистором.
Тип UJT обнаруживается и без функции SamplingADC, но 
без опции WITH\_UJT однопереходные транзисторы определяются как двойной диод.\\
Пример: CFLAGS += -DWITH\_UJT

  \item[WITH\_PUT] Эта опция позволяет проводить дополнительный тест программируемых однопереходных
транзисторов (PUT). Без этого параметра PUT обычно определяется как биполярный транзистор.\\
Пример: CFLAGS += -DWITH\_PUT

  \item[FREQUENCY\_50HZ] Сигнал 50 Гц будет генерироваться на выводах испытательных портов~2 и~3 в течении 
одной минуты в конце самодиагностики.
Эта опция должна быть установлена только для особых случаев - проверки функции задержки.\\
Пример: CFLAGS += -DFREQUENCY\_50HZ

  \item[NO\_COMMON\_COLLECTOR\_HFE] Эта опция отключает метод измерения hFE транзисторов по схеме с общим 
коллектором. По умолчанию включены оба метода для измерения hFE, но в памяти программ микроконтроллера ATmega168 
не хватает места для функций самодиагностики. С помощью этой опции Вы можете освободить память микроконтроллера 
ATmega168 для функций самодиагностики T1-T7.\\
Пример: CFLAGS += -DNO\_COMMON\_COLLECTOR\_HFE

  \item[NO\_COMMON\_EMITTER\_HFE] Эта опция отключает метод измерения hFE транзисторов по схеме с общим эмиттером. 
По умолчанию включены оба метода для измерения hFE, но в памяти программ микроконтроллера ATmega168 не хватает 
места для функций самодиагностики. С помощью этой опции Вы можете освободить память микроконтроллера ATmega168 для 
функций самопроверки T1-T7.\\
Пример: CFLAGS += -DNO\_COMMON\_EMITTER\_HFE

  \item[AUTO\_CAL] В процедуре самодиагностики будет дополнительно измерено смещение нуля при измерении ёмкости. 
Дополнительно будут измерены смещение аналогового компаратора (REF\_C\_KORR) и (REF\_R\_ KORR) напряжение смещения 
внутреннего опорного напряжения, если Вы подключите качественный конденсатор с величиной ёмкости от \(100~nF\) 
до \(20~\mu F\) к выводам испытательных портов~1 и~3 после измерения смещения нуля при измерении ёмкости. Все 
найденные величины будут записаны в EEprom и будут использоваться для дальнейших измерений автоматически. Значения 
выходного сопротивления порта будут определяться в начале каждого измерения.\\
Пример: CFLAGS += -DAUTO\_CAL

  \item[WITH\_AUTO\_REF] Опция позволяет автоматически считывать опорное напряжение, чтобы
получить фактический коэффициент, для измерения малых величин ёмкостей (ниже \(40~\mu F\)).\\
Пример:  CFLAGS += -DWITH\_AUTO\_REF

  \item[REF\_C\_KORR] Определяет смещение для опорного напряжения в \(mV\). Эта опция применяется для 
коррекции величины ёмкости при измерении небольших ёмкостей конденсаторов. Величина коррекции 10 пунктов понижает 
результат измерения приблизительно на 1\%. Если опция AUTO\_CAL выбирается вместе с опциями 
WITH\_SELFTEST, REF\_C\_KORR то величина смещения будет равна разнице измеренного напряжения тестируемого 
конденсатора и внутреннего опорного напряжения.\\
Пример:  CFLAGS += -DREF\_C\_KORR=12

  \item[REF\_L\_KORR] Определяет дополнительное смещение в \(mV\) к опорному напряжению при измерения величины 
индуктивности. Смещение REF\_L\_KORR и соответствующая величина смещения при калибровке будет дополнительно 
использоваться при измерении индуктивности. Значение REF\_L\_KORR будет вычтено для измерения без 
резистора \(680~\Omega\) и добавлено при измерении с резистором \(680~\Omega\).
Величина коррекции в 10 пунктов изменяет результат измерения приблизительно на 1\%.\\
Пример: CFLAGS += -DREF\_L\_KORR=70

  \item[C\_H\_KORR] Определяет величину коррекции при измерении больших ёмкостей. Увеличение значения параметра на 10 пунктов 
понижает результат измерения на 1\%.\\
Пример:  CFLAGS += -DC\_H\_KORR=10

  \item[WITH\_UART] Опция позволяет использовать порт PC3 для последовательного вывода данных (протокол V24). 
Если опция не выбрана, порт PC3 может использоваться для измерения внешнего напряжения  с делителем 10:1. 
С дополнительной схемой Вы можете проверить напряжение пробоя стабилитронов, большее, чем \(4,5~V\). 
Это измерение повторяется с частотой 3 раза в секунду, пока Вы не отпустите кнопку {\bf TEST}.\\
Пример: CFLAGS += -DWITH\_UART

  \item[TQFP\_ADC6] Опция TQFP\_ADC6 определяет возможность использования аналогового входа ADC6 ATmega в корпусе 
TQFP или QFN вместо ADC3 (PC3).
С этой опцией возможно измерение внешнего напряжения, независимо от использования PC3 в качестве UART.
ADC6 вход используется для измерения стабилитронов или внешнего напряжения в зависимости от выбора из 
диалогового меню в ATmega328.\\
Пример: CFLAGS += -DTQFP\_ADC6

  \item[TQFP\_ADC7] Опция TQFP\_ADC7 определяет возможность использования аналогового входа ADC7 ATmega в корпусе 
TQFP или QFN вместо PC3 (ADC3). С этой опцией возможно измерение внешнего напряжения, независимо от использования 
PC3 в качестве UART. Если эта опция используется без опции TQFP\_ADC6, то измерение стабилитронов и внешнего
напряжения производится с использованием входного аналогового порта ADC7 при выборе из дополнительного меню в 
ATmega328. Если опция установлена совместно с TQFP\_ADC6, то измерение стабилитронов доступно на ADC6, а внешних 
напряжений на обеих портах в зависимости от выбора из дополнительного меню ATmega328. Оба входных порта ADC
должны быть оборудованы резистивными делителями 10:1.\\
Пример: CFLAGS += -DTQFP\_ADC7

  \item[WITH\_VEXT] Разрешает измерять внешнее напряжение с использованием резистивного делителя 10:1.
Если не выбрана опция TQFP\_ADC6 или TQFP\_ADC7 для ATmega168 или ATmega328, то порт PC3 используется для измерения 
внешнего напряжения.
Опция WITH\_UART, в этом случае, должна быть отключена.\\
Пример: CFLAGS += -DWITH\_VEXT

  \item[RMETER\_WITH\_L] при выборе этой опции в режиме циклических измерений сопротивлений резисторов в TP1 и TP3 
можно измерять и индуктивность. Такой режим работы отображается символами {\bf[RL]} в конце первой строки дисплея.
При включении этого, дополнительного, теста индуктивности время измерения сопротивлений резисторов 
ниже \(2100~\Omega\) увеличивается.
Так же резистор меньше \(10~\Omega\) не может быть измерен методом ESR без этой опции, так как нет 
данных что индуктивность не подключена, а из-за того, что в методе измерения ESR используются короткие 
импульсы тока, индуктивность не может быть измерена. Сопротивление резистора меньше \(10~\Omega\) измеряется только
с разрешением \(0.1~\Omega\) без этой опции, так как только метод измерения ESR способен обеспечить 
разрешение \(0.01~\Omega\).
При установке этой опции все предыдущие ограничения не влияют на результат, но время теста увеличивается.\\
Пример: CFLAGS += -DRMETER\_WITH\_L

  \item[CAP\_EMPTY\_LEVEL] Эта опция  определяет уровень напряжения для разряженного конденсатора (в \(mV\)). Вы можете 
установить значение уровня выше \(3~mV\), если Тестер не успевает разряжать конденсатор. Это происходит в случае, если 
Тестер заканчивает измерение за более длительное время с сообщением «Cell!».\\
Пример: CFLAGS += -DCAP\_EMPTY\_LEVEL=3

  \item[AUTOSCALE\_ADC] Позволяет автоматически переключать опорное смещение АЦП или к VCC или к внутреннему ИОН. 
Внутренний ИОН \(2,56~V\) для ATmega8 и \(1,1~V\) для остальных микроконтроллеров ATmega.
Для ATmega8 автоматическое переключение опорного напряжения не используются.\\
Пример: CFLAGS += -DAUTOSCALE\_ADC

  \item[REF\_R\_KORR] Определяет смещение для внутреннего опорного напряжения АЦП в \(mV\). Это смещение учитывается 
при переключении с VCC базового АЦП на внутренний ИОН АЦП и может быть использовано при измерении резисторов. 
Если Вы выберете опцию AUTO\_CAL в режиме самодиагностики, это значение будет дополнительной величиной к найденному 
напряжению смещения в  опции AUTO\_CAL.\\
Пример: CFLAGS += -DREF\_R\_KORR=10

  \item[ESR\_ZERO] Определяет смещение нуля при измерении малых сопротивлений и ESR.
Смещение нуля для любых комбинаций тестовых выводов определяется в режиме самодиагностики
и заменяет предустановленное смещение нуля.
Эта величина будет вычтена из всех измерений сопротивлений до \(10~\Omega\) и ESR.\\
Пример: CFLAGS += -DESR\_ZERO=29

  \item[NO\_AREF\_CAP] Сообщает программному обеспечению, что у Вас нет конденсатора (\(100~nF\)), установленного 
на выводе AREF (вывод 21). Это позволяет сократить задержку для AUTOSCALE\_ADC при переключении на другой ИОН. 
Конденсатор на \(1~nF\) не вносит искажений в результаты измерений. На рисунке \ref{pic:aref1} и \ref{pic:aref5} 
показано время переключения  с конденсатором на \(1~nF\).
Вы можете видеть, что переключение от \(5~V\) до \(1,1~V\) намного медленнее, чем переключение назад, от \(1,1~V\) 
до \(5~V\). 
Если у Вас установлен конденсатор на \(100~nF\), время переключения будет дольше в 100 раз!\\
Пример: CFLAGS += -DNO\_AREF\_CAP

  \item[OP\_MHZ] Сообщает программному обеспечению, на какой частоте в \(MHz\) будет функционировать Ваш Тестер. 
Программное обеспечение проверено только на \(1~MHz\), \(8~MHz\) и, дополнительно, на \(16~MHz\). \(8~MHz\) 
рекомендуется для лучшего разрешения при измерении ёмкости и индуктивности.\\
Пример: OP\_MHZ = 8

  \item[RESTART\_DELAY\_TICS] Если ATmega168 или ATmega328 используются с внутренним RC-генератором вместо кварца, 
то величина установки должна быть 6. Если это значение не установлено, то при выходе из SLEEP MODE ATmega с 
кварцем, программное обеспечение отсчитывает задержку в 16384 такта.\\
Пример: CFLAGS += -DRESTART\_DELAY\_TICS=6

  \item[USE\_EEPROM] Опция позволяет использовать для размещения фиксированного текста и таблиц память EEprom. 
В противном случае используется программная память Flash. Рекомендуется использовать память 
EEprom (опция установлена).\\
Пример: CFLAGS += -DUSE\_EEPROM

  \item[EBC\_STYLE] Опция задает стиль отображения результатов при определении назначения выводов элементов. 
Если активна опция CFLAGS += -DEBC\_STYLE то информация о расположении выводов транзистора будет 
отображаться относительно назначения выводов, например: «EBC=231» или «EBC =312». Опция вида 
CFLAGS += -DEBC\_STYLE=321 позволяет закрепить вывод информации относительно обратного расположения 
тестовых портов в приборе, например: «321=BCE» или «321=EBC». Если эти опции не активны, то формат вывода 
будет базироваться относительно тестовых выводов в порядке «123=...», например: «123=BCE» или
«123=EBC».\\
Пример: CFLAGS += -DEBC\_STYLE
 
  \item[NO\_NANO] Определяет, что десятичная приставка «nano» не будет использоваться при отображении измеренных 
результатов. Значения отображаются в \(\mu F\) вместо \(nF\).\\
Пример: CFLAGS += NO\_NANO

  \item[NO\_LONG\_PINLAYOUT] позволяет избежать длинного стиля отображения назначения выводов «~Pin~~1=E~2=B~3=C».
Если опция установлена, используется короткий стиль отображения назначения выводов «~Pin~~123=EBC».\\
Пример: CFLAGS += NO\_LONG\_PINLAYOUT

  \item[PULLUP\_DISABLE] Определяет, что Вы не нуждаетесь во внутренних подтягивающих резисторах. Если Вы выбрали 
эту опцию, то у Вас должен быть установлен внешний резистор с вывода PD7 (вывод~13) к VCC. Эта опция предотвращает 
возможное влияние подтягивающих резисторов на результаты измерений в измерительных портах (порт~B и порт~C).\\
Пример: CFLAGS += -DPULLUP\_DISABLE

  \item[ANZ\_MESS] Эта опция определяет количество считанных значений АЦП для вычисления среднего значения. 
Вы можете выбрать любое значение между 5 и 200 для подсчета среднего значения одного измерения АЦП. Более 
высокие значения дают большую точность, но увеличивают время измерения. Одно среднее значение измерений АЦП 
со значением 44 требует приблизительно \(5~ms\).\\
Пример: CFLAGS += -DANZ\_MESS=55

  \item[POWER\_OFF] Эта опция включает функцию автоматического выключения питания. Если Вы не установите эту опцию, 
измерения будут идти бесконечно, пока не будет отключено питание прибора. Если у Вас Тестер без 
схемы отключения питания, то Вы можете не выбирать POWER\_OFF.
Если Вы не установили опцию POWER\_OFF для прибора с авто отключением, то Тестер можно выключить из меню 
выбора функций при активизированной опции WITH\_MENU.
Вы можете также определить, после скольких измерений без определения элемента Тестер выключится. Тестер также 
отключит питание после вдвое большего числа измерений, сделанных последовательно без неудавшегося поиска элемента. 
Это позволяет избежать полного разряда батареи, если Вы забыли отсоединять тестируемый элемент. Выбор определяется 
как CFLAGS += -DPOWER\_OFF=5 для 5 последовательных измерений без определения элемента. Тестер также выключится 
после 10 измерений с определением элемента. Если любая последовательность измерений будет прервана другим типом, 
то измерения продолжатся. Результат измерения отображается на дисплее в течение 28 секунд для однократного 
измерения, для многократного измерения время отображения уменьшено до 5 секунд (выбор в config.h). Если кнопка 
{\bf TEST} нажата более длительное время, то время отображения для многократного измерения также 28~секунд. 
Максимальное значение 255 (CFLAGS += -DPOWER\_OFF=255).\\
Пример 1: CFLAGS += -DPOWER\_OFF=5\\
Пример 2: CFLAGS += -DPOWER\_OFF

  \item[BAT\_CHECK] Позволяет проверять напряжение батареи питания. Если Вы не выбираете эту опцию, то на  
LCD-дисплее вместо напряжения будет отображаться номер версии программного обеспечения. Эта опция полезна для 
версии Тестера, работающей от автономного источника питания, чтобы напомнить о разряде источника питания.\\
Пример: CFLAGS += -DBAT\_CHECK

  \item[BAT\_OUT] Позволяет отображать напряжение батареи на LCD-дисплее (если выбрана опция BAT\_CHECK). Если 
в цепи питания \(9~V\) установлен диод, то для правильного измерения выходного значения необходимо учесть напряжение 
падения на нем (в \(mV\)), для этого используйте  BAT\_OUT =600. Также этой опцией можно учитывать падение напряжения 
на транзисторе T3. Пороговый уровень не влияет на уровни проверки напряжения (BAT\_POOR).\\
Пример 1: CFLAGS += -DBAT\_OUT=300\\
Пример 2: CFLAGS += -DBAT\_OUT

  \item[BAT\_POOR] Установка нижнего уровня напряжения батареи, задаваемого в \(mV\). 
Если нижний уровень составляет больше чем \(5,3~V\), то уровень предупреждения о разряде батареи на \(0,8~V\) выше, 
чем указанный нижний уровень. 
Если нижний уровень составляет \(5,3 V\) или менее, то уровень предупреждения о разряде батареи на \(0,4~V\) выше, 
чем указанный нижний уровень. 
Если нижний уровень ниже \(3,25~V\), то уровень предупреждения о разряде батареи на \(0,2~V\) выше, чем указанный 
нижний уровень. 
Если нижний уровень ниже \(1,3~V\), то уровень предупреждения о разряде батареи на \(0,1~V\) выше, чем указанный 
нижний уровень. 
Установка нижнего уровня \(5,4~V\) не рекомендуется для перезаряжаемых \(9~V\) аккумуляторов, потому что это 
увеличивает риск повреждения аккумулятора из-за глубокого разряда! Если Вы хотите использовать \(9~V\) аккумулятор, 
то рекомендуется использовать Ready To Use тип аккумулятора из-за более низкого саморазряда.\\
Пример для low drop regulator (\(5,4~V\)): CFLAGS += -DBAT\_POOR=5400\\
Пример для 7805 type regulator (\(6,4~V\)): CFLAGS += -DBAT\_POOR=6400

  \item[DC\_PWR] Уровень напряжения в \(mV\) измеренного при тесте напряжения питания Тестера, выше
которого устанавливается режим «DC\_Pwr\_Mode». Обычно Тестер работает от батареи и при этом все 
дополнительные функции ограничены во времени. В режиме «DC\_Pwr\_Mode», предполагается, что Тестер работает 
от внешнего блока питания, поэтому дополнительные функции работают без ограничения по времени.
Потому что DC-DC преобразователь не работает при входном напряжении меньше \(0.9~V\),
режим «DC\_Pwr\_Mode» также устанавливается, если обнаружено напряжение питания батареи ниже \(0.9~V\). \\
Пример: CFLAGS += -DDC\_PWR=9500

  \item[INHIBIT\_SLEEP\_MODE] Запрещает использование SLEEP\_MODE. Обычно программное обеспечение 
использует SLEEP\_MODE для более длительной работы. Использование этого способа действительно экономит 
заряд батареи, но создает дополнительную нагрузку для стабилизатора напряжения.\\
Пример: INHIBIT\_SLEEP\_MODE = 1 (для версий до 290)\\
Пример: INHIBIT\_SLEEP\_MODE = 0 (для версии 291 и выше)

  \item[PROGRAMMER] Указывает тип программатора для программного интерфейса avrdude. Правильный выбор этой опции 
необходим, если Вы используете команду «make upload» или «make fuses» этого Makefile. За дополнительной 
информацией обратитесь, пожалуйста, к описанию avrdude и онлайн – документации ~\cite{avrdude}.\\
Пример: PROGRAMMER=avrisp2

  \item[BitClock] Выбирает частоту синхронизации для программатора. См. описание -B параметра для avrdude.\\
Пример: BitClock=5.0

  \item[PORT] Выбранный порт, через который Ваш микроконтроллер ATmega может быть доступным для avrdude. За 
дополнительной информацией обратитесь, пожалуйста, к описанию avrdude.\\
Пример: PORT=usb

\end{description}

\begin{figure}[H]
  \begin{subfigure}[b]{9cm}
    \centering
    \includegraphics[width=9cm]{../PNG/AREF2_1V.png}
    \caption{с \(5~V\) до \(1,1~V\)}
    \label{pic:aref1}
  \end{subfigure}
  ~
  \begin{subfigure}[b]{9cm}
    \centering
    \includegraphics[width=9cm]{../PNG/AREF2VCC.png}
    \caption{с \(1,1~V\) до \(5~V\)}
    \label{pic:aref5}
  \end{subfigure}
  \caption{Переключение AREF с ёмкостью \(1~nF\)}
\end{figure}


Дополнительные параметры могут быть установлены в файлах transistortester.h и config.h. Файл config.h  
содержит глобальные переменные и определяет порт/контакт и величину резистора, которые используются для измерения. Файл 
transistortester.h определяет параметры для различных типов микроконтроллеров, задержку и частоту АЦП. Обычно нет 
необходимости изменять эти значения.
