Subversion Repositories HomeAutomation

Rev

Rev 339 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 339 Rev 353
Line 2... Line 2...
2
 *
2
 *
3
 *   Functions for reading ADC
3
 *   Functions for reading ADC
4
 *
4
 *
5
 *********************************************************************
5
 *********************************************************************
6
 * FileName:        $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/adc.c $
6
 * FileName:        $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/adc.c $
7
 * Last changed:    $LastChangedDate: 2007-02-25 20:51:08 +0100 (Sun, 25 Feb 2007) $
7
 * Last changed:    $LastChangedDate: 2007-03-03 19:07:14 +0100 (Sat, 03 Mar 2007) $
8
 * By:              $LastChangedBy: johboh $
8
 * By:              $LastChangedBy: johboh $
9
 * Revision:        $Revision: 339 $
9
 * Revision:        $Revision: 353 $
10
 ********************************************************************/
10
 ********************************************************************/
11
#include <adc.h>
11
#include <adc.h>
12
 
12
 
13
#ifdef USE_ADC
13
#ifdef USE_ADC
14
 
14
 
15
static unsigned long TEMP_VALUE;
15
unsigned long TEMP_VALUE;
16
static unsigned int TEMP_COUNT;
16
WORD TEMP_COUNT;
17
 
17
 
18
BOOL TEMP_DONE = FALSE;
18
BOOL TEMP_DONE = FALSE;
19
 
19
 
20
/*
20
/*
21
*   Function: adcInit
21
*   Function: adcInit
Line 35... Line 35...
35
    ADCON2 = 0b10101011;
35
    ADCON2 = 0b10101011;
36
    //useExtRef
36
    //useExtRef
37
    ADCON0bits.ADON = 1;
37
    ADCON0bits.ADON = 1;
38
    PIR1bits.ADIF = 0;
38
    PIR1bits.ADIF = 0;
39
    PIE1bits.ADIE = 1;
39
    PIE1bits.ADIE = 1;
40
    IPR1bits.ADIP = 0; // Low priority
40
    IPR1bits.ADIP = 1; // high priority
41
}
41
}
42
 
42
 
43
 
43
 
44
/*
44
/*
45
*   Function: adcISR
45
*   Function: adcISR
Line 50... Line 50...
50
*   Affects: none.
50
*   Affects: none.
51
*   Depends: none.
51
*   Depends: none.
52
*/
52
*/
53
void adcISR(void)
53
void adcISR(void)
54
{
54
{
55
    if (PIE1bits.ADIE && PIR1bits.ADIF)
55
    if (PIE1bits.ADIE==1 && PIR1bits.ADIF==1)
56
    {
56
    {
57
        PIR1bits.ADIF = 0;
57
        PIR1bits.ADIF = 0;
58
 
58
 
59
        TEMP_VALUE+=((int)ADRESH)<<8 | ADRESL;
59
        TEMP_VALUE+=((WORD)ADRESH<<8) | ADRESL;
60
        TEMP_COUNT++;
60
        TEMP_COUNT++;
61
 
61
 
62
        if (TEMP_COUNT>=TEMP_SAMPLES)
62
        if (TEMP_COUNT>=TEMP_SAMPLES)
63
        {
63
        {
64
            TEMP_VALUE = TEMP_VALUE/TEMP_COUNT;
64
            TEMP_VALUE = TEMP_VALUE/TEMP_COUNT;