/** 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 Istvan Cserny

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?

UserRevisionLine numberNew 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