Beispiel #1
0
// Init of Drv PWM
Boolean DrvPwmInit( Int16U period ) 
{
	//init the structure to the dafault value
	for(Int8U indexPwm = 0U; indexPwm < E_NB_PWMS ; indexPwm++)
	{
		pwms[ indexPwm ].enable = FALSE;
		pwms[ indexPwm ].pin = pwmPins[ indexPwm ];
		pwms[ indexPwm ].ticks = 0U;
		pwms[ indexPwm ].min = 0U;
		pwms[ indexPwm ].mid = 0U;
		pwms[ indexPwm ].max = 0U;
		DrvIoSetPinOutput( pwms[ indexPwm ].pin );
	}
	
	//set idx to 0 at startup
	idPwm = 0U;
	
	//on init le timer 1 tick = 0.5us
	BIT_LOW(TCCR1A,WGM11); //mode normal
	BIT_LOW(TCCR1A,WGM10); //mode normal
	BIT_LOW(TCCR1B,WGM13); //mode normal
	BIT_LOW(TCCR1B,WGM12); //mode normal
	
	BIT_LOW (TIMSK1,OCIE1A);//disable ISR on OCIE1A
	BIT_LOW(TIMSK1,OCIE1B);//disable ISR on OCIE1B
	BIT_LOW (TIMSK1,TOIE1);//disable ISR on TOIE1
	BIT_LOW (TIMSK1,ICIE1);//disable ISR on ICIE1
	
	//set initial period
	DrvPwmSetPeriod(period);
	
	//reset counter to 0
	TCNT1	= 0x0000U;
	return TRUE;
}
Beispiel #2
0
	inline void ClearAlarmFlag (AlarmType flag)
	{
		if (flag != AlarmType_None)
		{
			if (activeFlags)
			{
				BIT_LOW(activeFlags, flag);
				if (!activeFlags)
				{
					OnAlarmEnded();
				}
			}
		}
	}
Beispiel #3
0
// set the period of all PWM
Boolean DrvPwmSetPeriod( Int16U period ) 
{
	periodPwm = period;
	if(periodPwm != 0U)
	{
		OCR1B = periodPwm;
		BIT_LOW (TCCR1B,CS12); //prescaler 8
		BIT_HIGH(TCCR1B,CS11); //prescaler 8
		BIT_LOW (TCCR1B,CS10); //prescaler 8
		BIT_HIGH(TIMSK1,OCIE1B);//enable ISR on OCIE1B
	}
	else
	{
		OCR1B = 0U;
		BIT_LOW (TCCR1B,CS12); //disable
		BIT_LOW (TCCR1B,CS11); //disable
		BIT_LOW (TCCR1B,CS10); //disable
		BIT_LOW(TIMSK1,OCIE1B);//disable ISR on OCIE1B
	}
	return TRUE;
}
Beispiel #4
0
////////////////////////////////////////PUBILC FUNCTIONS//////////////////////////////////////////
//Fonction d'initialisation
//return : TRUE si ok
Boolean DrvAdcInit ( void )
{
    Boolean oSuccess = TRUE;
    //AVCC with external capacitor at AREF pin
    BIT_HIGH(ADMUX,REFS0);
    //single ended input
    BIT_LOW(ADMUX,MUX4);
    BIT_LOW(ADMUX,MUX3);

    //free running
    BIT_LOW(ADCSRB,ADTS0);
    BIT_LOW(ADCSRB,ADTS1);
    BIT_LOW(ADCSRB,ADTS2);

    //disable digital input reg for ADC pins
    BIT_LOW(DIDR0,ADC0D);
    BIT_LOW(DIDR0,ADC1D);
    BIT_LOW(DIDR0,ADC2D);
    BIT_LOW(DIDR0,ADC3D);
    BIT_HIGH(DIDR0,ADC4D);
    BIT_HIGH(DIDR0,ADC5D);
    BIT_HIGH(DIDR0,ADC6D);
    BIT_HIGH(DIDR0,ADC7D);

    //enable ADC
    BIT_HIGH(ADCSRA,ADEN);
    //no start now
    BIT_LOW(ADCSRA,ADSC);
    //no auto trigger
    BIT_LOW(ADCSRA,ADATE);
    //flag
    BIT_LOW(ADCSRA,ADIF);
    //disable ADC interrupt
    BIT_LOW(ADCSRA,ADIE);
    //division factor set to 8
    BIT_HIGH(ADCSRA,ADPS0);
    BIT_HIGH(ADCSRA,ADPS1);

    return oSuccess;
}