unsigned int value0 = 0; unsigned int value1 = 0; unsigned int value2 = 0; unsigned int value3 = 0; unsigned int value4 = 0; unsigned int value5 = 0; byte x = 0; volatile unsigned int longtimer = 0; unsigned int k = 10; byte freq = 0xfa; #define LFO 180 // hertz #define MFO 800 // hertz #define HFO 4000 // hertz #define LFO_DUTY 80 // percent duty cycle #define MFO_DUTY 20 // percent duty cycle #define HFO_DUTY 14 // percent duty cycle #define BLACH ((1000000/MFO)*MFO_DUTY)/1600 #define BLAC ((1000000/MFO)*(100 - MFO_DUTY))/1600 void setup() { // set cpu clock to 1MHz to simulate ATtiny CLKPR = (1<>4;//(1000*LFO_DUTY*MFO/LFO)/100000; unsigned int k = 100 + value2>>2;//BLACH; unsigned int l = 100 + value3>>1;//BLAC; while (freq < 0xfe) { DDRB |= (1< 0) { delayMicroseconds(60); // approximately 1ms --j; } // ICR1H = 0x0a; // OCR1AH = (value5 >> 8); OCR1AL = (value5 >> 2) & 0x00ff; // if (k > 0) --k; // else { // OCR1AL = 5 + random(5); // k = 10; // } } ISR(ADC_vect) { byte temp0 = ADCL; // fetch ADCL first to freeze sample byte temp1 = ADCH; // add to temp register ++x; if (x == 1) value0 = (temp1 << 8) | temp0; else if (x == 2) value1 = (temp1 << 8) | temp0; else if (x == 3) value2 = (temp1 << 8) | temp0; else if (x == 4) value3 = (temp1 << 8) | temp0; else if (x == 5) value4 = (temp1 << 8) | temp0; else { value5 = (temp1 << 8) | temp0; x = 0; } ADMUX = 0x40 | x; ADCSRA = 0xdf; } ISR(WDT_vect) { ++longtimer; }