• メインページ
  • データ構造
  • ファイル
  • ファイル一覧
  • グローバル

OpenSSM/libadc.c

説明を見る。
00001 /**************************************************************************************************
00002     Title           : ADC Driver
00003     Programmer      : Yosuke FURUSAWA
00004     Copyright       : Copyright (C) 2008-2010 Yosuke FURUSAWA.
00005     License         : 4-clause BSD License
00006     Since           : 2008/12/10
00007 
00008     Filename        : libadc.c
00009     Last up date    : 2010/08/13
00010     Kanji-Code      : Shift-JIS
00011     TAB Space       : 4
00012 **************************************************************************************************/
00013 
00014 
00015 /*================================================================================================
00016 ヘッダファイルをインクルード
00017 =================================================================================================*/
00018 #include <p24FJ64GA002.h>
00019 
00020 #include "types.h"
00021 
00022 #include "librtc.h"
00023 #include "libadc.h"
00024 
00025 
00026 /*=================================================================================================
00027 マクロ定義
00028 =================================================================================================*/
00029 
00030 
00031 /*=================================================================================================
00032 グローバル変数
00033 =================================================================================================*/
00034 ADC_T adc;
00035 
00036 
00037 /*=================================================================================================
00038 プロトタイプ宣言
00039 =================================================================================================*/
00040 
00041 
00042 /**************************************************************************************************
00043 内蔵ADC 割り込み
00044 **************************************************************************************************/
00045 void __attribute__((interrupt, auto_psv)) _ADC1Interrupt(void)
00046 {
00047     IFS0bits.AD1IF = 0;
00048 
00049     /* LPF */
00050     adc.adc[0] = (ADC1BUF0 + ADC1BUF3 + ADC1BUF6 + ADC1BUF9) >> 2;
00051     adc.adc[1] = (ADC1BUF1 + ADC1BUF4 + ADC1BUF7 + ADC1BUFA) >> 2;
00052     adc.adc[2] = (ADC1BUF2 + ADC1BUF5 + ADC1BUF8 + ADC1BUFB) >> 2;
00053 
00054 #ifndef ADC_LOWMEM
00055     adc.cycle = RTC_get_ticks(adc.last, rtc.tick);
00056     adc.last = rtc.tick;
00057 #endif
00058 
00059     return;
00060 }
00061 
00062 
00063 /**************************************************************************************************
00064 ADC 初期化
00065 **************************************************************************************************/
00066 void ADC_init(void)
00067 {
00068     
00069 #ifndef ADC_LOWMEM
00070     adc.last = rtc.tick;
00071     adc.cycle = 0xffff;
00072 #endif
00073 
00074     /* 内蔵ADC */
00075     /*          FEDCBA9876543210 */
00076     AD1CON1 = 0b1000000011100101;
00077     AD1CON2 = 0b0000010000110000;
00078     AD1CON3 = 0b0001111111111111;
00079     AD1PCFG = 0b1111111111111000;
00080     AD1CSSL = 0b0000000000000111;
00081     AD1CHS  = 0b0000000000000000;
00082 
00083     IPC3bits.AD1IP = 1;
00084     IEC0bits.AD1IE = 1;
00085     IFS0bits.AD1IF = 0;
00086 
00087     return;
00088 }

OpenSSMに対してThu Sep 9 2010 00:03:04に生成されました。  doxygen 1.7.1