config.h

Created Diff never expires
/* ************************************************************************
/* ************************************************************************
*
*
* global configuration, setup and settings
* global configuration, setup and settings
*
*
* (c) 2012-2020 by Markus Reschke
* (c) 2012-2020 by Markus Reschke
* based on code from Markus Frejek and Karl-Heinz Kübbeler
* based on code from Markus Frejek and Karl-Heinz Kübbeler
*
*
* ************************************************************************ */
* ************************************************************************ */




/* source management */
/* source management */
#define CONFIG_H
#define CONFIG_H




/*
/*
* For MCU specific settings (port and pin assignments) and display
* For MCU specific settings (port and pin assignments) and display
* settings please edit also:
* settings please edit also:
* - ATmega328: config_328.h
* - ATmega328: config_328.h
* - ATmega324/644/1284: config_644.h
* - ATmega324/644/1284: config_644.h
* - ATmega640/1280/2560: config_1280.h
* - ATmega640/1280/2560: config_1280.h
*/
*/






/* ************************************************************************
/* ************************************************************************
* Hardware options
* Hardware options
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* rotary encoder for user interface
* rotary encoder for user interface
* - default pins: PD2 & PD3 (ATmega 328)
* - default pins: PD2 & PD3 (ATmega 328)
* - could be in parallel with LCD module
* - could be in parallel with LCD module
* - see ENCODER_PORT in config-<MCU>.h for port pins
* - see ENCODER_PORT in config-<MCU>.h for port pins
* - uncomment to enable and also set ENCODER_PULSES & ENCODER_STEPS below
* - uncomment to enable and also set ENCODER_PULSES & ENCODER_STEPS below
* to match your rotary encoder
* to match your rotary encoder
*/
*/


#define HW_ENCODER
#define HW_ENCODER




/*
/*
* Number of Gray code pulses per step or detent for the rotary encoder
* Number of Gray code pulses per step or detent for the rotary encoder
* - typical values: 2 or 4, rarely 1
* - typical values: 2 or 4, rarely 1
* - a rotary encoder's pulse is the complete sequence of 4 Gray code pulses
* - a rotary encoder's pulse is the complete sequence of 4 Gray code pulses
* - adjust value to match your rotary encoder
* - adjust value to match your rotary encoder
*/
*/


#define ENCODER_PULSES 4
#define ENCODER_PULSES 2 //4




/*
/*
* Number of detents or steps
* Number of detents or steps
* - this is used by the detection of the rotary encoder's turning velocity
* - this is used by the detection of the rotary encoder's turning velocity
* - it doesn't have to match exactly and also allows you to finetune the
* - it doesn't have to match exactly and also allows you to finetune the
* the feedback (higher: slow down, lower: speed up)
* the feedback (higher: slow down, lower: speed up)
* - typical values: 20, 24 or 30
* - typical values: 20, 24 or 30
* - adjust value to match your rotary encoder
* - adjust value to match your rotary encoder
*/
*/


#define ENCODER_STEPS 24
#define ENCODER_STEPS 20 //24




/*
/*
* increase/decrease push buttons for user interface
* increase/decrease push buttons for user interface
* - alternative for rotary encoder
* - alternative for rotary encoder
* - see KEY_PORT in config-<MCU>.h for port pins
* - see KEY_PORT in config-<MCU>.h for port pins
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define HW_INCDEC_KEYS
//#define HW_INCDEC_KEYS




/*
/*
* 2.5V voltage reference for Vcc check
* 2.5V voltage reference for Vcc check
* - default pin: PC4 (ATmega 328)
* - default pin: PC4 (ATmega 328)
* - should be at least 10 times more precise than the voltage regulator
* - should be at least 10 times more precise than the voltage regulator
* - see TP_REF in config-<MCU>.h for port pin
* - see TP_REF in config-<MCU>.h for port pin
* - uncomment to enable and also adjust UREF_25 below for your voltage
* - uncomment to enable and also adjust UREF_25 below for your voltage
* reference
* reference
*/
*/
#define HW_REF25
#define HW_REF25




/*
/*
* Typical voltage of 2.5V voltage reference (in mV)
* Typical voltage of 2.5V voltage reference (in mV)
* - see datasheet of the voltage reference
* - see datasheet of the voltage reference
* - or use >= 5.5 digit DMM to measure the voltage
* - or use >= 5.5 digit DMM to measure the voltage
*/
*/


#define UREF_25 2495
#define UREF_25 2495




/*
/*
* Probe protection relay for discharging caps
* Probe protection relay for discharging caps
* - default pin: PC4 (ATmega 328)
* - default pin: PC4 (ATmega 328)
* - low signal: short circuit probe pins
* - low signal: short circuit probe pins
* high signal via external reference: remove short circuit
* high signal via external reference: remove short circuit
* - see TP_REF in config_<MCU>.h for port pin
* - see TP_REF in config_<MCU>.h for port pin
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define HW_DISCHARGE_RELAY
//#define HW_DISCHARGE_RELAY




/*
/*
* Zener check / voltage measurement up to 50V DC
* Zener check / voltage measurement up to 50V DC
* - default pin: PC3 (ATmega 328)
* - default pin: PC3 (ATmega 328)
* - 10:1 voltage divider
* - 10:1 voltage divider
* - DC-DC boost converter controled by test push button
* - DC-DC boost converter controled by test push button
* - see TP_ZENER in config_<MCU>.h for port pin
* - see TP_ZENER in config_<MCU>.h for port pin
* - uncomment to enable
* - uncomment to enable
*/
*/


#define HW_ZENER
#define HW_ZENER




/*
/*
* alternative mode for Zener check: don't switch boost converter
* alternative mode for Zener check: don't switch boost converter
* - when the DC-DC boost converter runs all the time
* - when the DC-DC boost converter runs all the time
* - when measuring an external voltage (circuit without boost converter)
* - when measuring an external voltage (circuit without boost converter)
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define ZENER_UNSWITCHED
//#define ZENER_UNSWITCHED




/*
/*
* high resolution for Zener check
* high resolution for Zener check
* - 10mV instead of 0.1V
* - 10mV instead of 0.1V
* - uncomment to enable
* - uncomment to enable
*/
*/


#define ZENER_HIGH_RES
#define ZENER_HIGH_RES




/*
/*
* fixed signal output
* fixed signal output
* - in case the MCU's OC1B pin is wired as dedicated signal output
* - in case the MCU's OC1B pin is wired as dedicated signal output
* instead of driving the Rl probe resistor for test pin #2
* instead of driving the Rl probe resistor for test pin #2
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define HW_FIXED_SIGNAL_OUTPUT
//#define HW_FIXED_SIGNAL_OUTPUT




/*
/*
* basic frequency counter
* basic frequency counter
* - default pin: T0 (PD4 ATmega 328)
* - default pin: T0 (PD4 ATmega 328)
* - uses T0 directly as frequency input
* - uses T0 directly as frequency input
* - counts up to 1/4 of MCU clock rate
* - counts up to 1/4 of MCU clock rate
* - might be in parallel with LCD module
* - might be in parallel with LCD module
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define HW_FREQ_COUNTER_BASIC
//#define HW_FREQ_COUNTER_BASIC




/*
/*
* extended frequency counter
* extended frequency counter
* - low and high frequency crystal oscillators
* - low and high frequency crystal oscillators
* and buffered frequency input
* and buffered frequency input
* - prescalers 1:1 and 16:1 (32:1)
* - prescalers 1:1 and 16:1 (32:1)
* - uses T0 directly as frequency input
* - uses T0 directly as frequency input
* - see COUNTER_CTRL_PORT in config-<MCU>.h for port pins
* - see COUNTER_CTRL_PORT in config-<MCU>.h for port pins
* - requires a display with more than 2 text lines
* - requires a display with more than 2 text lines
* - uncomment to enable
* - uncomment to enable
* - select the circuit's prescaler setting: either 16:1 or 32:1
* - select the circuit's prescaler setting: either 16:1 or 32:1
*/
*/


#define HW_FREQ_COUNTER_EXT
#define HW_FREQ_COUNTER_EXT
#define FREQ_COUNTER_PRESCALER 16 /* 16:1 */
#define FREQ_COUNTER_PRESCALER 16 /* 16:1 */
//#define FREQ_COUNTER_PRESCALER 32 /* 32:1 */
//#define FREQ_COUNTER_PRESCALER 32 /* 32:1 */




/*
/*
* event counter
* event counter
* - default pin: T0 (PD4 ATmega 328)
* - default pin: T0 (PD4 ATmega 328)
* - uses T0 directly as event/pulse input (rising edge)
* - uses T0 directly as event/pulse input (rising edge)
* - no shared operation with displays possible for T0
* - no shared operation with displays possible for T0
* - requires additional keys (e.g. rotary encoder) and a display with
* - requires additional keys (e.g. rotary encoder) and a display with
* more than 5 lines
* more than 5 lines
* - only for MCU clock of 8, 16 or 20MHz
* - only for MCU clock of 8, 16 or 20MHz
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define HW_EVENT_COUNTER
//#define HW_EVENT_COUNTER




/*
/*
* trigger output for event counter
* trigger output for event counter
* - uses probe #2 as trigger output, probes #1 and #3 are Gnd
* - uses probe #2 as trigger output, probes #1 and #3 are Gnd
* - sets trigger output to high while counting
* - sets trigger output to high while counting
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define EVENT_COUNTER_TRIGGER_OUT
//#define EVENT_COUNTER_TRIGGER_OUT




/*
/*
* IR remote control detection/decoder (via dedicated MCU pin)
* IR remote control detection/decoder (via dedicated MCU pin)
* - requires IR receiver module, e.g. TSOP series
* - requires IR receiver module, e.g. TSOP series
* - module is connected to fixed I/O pin
* - module is connected to fixed I/O pin
* - see IR_PORT in config-<MCU>.h for port pin
* - see IR_PORT in config-<MCU>.h for port pin
* - uncomment to enable
* - uncomment to enable
* - for additional protocols also enable SW_IR_RX_EXTRA
* - for additional protocols also enable SW_IR_RX_EXTRA
*/
*/


//#define HW_IR_RECEIVER
//#define HW_IR_RECEIVER




/*
/*
* fixed cap for self-adjustment
* fixed cap for self-adjustment
* - see TP_CAP and ADJUST_PORT in config-<MCU>.h for port pins
* - see TP_CAP and ADJUST_PORT in config-<MCU>.h for port pins
* - uncomment to enable
* - uncomment to enable
*/
*/


#define HW_ADJUST_CAP
#define HW_ADJUST_CAP




/*
/*
* L/C meter hardware option
* L/C meter hardware option
* - uses T0 directly as frequency input
* - uses T0 directly as frequency input
* - see LC_CTRL_PORT in config-<MCU>.h for port pins
* - see LC_CTRL_PORT in config-<MCU>.h for port pins
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define HW_LC_METER
#define HW_LC_METER




/*
/*
* L/C meter: value of reference capacitor C_p (in 0.1 pF)
* L/C meter: value of reference capacitor C_p (in 0.1 pF)
* - should be around 1000pF
* - should be around 1000pF
*/
*/


#define LC_METER_C_REF 10000
#define LC_METER_C_REF 10000




/*
/*
* L/C meter: also display frequency of LC oscillator
* L/C meter: also display frequency of LC oscillator
* - helps to spot the oscillator's frequency drifting
* - helps to spot the oscillator's frequency drifting
* - requires display with more than two text lines
* - requires display with more than two text lines
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define LC_METER_SHOW_FREQ
#define LC_METER_SHOW_FREQ




/*
/*
* relay for parallel cap (sampling ADC)
* relay for parallel cap (sampling ADC)
* - uncomment to enable (not implemented yet)
* - uncomment to enable (not implemented yet)
*/
*/


//#define HW_CAP_RELAY
//#define HW_CAP_RELAY






/* ************************************************************************
/* ************************************************************************
* software options
* software options
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* PWM generator with simple user interface
* PWM generator with simple user interface
* - signal output via OC1B
* - signal output via OC1B
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_PWM_SIMPLE
#define SW_PWM_SIMPLE




/*
/*
* PWM generator with fancy user interface
* PWM generator with fancy user interface
* - signal output via OC1B
* - signal output via OC1B
* - requires additional keys and display with more than 2 text lines
* - requires additional keys and display with more than 2 text lines
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_PWM_PLUS
//#define SW_PWM_PLUS




/*
/*
* Inductance measurement
* Inductance measurement
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_INDUCTOR
#define SW_INDUCTOR




/*
/*
* ESR measurement
* ESR measurement
* - requires MCU clock >= 8 MHz
* - requires MCU clock >= 8 MHz
* - choose SW_OLD_ESR for old method starting at 180nF
* - choose SW_OLD_ESR for old method starting at 180nF
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_ESR
#define SW_ESR
//#define SW_OLD_ESR
//#define SW_OLD_ESR




/*
/*
* ESR Tool (in-circuit ESR measurement)
* ESR Tool (in-circuit ESR measurement)
* - requires SW_ESR or SW_OLD_ESR to be enabled
* - requires SW_ESR or SW_OLD_ESR to be enabled
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_ESR_TOOL
#define SW_ESR_TOOL




/*
/*
* check for rotary encoders
* check for rotary encoders
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_ENCODER
#define SW_ENCODER




/*
/*
* squarewave signal generator
* squarewave signal generator
* - signal output via OC1B
* - signal output via OC1B
* - requires additional keys
* - requires additional keys
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_SQUAREWAVE
#define SW_SQUAREWAVE




/*
/*
* IR remote control detection/decoder (via probes)
* IR remote control detection/decoder (via probes)
* - requires IR receiver module, e.g. TSOP series
* - requires IR receiver module, e.g. TSOP series
* - module will be connected to probe leads
* - module will be connected to probe leads
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_IR_RECEIVER
#define SW_IR_RECEIVER




/*
/*
* current limiting resistor for IR receiver module
* current limiting resistor for IR receiver module
* - for 5V only modules
* - for 5V only modules
* - Warning: any short circuit may destroy your MCU
* - Warning: any short circuit may destroy your MCU
* - uncomment to disable resistor
* - uncomment to disable resistor
*/
*/


//#define SW_IR_DISABLE_RESISTOR
//#define SW_IR_DISABLE_RESISTOR




/*
/*
* additional protocols for IR remote control detection/decoder
* additional protocols for IR remote control detection/decoder
* - uncommon protocols which will increase flash memory usage ;)
* - uncommon protocols which will increase flash memory usage ;)
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_IR_RX_EXTRA
//#define SW_IR_RX_EXTRA




/*
/*
* IR remote control sender
* IR remote control sender
* - signal output via OC1B
* - signal output via OC1B
* - requires additional keys and display with more than 4 text lines
* - requires additional keys and display with more than 4 text lines
* - also requires an IR LED with a simple driver
* - also requires an IR LED with a simple driver
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_IR_TRANSMITTER
//#define SW_IR_TRANSMITTER




/*
/*
* Alternative delay loop for IR remote control sender
* Alternative delay loop for IR remote control sender
* - in case the the C compiler screws up the default delay loop
* - in case the the C compiler screws up the default delay loop
* and causes incorrect pulse/pause timings
* and causes incorrect pulse/pause timings
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_IR_TX_ALTDELAY
//#define SW_IR_TX_ALTDELAY




/*
/*
* additional protocols for IR remote control sender
* additional protocols for IR remote control sender
* - uncommon protocols which will increase flash memory usage ;)
* - uncommon protocols which will increase flash memory usage ;)
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_IR_TX_EXTRA
//#define SW_IR_TX_EXTRA




/*
/*
* check for opto couplers
* check for opto couplers
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_OPTO_COUPLER
#define SW_OPTO_COUPLER




/*
/*
* check for Unijunction Transistor
* check for Unijunction Transistor
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_UJT
#define SW_UJT




/*
/*
* check for Schottky Transistor (Schottky-clamped BJT)
* check for Schottky Transistor (Schottky-clamped BJT)
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_SCHOTTKY_BJT
#define SW_SCHOTTKY_BJT




/*
/*
* Servo Check
* Servo Check
* - signal output via OC1B
* - signal output via OC1B
* - requires additional keys and display with more than 2 text lines
* - requires additional keys and display with more than 2 text lines
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_SERVO
//#define SW_SERVO




/*
/*
* DS18B20 - OneWire temperature sensor
* DS18B20 - OneWire temperature sensor
* - uncomment to enable
* - uncomment to enable
* - also enable ONEWIRE_PROBES or ONEWIRE_IO_PIN (see section 'Busses')
* - also enable ONEWIRE_PROBES or ONEWIRE_IO_PIN (see section 'Busses')
*/
*/


//#define SW_DS18B20
#define SW_DS18B20




/*
/*
* OneWire: read and display ROM code
* OneWire: read and display ROM code
* - option for OneWire related tools
* - option for OneWire related tools
* - requires display with more than 2 text lines
* - requires display with more than 2 text lines
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define ONEWIRE_READ_ROM
#define ONEWIRE_READ_ROM




/*
/*
* scan OneWire bus for devices and list their ROM codes
* scan OneWire bus for devices and list their ROM codes
* - requires display with more than 2 text lines
* - requires display with more than 2 text lines
* - uncomment to enable
* - uncomment to enable
* - also enable ONEWIRE_PROBES or ONEWIRE_IO_PIN (see section 'Busses')
* - also enable ONEWIRE_PROBES or ONEWIRE_IO_PIN (see section 'Busses')
*/
*/


//#define SW_ONEWIRE_SCAN
//#define SW_ONEWIRE_SCAN




/*
/*
* capacitor leakage check
* capacitor leakage check
* - requires display with more than two lines
* - requires display with more than two lines
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_CAP_LEAKAGE
#define SW_CAP_LEAKAGE




/*
/*
* display reverse hFE for BJTs
* display reverse hFE for BJTs
* - hFE for collector and emitter reversed
* - hFE for collector and emitter reversed
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_REVERSE_HFE
#define SW_REVERSE_HFE




/*
/*
* display I_C/I_E test current for hFE measurement
* display I_C/I_E test current for hFE measurement
* - I_C for common emitter circuit
* - I_C for common emitter circuit
* I_E for common collector circuit
* I_E for common collector circuit
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_HFE_CURRENT
#define SW_HFE_CURRENT




/*
/*
* R/C/L monitors
* R/C/L monitors
* - monitor passive components connected to probes #1 and #3
* - monitor passive components connected to probes #1 and #3
* - monitors for L require SW_INDUCTOR to be enabled
* - monitors for L require SW_INDUCTOR to be enabled
* - for ESR either SW_ESR or SW_OLD_ESR needs to be enabled
* - for ESR either SW_ESR or SW_OLD_ESR needs to be enabled
* - uncomment to enable (one or more)
* - uncomment to enable (one or more)
*/
*/


//#define SW_MONITOR_R /* just R */
//#define SW_MONITOR_R /* just R */
//#define SW_MONITOR_C /* just C plus ESR */
//#define SW_MONITOR_C /* just C plus ESR */
//#define SW_MONITOR_L /* just L */
//#define SW_MONITOR_L /* just L */
//#define SW_MONITOR_RCL /* R plus L, or C plus ESR */
#define SW_MONITOR_RCL /* R plus L, or C plus ESR */
//#define SW_MONITOR_RL /* R plus L */
//#define SW_MONITOR_RL /* R plus L */




/*
/*
* DHT11, DHT22 and compatible humidity & temperature sensors
* DHT11, DHT22 and compatible humidity & temperature sensors
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_DHTXX
#define SW_DHTXX




/*
/*
* display font for test purposes
* display font for test purposes
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_FONT_TEST
#define SW_FONT_TEST




/*
/*
* check resistor for matching E series norm value
* check resistor for matching E series norm value
* - requires a display with more than 2 text lines
* - requires a display with more than 2 text lines
* - color-code mode requires a color graphics display
* - color-code mode requires a color graphics display
* - uncomment to enable (one or more)
* - uncomment to enable (one or more)
*/
*/


//#define SW_R_E24_5_T /* E24 5% tolerance, text */
//#define SW_R_E24_5_T /* E24 5% tolerance, text */
//#define SW_R_E24_5_CC /* E24 5% tolerance, color-code */
//#define SW_R_E24_5_CC /* E24 5% tolerance, color-code */
//#define SW_R_E24_1_T /* E24 1% tolerance, text */
//#define SW_R_E24_1_T /* E24 1% tolerance, text */
//#define SW_R_E24_1_CC /* E24 1% tolerance, color-code */
//#define SW_R_E24_1_CC /* E24 1% tolerance, color-code */
//#define SW_R_E96_T /* E96 1% tolerance, text */
//#define SW_R_E96_T /* E96 1% tolerance, text */
//#define SW_R_E96_CC /* E96 1% tolerance, color-code */
//#define SW_R_E96_CC /* E96 1% tolerance, color-code */




/*
/*
* check capacitor for matching E series norm value
* check capacitor for matching E series norm value
* - requires a display with more than 2 text lines
* - requires a display with more than 2 text lines
* - uncomment to enable (one or more)
* - uncomment to enable (one or more)
*/
*/


//#define SW_C_E6_T /* E6 20% tolerance, text */
//#define SW_C_E6_T /* E6 20% tolerance, text */
//#define SW_C_E12_T /* E12 10% tolerance, text */
//#define SW_C_E12_T /* E12 10% tolerance, text */




/*
/*
* check inductor for matching E series norm value
* check inductor for matching E series norm value
* - requires a display with more than 2 text lines
* - requires a display with more than 2 text lines
* - uncomment to enable (one or more)
* - uncomment to enable (one or more)
*/
*/


//#define SW_L_E6_T /* E6 20% tolerance, text */
//#define SW_L_E6_T /* E6 20% tolerance, text */
//#define SW_L_E12_T /* E12 10% tolerance, text */
//#define SW_L_E12_T /* E12 10% tolerance, text */






/* ************************************************************************
/* ************************************************************************
* workarounds for some testers
* workarounds for some testers
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* Disable hFE measurement with common collector circuit and Rl as
* Disable hFE measurement with common collector circuit and Rl as
* base resistor.
* base resistor.
* - problem:
* - problem:
* hFE values are way too high.
* hFE values are way too high.
* - affected testers:
* - affected testers:
* Hiland M644 (under investigation)
* Hiland M644 (under investigation)
* - uncomment to enable
* - uncomment to enable
*/
*/


#define NO_HFE_C_RL
//#define NO_HFE_C_RL






/* ************************************************************************
/* ************************************************************************
* workarounds for some IDEs
* workarounds for some IDEs
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* Oscillator startup cycles (after wakeup from power-safe mode):
* Oscillator startup cycles (after wakeup from power-safe mode):
* - typical values
* - typical values
* - internal RC: 6
* - internal RC: 6
* - full swing crystal: 16384 (also 256 or 1024 based on fuse settings)
* - full swing crystal: 16384 (also 256 or 1024 based on fuse settings)
* - low power crystal: 16384 (also 256 or 1024 based on fuse settings)
* - low power crystal: 16384 (also 256 or 1024 based on fuse settings)
* - Please change value if it doesn't match your tester!
* - Please change value if it doesn't match your tester!
*/
*/


#ifndef OSC_STARTUP
#ifndef OSC_STARTUP
#define OSC_STARTUP 16384
#define OSC_STARTUP 16384
#endif
#endif






/* ************************************************************************
/* ************************************************************************
* user interface
* user interface
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* Language of user interface. Available languages:
* Language of user interface. Available languages:
* - English (default)
* - English (default)
* - Czech (based on ISO 8859-1)
* - Czech (based on ISO 8859-1)
* - Czech 2 (with Czech characters based on ISO 8859-2)
* - Czech 2 (with Czech characters based on ISO 8859-2)
* - Danish
* - Danish
* - German
* - German
* - Polish (based on ISO 8859-1)
* - Polish (based on ISO 8859-1)
* - Polish 2 (with Polish characters based on ISO 8859-2)
* - Polish 2 (with Polish characters based on ISO 8859-2)
* - Spanish
* - Spanish
* - Romanian
* - Romanian
* - Russian (with cyrillic characters based on Windows-1251)
* - Russian (with cyrillic characters based on Windows-1251)
* - Russian 2 (with cyrillic characters based on Windows-1251)
* - Russian 2 (with cyrillic characters based on Windows-1251)
*/
*/


#define UI_ENGLISH
#define UI_ENGLISH
//#define UI_CZECH
//#define UI_CZECH
//#define UI_CZECH_2
//#define UI_CZECH_2
//#define UI_DANISH
//#define UI_DANISH
//#define UI_GERMAN
//#define UI_GERMAN
//#define UI_ITALIAN
//#define UI_ITALIAN
//#define UI_POLISH
//#define UI_POLISH
//#define UI_POLISH_2
//#define UI_POLISH_2
//#define UI_ROMANIAN
//#define UI_ROMANIAN
//#define UI_RUSSIAN
//#define UI_RUSSIAN
//#define UI_RUSSIAN_2
//#define UI_RUSSIAN_2
//#define UI_SPANISH
//#define UI_SPANISH




/*
/*
* Use comma instead of dot to indicate a decimal fraction.
* Use comma instead of dot to indicate a decimal fraction.
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_COMMA
//#define UI_COMMA




/*
/*
* Display temperatures in Fahrenheit instead of Celsius.
* Display temperatures in Fahrenheit instead of Celsius.
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_FAHRENHEIT
//#define UI_FAHRENHEIT




/*
/*
* Display hexadecimal values in uppercase instead of lowercase
* Display hexadecimal values in uppercase instead of lowercase
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_HEX_UPPERCASE
#define UI_HEX_UPPERCASE




/*
/*
* Set the default operation mode to auto-hold.
* Set the default operation mode to auto-hold.
* - instead of continous mode
* - instead of continous mode
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_AUTOHOLD
//#define UI_AUTOHOLD




/*
/*
* Trigger the menu also by a short circuit of all three probes.
* Trigger the menu also by a short circuit of all three probes.
* - former default behaviour
* - former default behaviour
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_SHORT_CIRCUIT_MENU
//#define UI_SHORT_CIRCUIT_MENU




/*
/*
* Show key hints instead of cursor if available.
* Show key hints instead of cursor if available.
* - currently only "Menu/Test"
* - currently only "Menu/Test"
* - requires additional keys and display with a sufficient number of
* - requires additional keys and display with a sufficient number of
* text lines (recommended: >= 8 lines)
* text lines (recommended: >= 8 lines)
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_KEY_HINTS
//#define UI_KEY_HINTS




/*
/*
* Enter menu to select adjustment profile after powering on.
* Enter menu to select adjustment profile after powering on.
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_CHOOSE_PROFILE
//#define UI_CHOOSE_PROFILE




/*
/*
* Output components found also via TTL serial interface.
* Output components found also via TTL serial interface.
* - uncomment to enable
* - uncomment to enable
* - also enable SERIAL_BITBANG or SERIAL_HARDWARE (see section 'Busses')
* - also enable SERIAL_BITBANG or SERIAL_HARDWARE (see section 'Busses')
*/
*/


//#define UI_SERIAL_COPY
//#define UI_SERIAL_COPY




/*
/*
* Control tester via TTL serial interface.
* Control tester via TTL serial interface.
* - uncomment to enable
* - uncomment to enable
* - also enable SERIAL_BITBANG or SERIAL_HARDWARE, plus SERIAL_RW
* - also enable SERIAL_BITBANG or SERIAL_HARDWARE, plus SERIAL_RW
* (see section 'Busses')
* (see section 'Busses')
*/
*/


//#define UI_SERIAL_COMMANDS
//#define UI_SERIAL_COMMANDS




/*
/*
* Maximum time to wait after probing (in ms).
* Maximum time to wait after probing (in ms).
* - applies to continuous mode only
* - applies to continuous mode only
* - Time between printing the result and starting a new probing cycle.
* - Time between printing the result and starting a new probing cycle.
*/
*/


#define CYCLE_DELAY 3000
#define CYCLE_DELAY 5000




/*
/*
* Maximum number of probing runs without any component found in a row.
* Maximum number of probing runs without any component found in a row.
* - applies to continuous mode only
* - applies to continuous mode only
* - If this number is reached the tester will power off.
* - If this number is reached the tester will power off.
* - When set to zero the tester will run only once and turn off
* - When set to zero the tester will run only once and turn off
* after CYCLE_DELAY.
* after CYCLE_DELAY.
* - When set to 255 this feature will be disabled and the tester runs
* - When set to 255 this feature will be disabled and the tester runs
* until it's powered off manually.
* until it's powered off manually.
*/
*/


#define CYCLE_MAX 5
#define CYCLE_MAX 5




/*
/*
* Automatic power-off when no button is pressed for a while (in s).
* Automatic power-off when no button is pressed for a while (in s).
* - applies to auto-hold mode only
* - applies to auto-hold mode only
* - uncomment to enable, also adjust timeout (in s)
* - uncomment to enable, also adjust timeout (in s)
*/
*/


//#define POWER_OFF_TIMEOUT 60
//#define POWER_OFF_TIMEOUT 60




/*
/*
* component symbols for fancy pinout
* component symbols for fancy pinout
* - for 3-pin semiconductors
* - for 3-pin semiconductors
* - requires graphics display and symbol bitmap
* - requires graphics display and symbol bitmap
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SW_SYMBOLS
#define SW_SYMBOLS




/*
/*
* color coding for probes
* color coding for probes
* - requires color graphics LCD
* - requires color graphics LCD
* - uncomment to enable
* - uncomment to enable
* - edit colors.h to select correct probe colors
* - edit colors.h to select correct probe colors
*/
*/


#define SW_PROBE_COLORS
#define SW_PROBE_COLORS




/*
/*
* main menu: power off tester
* main menu: power off tester
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define SW_POWER_OFF
//#define SW_POWER_OFF




/*
/*
* Round some values if appropriate.
* Round some values if appropriate.
* - for
* - for
* - DS18B20 (0.1 °C/F)
* - DS18B20 (0.1 °C/F)
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define UI_ROUND_DS18B20
//#define UI_ROUND_DS18B20




/*
/*
* storage of firmware data (texts, tables etc)
* storage of firmware data (texts, tables etc)
* - self-adjustment data is always stored in EEPROM
* - self-adjustment data is always stored in EEPROM
* - fonts and symbols are always stored in Flash
* - fonts and symbols are always stored in Flash
* - uncomment one
* - uncomment one
*/
*/


#define DATA_EEPROM /* store data in EEPROM */
#define DATA_EEPROM /* store data in EEPROM */
//#define DATA_FLASH /* store data in Flash */
//#define DATA_FLASH /* store data in Flash */






/* ************************************************************************
/* ************************************************************************
* power management
* power management
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* type of power switch
* type of power switch
* - soft-latching power switch (default)
* - soft-latching power switch (default)
* - as in the tester's reference circuit
* - as in the tester's reference circuit
* - tester is able to power itself off
* - tester is able to power itself off
* - manual power switch
* - manual power switch
* - tester isn't able to power itself off
* - tester isn't able to power itself off
* - enable one
* - enable one
*/
*/


#define POWER_SWITCH_SOFT
#define POWER_SWITCH_SOFT
//#define POWER_SWITCH_MANUAL
//#define POWER_SWITCH_MANUAL




/*
/*
* Battery monitoring mode:
* Battery monitoring mode:
* - BAT_NONE disable battery monitoring completely
* - BAT_NONE disable battery monitoring completely
* - BAT_DIRECT direct measurement of battary voltage (< 5V)
* - BAT_DIRECT direct measurement of battary voltage (< 5V)
* - BAT_DIVIDER measurement via voltage divider
* - BAT_DIVIDER measurement via voltage divider
* - uncomment one of the modes
* - uncomment one of the modes
*/
*/


//#define BAT_NONE
//#define BAT_NONE
//#define BAT_DIRECT
//#define BAT_DIRECT
#define BAT_DIVIDER
#define BAT_DIVIDER




/*
/*
* Unmonitored optional external power supply
* Unmonitored optional external power supply
* - Some circuits supporting an additional external power supply are designed
* - Some circuits supporting an additional external power supply are designed
* in a way that prevents the battery monitoring to measure the voltage of
* in a way that prevents the battery monitoring to measure the voltage of
* the external power supply. This would trigger the low battery shut-down.
* the external power supply. This would trigger the low battery shut-down.
* The switch below will prevent the shut-down when the measured voltage is
* The switch below will prevent the shut-down when the measured voltage is
* below 0.9V (caused by the diode's leakage current).
* below 0.9V (caused by the diode's leakage current).
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define BAT_EXT_UNMONITORED
//#define BAT_EXT_UNMONITORED




/*
/*
* Voltage divider for battery monitoring
* Voltage divider for battery monitoring
* - BAT_R1: top resistor in Ohms
* - BAT_R1: top resistor in Ohms
* - BAT_R2: bottom resistor in Ohms
* - BAT_R2: bottom resistor in Ohms
*/
*/


#define BAT_R1 10000
#define BAT_R1 10000
#define BAT_R2 3300
#define BAT_R2 3300




/*
/*
* Voltage drop by reverse voltage protection diode and power management
* Voltage drop by reverse voltage protection diode and power management
* transistor (in mV):
* transistor (in mV):
* - or any other circuitry in the power section
* - or any other circuitry in the power section
* - Get your DMM and measure the voltage drop!
* - Get your DMM and measure the voltage drop!
* - Schottky diode about 200mV / PNP BJT about 100mV.
* - Schottky diode about 200mV / PNP BJT about 100mV.
*/
*/


#define BAT_OFFSET 290
#define BAT_OFFSET 290




/*
/*
* Battery weak voltage (in mV).
* Battery weak voltage (in mV).
* - Tester warns if BAT_WEAK is reached.
* - Tester warns if BAT_WEAK is reached.
* - Voltage drop BAT_OFFSET is considered in calculation.
* - Voltage drop BAT_OFFSET is considered in calculation.
*/
*/


#define BAT_WEAK 7400
#define BAT_WEAK 7400




/*
/*
* Battery low voltage (in mV).
* Battery low voltage (in mV).
* - Tester powers off if BAT_LOW is reached.
* - Tester powers off if BAT_LOW is reached.
* - Voltage drop BAT_OFFSET is considered in calculation.
* - Voltage drop BAT_OFFSET is considered in calculation.
*/
*/


#define BAT_LOW 6400
#define BAT_LOW 6400




/*
/*
* Enter sleep mode when idle to save power.
* Enter sleep mode when idle to save power.
* - uncomment to enable
* - uncomment to enable
*/
*/


#define SAVE_POWER
#define SAVE_POWER






/* ************************************************************************
/* ************************************************************************
* measurement settings and offsets
* measurement settings and offsets
* ************************************************************************ */
* ************************************************************************ */




/*
/*
* ADC voltage reference based on Vcc (in mV).
* ADC voltage reference based on Vcc (in mV).
*/
*/


#define UREF_VCC 5001
#define UREF_VCC 5001




/*
/*
* Offset for the internal bandgap voltage reference (in mV): -100 up to 100
* Offset for the internal bandgap voltage reference (in mV): -100 up to 100
* - To compensate any difference between real value and measured value.
* - To compensate any difference between real value and measured value.
* - The ADC has a resolution of about 4.88mV for V_ref = 5V (Vcc) and
* - The ADC has a resolution of about 4.88mV for V_ref = 5V (Vcc) and
* 1.07mV for V_ref = 1.1V (bandgap).
* 1.07mV for V_ref = 1.1V (bandgap).
* - Will be added to measured voltage of bandgap reference.
* - Will be added to measured voltage of bandgap reference.
*/
*/


#define UREF_OFFSET 0
#define UREF_OFFSET 0




/*
/*
* Exact values of probe resistors.
* Exact values of probe resistors.
* - Standard value for Rl is 680 Ohms.
* - Standard value for Rl is 680 Ohms.
* - Standard value for Rh is 470k Ohms.
* - Standard value for Rh is 470k Ohms.
*/
*/


/* Rl in Ohms */
/* Rl in Ohms */
#define R_LOW 680
#define R_LOW 680


/* Rh in Ohms */
/* Rh in Ohms */
#define R_HIGH 470000
#define R_HIGH 470000




/*
/*
* Offset for systematic error of resistor measurement with Rh (470k)
* Offset for systematic error of resistor measurement with Rh (470k)
* in Ohms.
* in Ohms.
* - if resistors >20k measure too high or low adjust the offset accordingly
* - if resistors >20k measure too high or low adjust the offset accordingly
* - standard offset is 350 Ohms
* - standard offset is 350 Ohms
*/
*/


#define RH_OFFSET 350
#define RH_OFFSET 350




/*
/*
* Resistance of probes (in 0.01 Ohms).
* Resistance of probes (in 0.01 Ohms).
* - default offset for PCB tracks and probe leads
* - default offset for PCB tracks and probe leads
* - resistance of two probes in series
* - resistance of two probes in series
* - assuming all probes have same/similar resistance
* - assuming all probes have same/similar resistance
* - will be updated by self-adjustment
* - will be updated by self-adjustment
*/
*/


#define R_ZERO 20
#define R_ZERO 20




/*
/*
* Use probe pair specific resistance offsets instead of an
* Use probe pair specific resistance offsets instead of an
* average value for all probes.
* average value for all probes.
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define R_MULTIOFFSET
#define R_MULTIOFFSET




/*
/*
* Capacitance of probes (in pF).
* Capacitance of probes (in pF).
* - default offset for MCU, PCB tracks and probe leads
* - default offset for MCU, PCB tracks and probe leads
* - Examples:
* - Examples:
* capacitance length
* capacitance length
* -------------------------
* -------------------------
* 3pF about 10cm
* 3pF about 10cm
* 9pF about 30cm
* 9pF about 30cm
* 15pF about 50cm
* 15pF about 50cm
* - maximum value: 100
* - maximum value: 100
* - will be updated by self-adjustment
* - will be updated by self-adjustment
*/
*/


#define C_ZERO 43
#define C_ZERO 33 //43




/*
/*
* Use probe pair specific capacitance offsets instead of an
* Use probe pair specific capacitance offsets instead of an
* average value for all probes.
* average value for all probes.
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define CAP_MULTIOFFSET
#define CAP_MULTIOFFSET




/*
/*
* Maximum voltage at which we consider a capacitor being
* Maximum voltage at which we consider a capacitor being
* discharged (in mV).
* discharged (in mV).
*/
*/


#define CAP_DISCHARGED 2
#define CAP_DISCHARGED 2




/*
/*
* Correction factors for capacitors (in 0.1%)
* Correction factors for capacitors (in 0.1%)
* - positive factor increases capacitance value
* - positive factor increases capacitance value
* negative factor decreases capacitance value
* negative factor decreases capacitance value
* - CAP_FACTOR_SMALL for caps < 4.7µF
* - CAP_FACTOR_SMALL for caps < 4.7µF
* - CAP_FACTOR_MID for caps 4.7 - 47µF
* - CAP_FACTOR_MID for caps 4.7 - 47µF
* - CAP_FACTOR_LARGE for caps > 47µF
* - CAP_FACTOR_LARGE for caps > 47µF
*/
*/


#define CAP_FACTOR_SMALL 0 /* no correction */
#define CAP_FACTOR_SMALL -10 /* no correction */
#define CAP_FACTOR_MID -40 /* -4.0% */
#define CAP_FACTOR_MID -30 /* -4.0% */
#define CAP_FACTOR_LARGE -90 /* -9.0% */
#define CAP_FACTOR_LARGE -94 /* -9.0% */




/*
/*
* Number of ADC samples to perform for each mesurement.
* Number of ADC samples to perform for each mesurement.
* - Valid values are in the range of 1 - 255.
* - Valid values are in the range of 1 - 255.
*/
*/


#define ADC_SAMPLES 25
#define ADC_SAMPLES 25




/*
/*
* 100nF AREF buffer capacitor
* 100nF AREF buffer capacitor
* - used by some MCU boards
* - used by some MCU boards
* - will increase measurement time
* - will increase measurement time
* - recommendation: replace with 1nF capacitor
* - recommendation: replace with 1nF capacitor
* - uncomment to enable
* - uncomment to enable
*/
*/


//#define ADC_LARGE_BUFFER_CAP
//#define ADC_LARGE_BUFFER_CAP