/* 2013/11/26 By M.kikuchi ATTiny13A 1.2MHz PWM LOG_type VR PB0 D OC0A PB2 F input 1=LOGtype 0=Normal PB1 E OC0B UN USE PB3 A PB4 B ADC2 ADC in Config H=1F L=6A ROM 256 bytes Last 11/26 */ char LOG_addata[]={ 0,1,1,2,2,3,4,5,7,9, 11,13,16,20,25,32,40,50,62,75, 96,119,148,183,228,255 }; char ADCR (char ACH){ // 8bit out ADMUX |= ACH; // set of ch ADCSRA.ADIF=0; // Flag clear ADCSRA.ADSC=1; // start while (ADCSRA.ADIF==0); return ADCH; } void main() { char temp; // DDRB =0b00000011; // Set OC0A,OC0B PORTB=0b00000100; // Pull UP for SW DIDR0=0b00011000; // BPB4=ADC2D APB3=ADC3D Digital disable TCCR0A=0b10000001; // 非反転 8bit位相 // TCCR0A=0b10000011; // 高速 (2倍速の時 約600Hz) TCCR0B=0b00000010; // 1/8 293Hz 3.4mSec:1/1-0.42mSec OCR0A =0x63; // 比較register 39% ADCSRA.ADEN=1; // ADC Power ON ADCSRA |=0b00000011; // 1/8 cloak ADMUX =0b00100000; // Vcc:use ADCH: PB4=10 // while (1){ temp = ADCR(2); // ADC to PWM if (PINB2_bit == 1){ temp /= 10; OCR0A = LOG_addata[temp]; } else OCR0A = temp; Delay_ms(50); }; }