/** comparatorin_demo * Simple program to demonstrate the basic functions * of the analog comparator of the FRDM-KL25Z board. * * Used library: * - ComparatorIn //https://developer.mbed.org/users/frankvnk/code/ComparatorIn/ * written by Frank Vannieuwkerke * * Hardware requirements: * - FRDM-KL25 board * - CdS photoresistor pulled up by 10 k * - Connecect the midpoint of the divider to PTE29 * * 10k CdS photoresistor * +3.3V --/\/\/\---+---/\/\/\---- GND * | * PTE29 * */
Dependencies: ComparatorIn mbed
Fork of 05_comparator_demo by
main.cpp@1:fb35e688f9f4, 2013-06-05 (annotated)
- Committer:
- frankvnk
- Date:
- Wed Jun 05 18:51:15 2013 +0000
- Revision:
- 1:fb35e688f9f4
- Parent:
- 0:e5deffde916d
- Child:
- 2:bb19e60cb933
detection threshold adjusted
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
frankvnk | 0:e5deffde916d | 1 | #include "ComparatorIn.h" |
frankvnk | 0:e5deffde916d | 2 | #include "mbed.h" |
frankvnk | 0:e5deffde916d | 3 | |
frankvnk | 0:e5deffde916d | 4 | DigitalOut myled(LED1); // Blue |
frankvnk | 0:e5deffde916d | 5 | DigitalOut cmpled(LED2); // Green |
frankvnk | 0:e5deffde916d | 6 | DigitalOut cmp_en (PTD5); |
frankvnk | 0:e5deffde916d | 7 | AnalogIn cmp_lvl (PTB0); |
frankvnk | 0:e5deffde916d | 8 | ComparatorIn compi(PTC8, NC); // light sensor comparator input |
frankvnk | 0:e5deffde916d | 9 | |
frankvnk | 0:e5deffde916d | 10 | // Comparator callback function |
frankvnk | 0:e5deffde916d | 11 | void cmp_ISR(unsigned int cmp_ret) |
frankvnk | 0:e5deffde916d | 12 | { |
frankvnk | 0:e5deffde916d | 13 | printf("\n%02X - Light sensor : %7.5f Volt - ",cmp_ret,cmp_lvl*3.3); |
frankvnk | 0:e5deffde916d | 14 | if ((cmp_ret & CMP_SCR_CFR_MASK)==CMP_SCR_CFR_MASK) |
frankvnk | 0:e5deffde916d | 15 | { |
frankvnk | 0:e5deffde916d | 16 | printf("<INT=Rising edge on HSCMP0>\n"); |
frankvnk | 0:e5deffde916d | 17 | } |
frankvnk | 0:e5deffde916d | 18 | if ((cmp_ret & CMP_SCR_CFF_MASK)==CMP_SCR_CFF_MASK) |
frankvnk | 0:e5deffde916d | 19 | { |
frankvnk | 0:e5deffde916d | 20 | printf("<INT=Falling edge on HSCMP0>\n "); |
frankvnk | 0:e5deffde916d | 21 | } |
frankvnk | 0:e5deffde916d | 22 | } |
frankvnk | 0:e5deffde916d | 23 | |
frankvnk | 0:e5deffde916d | 24 | |
frankvnk | 0:e5deffde916d | 25 | |
frankvnk | 0:e5deffde916d | 26 | int main() |
frankvnk | 0:e5deffde916d | 27 | { |
frankvnk | 0:e5deffde916d | 28 | cmp_en = 1; |
frankvnk | 0:e5deffde916d | 29 | |
frankvnk | 0:e5deffde916d | 30 | compi._callbackISR(&cmp_ISR); // Set comparator callback to cmp_ISR |
frankvnk | 1:fb35e688f9f4 | 31 | compi.treshold(0x20); // Set comparator threshold to 1.65V = 32 * 3.3V / 64 |
frankvnk | 0:e5deffde916d | 32 | |
frankvnk | 0:e5deffde916d | 33 | while(1) |
frankvnk | 0:e5deffde916d | 34 | { |
frankvnk | 0:e5deffde916d | 35 | // printf("InP : %02X - InM : %02X - DACCR : %02X\n",(CMP0->MUXCR & 0x38)>>3,(CMP0->MUXCR & 0x07),(CMP0->DACCR & 0x3f)); |
frankvnk | 0:e5deffde916d | 36 | printf("Light sensor : %7.5f Volt\n",cmp_lvl*3.3); |
frankvnk | 0:e5deffde916d | 37 | myled = 1; |
frankvnk | 0:e5deffde916d | 38 | wait(1); |
frankvnk | 0:e5deffde916d | 39 | myled = 0; |
frankvnk | 0:e5deffde916d | 40 | wait(0.2); |
frankvnk | 0:e5deffde916d | 41 | if (compi.status() == 0x01) |
frankvnk | 0:e5deffde916d | 42 | { |
frankvnk | 0:e5deffde916d | 43 | cmpled = 0; |
frankvnk | 0:e5deffde916d | 44 | } |
frankvnk | 0:e5deffde916d | 45 | else |
frankvnk | 0:e5deffde916d | 46 | { |
frankvnk | 0:e5deffde916d | 47 | cmpled = 1; |
frankvnk | 0:e5deffde916d | 48 | } |
frankvnk | 0:e5deffde916d | 49 | } |
frankvnk | 0:e5deffde916d | 50 | } |
frankvnk | 0:e5deffde916d | 51 |