/*
 * hanahotaru.c
 *
 * Created: 2011/11/01 23:14:03
 *  Author: akira
 */ 

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
//register uint8_t a asm("r17"); 
//register int8_t b asm("r16"); 
//割り込みはsleepからの復帰にのみつかう
ISR(TIM0_OVF_vect){}

int main(void)
{
uint8_t  a;
uint8_t  b;
	//IO設定
	DDRB=0x02;
	ACSR=0x80; //アナログコンパレータは使わない
	//CPUクロック
	CLKPSR=8; //8/256= 1/32 MHz=31.25kHz 
	//PWM
	#define V_WGM0 5  //fast PWM 8bit
	#define V_COMA 0
	#define V_COMB 2
	#define V_CLK 2
	OCR0BL=128; ///PWM初期値
	TCCR0C=0;
	TCCR0A= 0x21;//(V_COMA<<6) |(V_COMB<<2)|(V_WGM0&3);
	TCCR0B=0x08+V_CLK;//;//(((V_WGM0>>2)&3)<<4)|V_CLK; //タイマスタート
	TIMSK0=1;//overflow interrupt
	
	
	//AD設定
	SMCR=1;//ADC noisereductionモードでのsleep
	ADMUX=0x00;
	ADCSRA=0xC3;//ADコンバートスタート

	a=0;
	b=0;							
	
	sei();
	sleep_enable();

    while(1)
    {
        //TODO:: Please write your application code 
        sleep_cpu();
		a++;
		if(a == 8)ADCSRA=0xC3;//ADコンバートスタート
		if(a == 10)a=0;
		else continue;
	
		if(ADCL<20)b=0;
		if(b<=1){
			if((b==0?35:250)<ADCL){
				b=255;
			}	
		}else{
			if(200<=b){
				b-=8;
			}else if(5<=b){
				b-=4;
			}else{
				b=1;
			}			
		}
		OCR0BL=b;
		
		//OCR0BL=ADCL;
    }
}

