Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: ComparatorIn_demo TEMT6200_demo 05_comparator_demo 05_comparator_demo ... more
ComparatorIn.h@19:e6a4cd28e217, 2013-08-25 (annotated)
- Committer:
- frankvnk
- Date:
- Sun Aug 25 18:00:42 2013 +0000
- Revision:
- 19:e6a4cd28e217
- Parent:
- 18:efa8d41b738f
_fptr names were too generic. Added comparatorin_ to each name.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| frankvnk | 1:ccac56d8f1cb | 1 | /************************************************************************************************** |
| frankvnk | 1:ccac56d8f1cb | 2 | ***** ***** |
| frankvnk | 1:ccac56d8f1cb | 3 | ***** Name: ComparatorIn.h ***** |
| frankvnk | 1:ccac56d8f1cb | 4 | ***** Date: 05/06/2013 ***** |
| frankvnk | 1:ccac56d8f1cb | 5 | ***** Auth: Frank Vannieuwkerke ***** |
| frankvnk | 1:ccac56d8f1cb | 6 | ***** Func: library for KL25Z Comparator ***** |
| frankvnk | 1:ccac56d8f1cb | 7 | ***** ***** |
| frankvnk | 1:ccac56d8f1cb | 8 | **************************************************************************************************/ |
| frankvnk | 1:ccac56d8f1cb | 9 | |
| frankvnk | 0:e742ad3d7dac | 10 | #ifndef COMPARATORIN_H |
| frankvnk | 0:e742ad3d7dac | 11 | #define COMPARATORIN_H |
| frankvnk | 0:e742ad3d7dac | 12 | |
| frankvnk | 0:e742ad3d7dac | 13 | /* |
| frankvnk | 0:e742ad3d7dac | 14 | * Includes |
| frankvnk | 0:e742ad3d7dac | 15 | */ |
| frankvnk | 0:e742ad3d7dac | 16 | #include "mbed.h" |
| frankvnk | 0:e742ad3d7dac | 17 | #include "pinmap.h" |
| frankvnk | 0:e742ad3d7dac | 18 | |
| frankvnk | 0:e742ad3d7dac | 19 | #ifndef TARGET_KL25Z |
| frankvnk | 0:e742ad3d7dac | 20 | #error "Target not supported" |
| frankvnk | 0:e742ad3d7dac | 21 | #endif |
| frankvnk | 0:e742ad3d7dac | 22 | |
| frankvnk | 0:e742ad3d7dac | 23 | /** ComparatorIn library |
| frankvnk | 0:e742ad3d7dac | 24 | * |
| frankvnk | 0:e742ad3d7dac | 25 | * INP/INM connection selection : |
| frankvnk | 0:e742ad3d7dac | 26 | * PTC6 (IN0) CMP0_IN0 |
| frankvnk | 0:e742ad3d7dac | 27 | * PTC7 (IN1) CMP0_IN1 |
| frankvnk | 0:e742ad3d7dac | 28 | * PTC8 (IN2) CMP0_IN2 |
| frankvnk | 0:e742ad3d7dac | 29 | * PTC9 (IN3) CMP0_IN3 |
| frankvnk | 18:efa8d41b738f | 30 | * PTE30 (IN4) CMP0_IN4 (External 12-bit DAC0, auto connect to IN4) |
| frankvnk | 0:e742ad3d7dac | 31 | * PTE29 (IN5) CMP0_IN5 |
| frankvnk | 0:e742ad3d7dac | 32 | * Internal 6-bit DAC reference voltage = VDD (3.3V) |
| frankvnk | 18:efa8d41b738f | 33 | * Hysteresis, filter count and sample period are initialised to these values when ComparatorIn is initialized: |
| frankvnk | 18:efa8d41b738f | 34 | * CMP0->CR0 = 0x00; // Filter and digital hysteresis disabled |
| frankvnk | 0:e742ad3d7dac | 35 | * CMP0->CR1 = 0x17; // Continuous mode, high-speed compare, unfiltered output, output pin disabled |
| frankvnk | 0:e742ad3d7dac | 36 | * CMP0->FPR = 0x00; // Filter disabled |
| frankvnk | 13:2d499824ba05 | 37 | * CMP0->SCR = 0x06; // Disable all interrupts and clear flags (flags are cleared by this write) |
| frankvnk | 0:e742ad3d7dac | 38 | * CMP0->DACCR = 0xC4; // DAC enabled, Vdd is 6bit reference, threshold set to 1/16 of full-scale (0.2V) |
| frankvnk | 0:e742ad3d7dac | 39 | */ |
| frankvnk | 0:e742ad3d7dac | 40 | |
| frankvnk | 0:e742ad3d7dac | 41 | typedef enum { |
| frankvnk | 0:e742ad3d7dac | 42 | CMP0_IN0 = 0, |
| frankvnk | 0:e742ad3d7dac | 43 | CMP0_IN1 = 1, |
| frankvnk | 0:e742ad3d7dac | 44 | CMP0_IN2 = 2, |
| frankvnk | 0:e742ad3d7dac | 45 | CMP0_IN3 = 3, |
| frankvnk | 0:e742ad3d7dac | 46 | CMP0_IN4 = 4, |
| frankvnk | 0:e742ad3d7dac | 47 | CMP0_IN5 = 5, |
| frankvnk | 0:e742ad3d7dac | 48 | } CMPName; |
| frankvnk | 0:e742ad3d7dac | 49 | |
| frankvnk | 2:43fd96e8687d | 50 | /** Class to use KL25Z Comparator |
| frankvnk | 2:43fd96e8687d | 51 | */ |
| frankvnk | 0:e742ad3d7dac | 52 | class ComparatorIn { |
| frankvnk | 0:e742ad3d7dac | 53 | |
| frankvnk | 0:e742ad3d7dac | 54 | public: |
| frankvnk | 0:e742ad3d7dac | 55 | |
| frankvnk | 18:efa8d41b738f | 56 | /** Create a ComparatorIn, connected to the specified pins. |
| frankvnk | 0:e742ad3d7dac | 57 | * @param pinP = positive ComparatorIn pin to connect to |
| frankvnk | 18:efa8d41b738f | 58 | * @param pinM = negative ComparatorIn pin to connect to\n |
| frankvnk | 18:efa8d41b738f | 59 | * @note Valid values for pinP/pinM:\n |
| frankvnk | 18:efa8d41b738f | 60 | * PTC6, PTC7, PTC8, PTC9, PTE30, PTE29, NC\n |
| frankvnk | 18:efa8d41b738f | 61 | * Special cases:\n |
| frankvnk | 18:efa8d41b738f | 62 | * NC the corresponding input is connected to the internal 6-bit DAC0\n |
| frankvnk | 18:efa8d41b738f | 63 | * PTE30 PTE30 is set as 12-bit DAC0 output and connected to IN4\n |
| frankvnk | 0:e742ad3d7dac | 64 | * @return none |
| frankvnk | 0:e742ad3d7dac | 65 | */ |
| frankvnk | 0:e742ad3d7dac | 66 | ComparatorIn(PinName pinP,PinName pinM); |
| frankvnk | 0:e742ad3d7dac | 67 | |
| frankvnk | 18:efa8d41b738f | 68 | /** Set the number of consecutive threshold samples. |
| frankvnk | 18:efa8d41b738f | 69 | * Represents the number of consecutive samples that must agree\n |
| frankvnk | 18:efa8d41b738f | 70 | * prior to the comparator ouput filter accepting a new output state.\n |
| frankvnk | 0:e742ad3d7dac | 71 | * @param input Unsigned char - range : 1..7 |
| frankvnk | 0:e742ad3d7dac | 72 | * @return none |
| frankvnk | 0:e742ad3d7dac | 73 | */ |
| frankvnk | 17:048474f28d28 | 74 | void FilterCount(unsigned char fico); |
| frankvnk | 0:e742ad3d7dac | 75 | |
| frankvnk | 18:efa8d41b738f | 76 | /** Set the hysteresis. |
| frankvnk | 18:efa8d41b738f | 77 | * 0 : 5mV\n |
| frankvnk | 18:efa8d41b738f | 78 | * 1 : 10mV\n |
| frankvnk | 18:efa8d41b738f | 79 | * 2 : 20mV\n |
| frankvnk | 18:efa8d41b738f | 80 | * 3 : 30mV\n |
| frankvnk | 0:e742ad3d7dac | 81 | * @param input Unsigned char |
| frankvnk | 0:e742ad3d7dac | 82 | * @return none |
| frankvnk | 0:e742ad3d7dac | 83 | */ |
| frankvnk | 12:0a0648bddb98 | 84 | void hysteresis(unsigned char hyst); |
| frankvnk | 0:e742ad3d7dac | 85 | |
| frankvnk | 18:efa8d41b738f | 86 | /** Sampling mode control. |
| frankvnk | 18:efa8d41b738f | 87 | * This mode cannot be set when windowing mode is enabled. |
| frankvnk | 18:efa8d41b738f | 88 | * @param input Unsigned char (0 = disable, 1 = enable) |
| frankvnk | 0:e742ad3d7dac | 89 | * @return none |
| frankvnk | 0:e742ad3d7dac | 90 | */ |
| frankvnk | 17:048474f28d28 | 91 | void SampleMode(unsigned char samp_en); |
| frankvnk | 0:e742ad3d7dac | 92 | |
| frankvnk | 18:efa8d41b738f | 93 | /** Windowing mode control. |
| frankvnk | 18:efa8d41b738f | 94 | * This mode cannot be set when sampling mode is enabled. |
| frankvnk | 18:efa8d41b738f | 95 | * @param input Unsigned char (0 = disable, 1 = enable) |
| frankvnk | 0:e742ad3d7dac | 96 | * @return none |
| frankvnk | 0:e742ad3d7dac | 97 | */ |
| frankvnk | 17:048474f28d28 | 98 | void WindowMode(unsigned char win_en); |
| frankvnk | 0:e742ad3d7dac | 99 | |
| frankvnk | 18:efa8d41b738f | 100 | /** Trigger mode control. |
| frankvnk | 18:efa8d41b738f | 101 | * CMP and DAC are configured to CMP Trigger mode when CMP_CR1[TRIGM] is set to 1.\n |
| frankvnk | 18:efa8d41b738f | 102 | * In addition, the CMP should be enabled. If the DAC is to be used as a reference\n |
| frankvnk | 18:efa8d41b738f | 103 | * to the CMP, it should also be enabled.\n |
| frankvnk | 18:efa8d41b738f | 104 | * CMP Trigger mode depends on an external timer resource to periodically enable the\n |
| frankvnk | 18:efa8d41b738f | 105 | * CMP and 6-bit DAC in order to generate a triggered compare. Upon setting TRIGM,\n |
| frankvnk | 18:efa8d41b738f | 106 | * the CMP and DAC are placed in a standby state until an external timer resource\n |
| frankvnk | 18:efa8d41b738f | 107 | * trigger is received.\n |
| frankvnk | 18:efa8d41b738f | 108 | * @param input Unsigned char (0 = disable, 1 = enable) |
| frankvnk | 0:e742ad3d7dac | 109 | * @return none |
| frankvnk | 0:e742ad3d7dac | 110 | */ |
| frankvnk | 17:048474f28d28 | 111 | void TrigMode(unsigned char trig_en); |
| frankvnk | 0:e742ad3d7dac | 112 | |
| frankvnk | 18:efa8d41b738f | 113 | /** Power mode control. |
| frankvnk | 18:efa8d41b738f | 114 | * 0 Low-Speed (LS) Comparison mode selected. In this mode, CMP has\n |
| frankvnk | 18:efa8d41b738f | 115 | * slower output propagation delay and lower current consumption.\n |
| frankvnk | 18:efa8d41b738f | 116 | * 1 High-Speed (HS) Comparison mode selected. In this mode, CMP has\n |
| frankvnk | 18:efa8d41b738f | 117 | * faster output propagation delay and higher current consumption.\n |
| frankvnk | 18:efa8d41b738f | 118 | * @param input Unsigned char - (0 = Low-Speed, 1 = high-Speed) |
| frankvnk | 0:e742ad3d7dac | 119 | * @return none |
| frankvnk | 0:e742ad3d7dac | 120 | */ |
| frankvnk | 17:048474f28d28 | 121 | void PowerMode(unsigned char pmode); |
| frankvnk | 0:e742ad3d7dac | 122 | |
| frankvnk | 18:efa8d41b738f | 123 | /** Invert mode control. |
| frankvnk | 18:efa8d41b738f | 124 | * Allows selection of the polarity of the analog comparator function.\n |
| frankvnk | 18:efa8d41b738f | 125 | * It is also driven to the COUT output, on both the device pin and as SCR[COUT], when OPE=0.\n |
| frankvnk | 18:efa8d41b738f | 126 | * 0 Does not invert the comparator output.\n |
| frankvnk | 18:efa8d41b738f | 127 | * 1 Inverts the comparator output.\n |
| frankvnk | 18:efa8d41b738f | 128 | * @param input Unsigned char - (0 = not inverted, 1 = inverted) |
| frankvnk | 0:e742ad3d7dac | 129 | * @return none |
| frankvnk | 0:e742ad3d7dac | 130 | */ |
| frankvnk | 12:0a0648bddb98 | 131 | void invert(unsigned char inv); |
| frankvnk | 0:e742ad3d7dac | 132 | |
| frankvnk | 18:efa8d41b738f | 133 | /** Comparator Output Select. |
| frankvnk | 18:efa8d41b738f | 134 | * 0 Set the filtered comparator output (CMPO) to equal COUT.\n |
| frankvnk | 18:efa8d41b738f | 135 | * 1 Set the unfiltered comparator output (CMPO) to equal COUTA.\n |
| frankvnk | 18:efa8d41b738f | 136 | * @param input Unsigned char - (0 : CMPO = COUT, 1 : CMPO = COUTA) |
| frankvnk | 0:e742ad3d7dac | 137 | * @return none |
| frankvnk | 0:e742ad3d7dac | 138 | */ |
| frankvnk | 17:048474f28d28 | 139 | void OutputSelect(unsigned char cos); |
| frankvnk | 0:e742ad3d7dac | 140 | |
| frankvnk | 18:efa8d41b738f | 141 | /** Connect the comparator Output Pin to an external pin. |
| frankvnk | 18:efa8d41b738f | 142 | * Only one pin can be connected at any time.\n |
| frankvnk | 18:efa8d41b738f | 143 | * Each time this function is called, the last active pin will be disabled before the new pin is enabled.\n |
| frankvnk | 12:0a0648bddb98 | 144 | * @param input NC disconnect CMPO from the associated CMPO output pin. |
| frankvnk | 12:0a0648bddb98 | 145 | * @param input PTC0 connect CMPO to PTC0. |
| frankvnk | 12:0a0648bddb98 | 146 | * @param input PTC5 connect CMPO to PTC5. |
| frankvnk | 12:0a0648bddb98 | 147 | * @param input PTE0 connect CMPO to PTE0. |
| frankvnk | 0:e742ad3d7dac | 148 | */ |
| frankvnk | 17:048474f28d28 | 149 | void OutputPin(PinName ope); |
| frankvnk | 0:e742ad3d7dac | 150 | |
| frankvnk | 18:efa8d41b738f | 151 | /** Comparator Module control. |
| frankvnk | 18:efa8d41b738f | 152 | * Used to switch the Analog Comparator module on/off. When the module is not enabled,\n |
| frankvnk | 18:efa8d41b738f | 153 | * it remains in the off state, and consumes no power. When the user selects the same\n |
| frankvnk | 18:efa8d41b738f | 154 | * input from analog mux to the positive and negative port, the comparator is disabled automatically.\n |
| frankvnk | 18:efa8d41b738f | 155 | * 0 Analog Comparator is disabled.\n |
| frankvnk | 18:efa8d41b738f | 156 | * 1 Analog Comparator is enabled.\n |
| frankvnk | 18:efa8d41b738f | 157 | * @param input Unsigned char - (0 = disable, 1 = enable) |
| frankvnk | 0:e742ad3d7dac | 158 | * @return none |
| frankvnk | 0:e742ad3d7dac | 159 | */ |
| frankvnk | 12:0a0648bddb98 | 160 | void enable(unsigned char en); |
| frankvnk | 0:e742ad3d7dac | 161 | |
| frankvnk | 18:efa8d41b738f | 162 | /** Set the filter sample period. |
| frankvnk | 18:efa8d41b738f | 163 | * Specifies the sampling period, in bus clock cycles, of the comparator\n |
| frankvnk | 18:efa8d41b738f | 164 | * output filter, when CR1[SE]=0. Setting FILT_PER to 0x0 disables the filter.\n |
| frankvnk | 0:e742ad3d7dac | 165 | * @param input Unsigned char - range : 0..255 |
| frankvnk | 0:e742ad3d7dac | 166 | * @return none |
| frankvnk | 0:e742ad3d7dac | 167 | */ |
| frankvnk | 17:048474f28d28 | 168 | void FilterPeriod(unsigned char fipe); |
| frankvnk | 0:e742ad3d7dac | 169 | |
| frankvnk | 18:efa8d41b738f | 170 | /** DMA Control. |
| frankvnk | 18:efa8d41b738f | 171 | * Used to switch the DMA transfer triggered from the CMP module on/off.\n |
| frankvnk | 18:efa8d41b738f | 172 | * When this field is set, a DMA request is asserted when CFR or CFF is set.\n |
| frankvnk | 18:efa8d41b738f | 173 | * 0 DMA is disabled.\n |
| frankvnk | 18:efa8d41b738f | 174 | * 1 DMA is enabled.\n |
| frankvnk | 18:efa8d41b738f | 175 | * @param input Unsigned char - (0 = disable, 1 = enable) |
| frankvnk | 0:e742ad3d7dac | 176 | * @return none |
| frankvnk | 0:e742ad3d7dac | 177 | */ |
| frankvnk | 17:048474f28d28 | 178 | void dma(unsigned char dmaen); |
| frankvnk | 0:e742ad3d7dac | 179 | |
| frankvnk | 18:efa8d41b738f | 180 | /** Analog Comparator Output. |
| frankvnk | 18:efa8d41b738f | 181 | * Returns the current value of the Analog Comparator output.\n |
| frankvnk | 18:efa8d41b738f | 182 | * The field is reset to 0 and will read as CR1[INV] when the Analog Comparator\n |
| frankvnk | 18:efa8d41b738f | 183 | * module is disabled, that is, when CR1[EN] = 0. Writes to this field are ignored.\n |
| frankvnk | 0:e742ad3d7dac | 184 | * @param none |
| frankvnk | 5:787a9f72600f | 185 | * @return comparator status (unsigned char) |
| frankvnk | 0:e742ad3d7dac | 186 | */ |
| frankvnk | 0:e742ad3d7dac | 187 | unsigned char status(void); |
| frankvnk | 0:e742ad3d7dac | 188 | |
| frankvnk | 18:efa8d41b738f | 189 | /** DAC Control. |
| frankvnk | 18:efa8d41b738f | 190 | * Used to switch the internal DAC on/off. When the DAC is disabled, it is powered down to conserve power.\n |
| frankvnk | 18:efa8d41b738f | 191 | * 0 DAC is disabled.\n |
| frankvnk | 18:efa8d41b738f | 192 | * 1 DAC is enabled.\n |
| frankvnk | 0:e742ad3d7dac | 193 | * @param input Unsigned char - 0 or 1 |
| frankvnk | 0:e742ad3d7dac | 194 | * @return none |
| frankvnk | 0:e742ad3d7dac | 195 | */ |
| frankvnk | 17:048474f28d28 | 196 | void dac(unsigned char den); |
| frankvnk | 0:e742ad3d7dac | 197 | |
| frankvnk | 18:efa8d41b738f | 198 | /** Supply Voltage Reference Source Select. |
| frankvnk | 18:efa8d41b738f | 199 | * 0 - V is selected as resistor ladder network supply reference Vin1 = VREFH\n |
| frankvnk | 18:efa8d41b738f | 200 | * 1 - V is selected as resistor ladder network supply reference Vin2 = VDD\n |
| frankvnk | 18:efa8d41b738f | 201 | * (Use this option for the best ADC operation).\n |
| frankvnk | 0:e742ad3d7dac | 202 | * @param input Unsigned char - 0 or 1 |
| frankvnk | 0:e742ad3d7dac | 203 | * @return none |
| frankvnk | 0:e742ad3d7dac | 204 | */ |
| frankvnk | 17:048474f28d28 | 205 | void RefSource(unsigned char res); |
| frankvnk | 0:e742ad3d7dac | 206 | |
| frankvnk | 18:efa8d41b738f | 207 | /** Set the detection threshold level (DAC Output Voltage Select). |
| frankvnk | 18:efa8d41b738f | 208 | * Sets The 6-bit or 12-bit DAC output voltage, depending on which DAC is selected on init.\n |
| frankvnk | 18:efa8d41b738f | 209 | * 6-bit DACO range is from Vin/64 to Vin.\n |
| frankvnk | 18:efa8d41b738f | 210 | * 12-bit DACO range is from Vin/4096 to Vin.\n |
| frankvnk | 13:2d499824ba05 | 211 | * @param input float - range 0.0 .. 1.0 |
| frankvnk | 0:e742ad3d7dac | 212 | * @return none |
| frankvnk | 0:e742ad3d7dac | 213 | */ |
| frankvnk | 13:2d499824ba05 | 214 | void treshold(float vo_pct); |
| frankvnk | 0:e742ad3d7dac | 215 | |
| frankvnk | 18:efa8d41b738f | 216 | /** Pass Through Mode Control. |
| frankvnk | 18:efa8d41b738f | 217 | * Set the MUX pass through mode. Pass through mode is always available, but for\n |
| frankvnk | 18:efa8d41b738f | 218 | * some devices, this feature must be always disabled due to the lack of package pins.\n |
| frankvnk | 18:efa8d41b738f | 219 | * 0 Pass Through Mode is disabled.\n |
| frankvnk | 18:efa8d41b738f | 220 | * 1 Pass Through Mode is enabled.\n |
| frankvnk | 18:efa8d41b738f | 221 | * @param input Unsigned char - (0 = disable, 1 = enable) |
| frankvnk | 0:e742ad3d7dac | 222 | * @return none |
| frankvnk | 0:e742ad3d7dac | 223 | */ |
| frankvnk | 17:048474f28d28 | 224 | void PassThrough(unsigned char ptm); |
| frankvnk | 0:e742ad3d7dac | 225 | |
| frankvnk | 18:efa8d41b738f | 226 | /** Plus Input Mux Control. |
| frankvnk | 18:efa8d41b738f | 227 | * Determines which input is selected for the plus input of the comparator.\n |
| frankvnk | 18:efa8d41b738f | 228 | * For INx inputs, see CMP, DAC, and ANMUX block diagrams.\n |
| frankvnk | 18:efa8d41b738f | 229 | * 0 : IN0 PTC6 CMP0_IN0\n |
| frankvnk | 18:efa8d41b738f | 230 | * 1 : IN1 PTC7 CMP0_IN1\n |
| frankvnk | 18:efa8d41b738f | 231 | * 2 : IN2 PTC8 CMP0_IN2\n |
| frankvnk | 18:efa8d41b738f | 232 | * 3 : IN3 PTC9 CMP0_IN3\n |
| frankvnk | 18:efa8d41b738f | 233 | * 4 : IN4 PTE30 CMP0_IN4 12-bit DAC0\n |
| frankvnk | 18:efa8d41b738f | 234 | * 5 : IN5 PTE29 CMP0_IN5\n |
| frankvnk | 18:efa8d41b738f | 235 | * 6 : IN6 - Bandgap reference (1V)\n |
| frankvnk | 18:efa8d41b738f | 236 | * 7 : IN7 - Internal 6-bit DAC0\n |
| frankvnk | 18:efa8d41b738f | 237 | * @note When an inappropriate operation selects the same input for both muxes, the comparator\n |
| frankvnk | 18:efa8d41b738f | 238 | * automatically shuts down to prevent itself from becoming a noise generator.\n |
| frankvnk | 18:efa8d41b738f | 239 | * @note When using the PMC bandgap 1V reference voltage as CMP input, ensure that\n |
| frankvnk | 18:efa8d41b738f | 240 | * @you enable the bandgap buffer by setting the PMC_REGSC[BGBE] bit.\n |
| frankvnk | 0:e742ad3d7dac | 241 | * @param input Unsigned char - range 0..7 |
| frankvnk | 0:e742ad3d7dac | 242 | * @return none |
| frankvnk | 0:e742ad3d7dac | 243 | */ |
| frankvnk | 17:048474f28d28 | 244 | void SwitchPlus(unsigned char pinP); |
| frankvnk | 0:e742ad3d7dac | 245 | |
| frankvnk | 18:efa8d41b738f | 246 | /** Minus Input Mux Control. |
| frankvnk | 18:efa8d41b738f | 247 | * Determines which input is selected for the plus input of the comparator.\n |
| frankvnk | 18:efa8d41b738f | 248 | * For INx inputs, see CMP, DAC, and ANMUX block diagrams.\n |
| frankvnk | 18:efa8d41b738f | 249 | * 0 : IN0 PTC6 CMP0_IN0\n |
| frankvnk | 18:efa8d41b738f | 250 | * 1 : IN1 PTC7 CMP0_IN1\n |
| frankvnk | 18:efa8d41b738f | 251 | * 2 : IN2 PTC8 CMP0_IN2\n |
| frankvnk | 18:efa8d41b738f | 252 | * 3 : IN3 PTC9 CMP0_IN3\n |
| frankvnk | 18:efa8d41b738f | 253 | * 4 : IN4 PTE30 CMP0_IN4 12-bit DAC0\n |
| frankvnk | 18:efa8d41b738f | 254 | * 5 : IN5 PTE29 CMP0_IN5\n |
| frankvnk | 18:efa8d41b738f | 255 | * 6 : IN6 - Bandgap reference (1V)\n |
| frankvnk | 18:efa8d41b738f | 256 | * 7 : IN7 - Internal 6-bit DAC0\n |
| frankvnk | 18:efa8d41b738f | 257 | * @note When an inappropriate operation selects the same input for both muxes, the comparator\n |
| frankvnk | 18:efa8d41b738f | 258 | * automatically shuts down to prevent itself from becoming a noise generator.\n |
| frankvnk | 18:efa8d41b738f | 259 | * @note When using the PMC bandgap 1V reference voltage as CMP input, ensure that |
| frankvnk | 18:efa8d41b738f | 260 | * you enable the bandgap buffer by setting the PMC_REGSC[BGBE] bit. |
| frankvnk | 0:e742ad3d7dac | 261 | * @param input Unsigned char - range 0..7 |
| frankvnk | 0:e742ad3d7dac | 262 | * @return none |
| frankvnk | 0:e742ad3d7dac | 263 | */ |
| frankvnk | 17:048474f28d28 | 264 | void SwitchMin(unsigned char pinM); |
| frankvnk | 14:875486333dc2 | 265 | |
| frankvnk | 18:efa8d41b738f | 266 | /** Comparator rising interrupt callback. |
| frankvnk | 0:e742ad3d7dac | 267 | * @param pointer to the user function to execute after IRQ assertion |
| frankvnk | 17:048474f28d28 | 268 | * @param NULL to disable the interrupt |
| frankvnk | 14:875486333dc2 | 269 | * @return none |
| frankvnk | 18:efa8d41b738f | 270 | * @note The interrupt is automatically enabled when a valid pointer is used.\n |
| frankvnk | 18:efa8d41b738f | 271 | * The interrupt is automatically disabled when both risng and falling are set to NULL. |
| frankvnk | 0:e742ad3d7dac | 272 | */ |
| frankvnk | 14:875486333dc2 | 273 | void rising(void(*fptr)(void)); |
| frankvnk | 14:875486333dc2 | 274 | |
| frankvnk | 18:efa8d41b738f | 275 | /** Comparator falling interrupt callback |
| frankvnk | 14:875486333dc2 | 276 | * @param pointer to the user function to execute after IRQ assertion |
| frankvnk | 17:048474f28d28 | 277 | * @param NULL to disable the interrupt |
| frankvnk | 14:875486333dc2 | 278 | * @return none |
| frankvnk | 18:efa8d41b738f | 279 | * @note The interrupt is automatically enabled when a valid pointer is used.\n |
| frankvnk | 18:efa8d41b738f | 280 | * The interrupt is automatically disabled when both risng and falling are set to NULL. |
| frankvnk | 14:875486333dc2 | 281 | */ |
| frankvnk | 14:875486333dc2 | 282 | void falling(void(*fptr)(void)); |
| frankvnk | 0:e742ad3d7dac | 283 | |
| frankvnk | 0:e742ad3d7dac | 284 | private: |
| frankvnk | 0:e742ad3d7dac | 285 | static const PinMap PinMap_CMP[7]; |
| frankvnk | 0:e742ad3d7dac | 286 | static void _cmpISR(void); |
| frankvnk | 0:e742ad3d7dac | 287 | void hscmp_clear(void); |
| frankvnk | 12:0a0648bddb98 | 288 | PinName op_status(void); |
| frankvnk | 12:0a0648bddb98 | 289 | void op_enable(PinName pen, PinName pstat); |
| frankvnk | 12:0a0648bddb98 | 290 | void op_disable(PinName pdi); |
| frankvnk | 13:2d499824ba05 | 291 | void dac6_write(unsigned int value); |
| frankvnk | 0:e742ad3d7dac | 292 | char CMPnumberP, CMPnumberM; |
| frankvnk | 0:e742ad3d7dac | 293 | }; |
| frankvnk | 0:e742ad3d7dac | 294 | |
| frankvnk | 0:e742ad3d7dac | 295 | #endif |
| frankvnk | 0:e742ad3d7dac | 296 | |
| frankvnk | 0:e742ad3d7dac | 297 | |
| frankvnk | 0:e742ad3d7dac | 298 |