// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCCR0 = 0x00;
if(sensor_mode == SENSOR_MODE_OFF)
{
front_sen_on();
sensor_mode = SENSOR_MODE_ON;
TCNT0 = (byte)(0xff - (SENSOR_ON_TIME/TIMER0_32PRESCALE_VALUE));
TCCR0 = 0x03; //start timer
}else if(sensor_mode == SENSOR_MODE_ON)
{
front_sen_off();
sensor_mode = SENSOR_MODE_OFF;
ADCSRA|=0x40; // ADC Start Conversion
TCNT0 = (byte)(0xff - (SENSOR_OFF_TIME/TIMER0_32PRESCALE_VALUE));
TCCR0 = 0x03; //start timer
}
}
동작루틴을 제대로 이해를 못하겠어요
제 생각에는 이루틴이 펄스생성방법이 아닌가 싶은데...
아직 센서테스트에서 막히고 있어요 ㅜㅜ
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCCR0 = 0x00;
if(sensor_mode == SENSOR_MODE_OFF)
{
front_sen_on();
sensor_mode = SENSOR_MODE_ON;
TCNT0 = (byte)(0xff - (SENSOR_ON_TIME/TIMER0_32PRESCALE_VALUE));
TCCR0 = 0x03; //start timer
}else if(sensor_mode == SENSOR_MODE_ON)
{
front_sen_off();
sensor_mode = SENSOR_MODE_OFF;
ADCSRA|=0x40; // ADC Start Conversion
TCNT0 = (byte)(0xff - (SENSOR_OFF_TIME/TIMER0_32PRESCALE_VALUE));
TCCR0 = 0x03; //start timer
}
}
동작루틴을 제대로 이해를 못하겠어요
제 생각에는 이루틴이 펄스생성방법이 아닌가 싶은데...
아직 센서테스트에서 막히고 있어요 ㅜㅜ
다음번에 타이머 인터럽트에 진입하면 센서 크고 다시 센서가 켜질 시간만큼 주기 계산해서 tcnt0값에 넣어줍니다.
센서가 켜지고 꺼지는 주기를 타이머안에서 계산해서 넣어주는것이고
센서가 켜진후에 adc로 센서값을 받게 됩니다.