Exemple #1
0
void Adc_entry(UArg a0, UArg a1)
{
  uint8_t p = 0;
  uint8_t total = 0;
  Adc_init();
//1800 1560  1100   x  y  z
// 1800 1200      

  while(1)
  {
    HeartRate_GetParameter(HEARTRATE_COMMAND, &p);
    if( p == 0) {
      valx = OneShotADC(ALS_AUX_X) * 43 / 33;
      valy = OneShotADC(ALS_AUX_Y) * 43 / 33;
      valz = OneShotADC(ALS_AUX_Z) * 43 / 33;
      ADXL335_setVal(valx, valy, valz);
      Svm = ADXL335_Filter();
      if(total < 8) {
        total++;
        maxSvm = 0;
      }
      maxSvm = max(Svm, maxSvm);
      

      if( _ADXL335_IsDown( Svm ) ) {
        p = 1;
        HeartRate_SetParameter(HEARTRATE_COMMAND, 1, &p);
      };

      Task_sleep(5);
    } else {
      Task_sleep(1000);
    }
      
    
  }
}
Exemple #2
0
void main(void)
{
    int8u dec_key;

    OSCTUNE = 0;
    OSCCON = 0b01100011;//0b01110011;
    //TRISA = 0b11000001;
    //TRISE = 0;
    //TRISC = 0b0111;

    TRISA=0b11000001;
    //TRISAbits.RA6=1;
    //TRISAbits.RA7=1;
    TRISC=0b0111;
    TRISE=0b000000000;
    TRISB7=0;    TRISD3=0;
    TRISD2=0;    TRISD1=0;
    TRISD0=1;    TRISB0=0;
    TRISB1=0;    TRISD4=0;
    TRISD5=0;    TRISD6=0;      TRISD7=0;

    USARTinit();
    lcd_init();
    Initcustom_char();
    cur_gain = 0.25;
    /*strncpy( Lcd_LINE1 , Lcd_L1 , 16 ) ;
    strncpy( Lcd_LINE2 , Lcd_L2 , 16 ) ;
    Display();
    strncpy( Lcd_LINE1 , Lcd_L3 , 16 ) ;
    strncpy( Lcd_LINE2 , Lcd_L4 , 16 ) ;
    Display();*/

    //while(1);
    Adc_init();
    Init_i2c();
    Init_stat_isr();
    Init_PWM();
    dutyvolt = 0; dutycurrent = 0;
    Set_PWM_Duty();
    /*while(1)
    {
        Display();
        USARTWriteChar('U');
        USARTWriteString(" Hi All\n\r");
        dec_key = getkey();dispnum( dec_key  ,1,2);
        Get_ADC_Count();   dispnum( ADC_Count,5,7);
        DelayMs(1000);
    }*/

    FFT_ready_flag = 0;
    while(1)
    {
        if(FFT_ready_flag)
        {
            INT0IE = 0;

            Read_FFT(0,128);
            FFT_ready_flag = 0;

            Calc_percentageFull();
            Disp_Mill_fill();

            INT0IE = 1;
        }
    }
}
Exemple #3
0
/* Test ADC */
UINT16 Adc_testChannelOne(void) {
    Adc_init();
    TRISAbits.TRISA1 = 1;
    return Adc_convert(1);
}
void hw_init(void)
{
	//OSCTUNE	= 0x00;	/*校正されたクロックを使用*/
	OSCCON	= 0x60;	/*内蔵クロック4MHz、内蔵クロック安定、内蔵クロックをシステムクロックに使用*/
	//OSCCON	= 0x20;	/*内蔵クロック250kHz、内蔵クロック安定、内蔵クロックをシステムクロックに使用*/
	
	//OPTION_REG
	nRBPU	= 1;		/*PORTBプルアップを使用しない*/
	INTEDG	= 0;		/*RB0/INTピンの立下りエッジにより割り込み*/
	T0CS		= 0;		/*タイマ0は内部命令サイクルクロックでインクリメント設定*/
	T0SE		= 0;		/*RA4ピン入力LowからHighでインクリメント*/
	PSA		= 0;		/*プリスケーラはTMR0へ割り当て (PS2~0 ×2)*/
	PS2		= 0;		/*プリスケーラレート選択2bit*/
	PS1		= 1;		/*プリスケーラレート選択1bit*/
	PS0		= 0;		/*プリスケーラレート選択0bit*/
	
	//割り込み許可設定--------------------------------------
	//INTCON	(Interrupt control register)
	GIE		= 0;		/*割り込み禁止(main開始前に割り込み許可にすること)Global Interrupt Enable bit*/
	PEIE		= 1;		/*Peripheral Interrupt Enable bit 全てのマスクしてない割り込みを許可*/
	TMR0IE	= 1;		/*TMR0割り込み許可*/
	INT0IE	= 0;		/*RB0割り込み禁止*/
	RBIE		= 0;		/*RBポート変化割り込み禁止*/
	TMR0IF	= 0;		/*TMR0オーバーフローしてない*/
	INT0IF	= 0;		/*RB0割り込み発生していない*/
	RBIF		= 0;		/*状態が変化したRB7:RB4ピンはない*/
	
	//PIE1(Peripheral interrupt enable register1)
	ADIE		= 1;		/*AD Converter Interrupt Enable bit*/
	RCIE		= 0;		/*AUSART Recieve Interrupt*/
	TXIE		= 0;		/*AUSART Transmit Interrupt*/
	SSPIE	= 0;		/*Syncronous Serial Port Interrupt*/
	CCP1IE	= 0;		/*CCP1 Interrupt*/
	TMR2IE	= 0;		/*TMR2 to PR2 Match Interrupt*/
	TMR1IE	= 0;		/*TMR1 Overflow Interrupt*/
	
	//PIR1
	PIR1 = 0x00;
	
	//PIE2(Peripheral interrupt enable register2)

//	OSFIE	= 0;		/*Oscillator Fail Interrupt*/
//	CMIE		= 0;		/*Comparator Interrupt*/
//	EEIE		= 0;		/*EEPROMライト完了割り込み禁止*/

	
	//PIR2
//**	PIR2 = 0x00;
	
	//PCON
//**	nPOR		= 1;		/*Power-on Reset occurred*/
//**	nBOR		= 1;		/*Brown-out Reset occurred*/
//	PCON 	= 0x03;
	
	//シリアル同期通信設定-----------------------------
	//SSPSTAT--------------
	//SSPSTAT	= 0x00;
	//SMP	= 0;
	//CKE	= 0;
	//DA		= 0;
	//STOP	= 0;
	//START	= 0;
	//RW		= 0;
	//UA		= 0;
	//BF		= 0;
	
	//SSPCON---------------
	//SSPCON	= 
	//WCOL	= 0;
	//SSPOV	=
	//SSPEN	= 
	//CKP	= 1
	//SSPM3	= 
	//SSPM2	= 
	//SSPM1	= 
	//SSPM0	= 
	
	//-------------------------------------------------
	//
	//
	//
	//
	//OSCF	= 1;	//4MHz typical(PIC16F628A)
	//
	
	//ポート設定-------------------------------------
	/*PORTA*/
	TRISA	= 0x01;	/*PORTA出力設定(RA0:Analog Input)*/
	PORTA	= 0x00;
	
	/*PORTB*/
	TRISB	= 0x08;	/*PORTB出力設定(RB3のみ入力)*/
	PORTB	= 0x00;	
	
	//通信設定---------------------------------------
	//RCSTA	= 0x80;
	//SPEN	= 1;	//シリアルポートenabled
	//RX9	= 0;	//8bit受信
	//SREN	= 0;	//シングル受信許可指定:禁止
	//CREN	= 0;	//連続受信許可:禁止
	//ADDEN	= 0;	//
	//FERR	= 0;	//フレーミングエラーステータス:正常(RCREGリードでクリア)
	//OERR	= 0;	//オーバーランエラーステータス:正(CRENのOFF, ONでクリア)
	//RX9D	= 0;	//受信データ9ビット目 パリティビット
	
	//TXSTA	= 0xB0;
	//CSRC	= 1;	//同期通信マスタモード(BRGからの生成クロック)
	//TX9	= 0;	//8bitトランスミット
	//TXEN	= 1;	//Transmit enabled
	//SYNC	= 1;	//USARTモード 同期通信?
	//bit3	= 0;	//未定義リードすると0
	//BRGH	= 0;	//スピード非同期通信時 1:High speed 0:Low speed
	//TRMT	= 0;	//Transmit Shift Register Status bit 1:TSR empty 0:TSR full
	//TX9D	= 0;	//パリティ?
	
	//SPBRG	= 0x66;	//102 Fosc=8MHzのときボーレート19.417K
	//TXREG	= 0x00;	//送信データ黒塗り
	
	//タイマ0設定-------------------------------------
	TMR0	= 0;		//
	
	//ADC設定-----------------------------------------
	Adc_init();
	
}