/* 2 Spannungsebenen * Pulsdauermodulation * Arduino Micro */ #define F_PWM 62500L //Hz #define PRESCALER 1 #define TIMER_RELOAD ((F_CPU / ( PRESCALER * F_PWM) -1)) //Fast PWM //Variablen volatile uint16_t Frequenz; volatile uint8_t Amplitude; const int8_t Sinus[256] PROGMEM = {0,3,6,9,12,16,19,22,25,28,31,34,37,40,43,46,49, 51,54,57,60,63,65,68,71,73,76,78,81,83,85,88,90,92,94,96,98,100,102,104,106,107,109, 111,112,113,115,116,117,118,120,121,122,122,123,124,125,125,126,126,126,127,127,127, 127,127,127,127,126,126,126,125,125,124,123,122,122,121,120,118,117,116,115,113,112, 111,109,107,106,104,102,100,98,96,94,92,90,88,85,83,81,78,76,73,71,68,65,63,60,57, 54,51,49,46,43,40,37,34,31,28,25,22,19,16,12,9,6,3,0,-3,-6,-9,-12,-16,-19,-22,-25, -28,-31,-34,-37,-40,-43,-46,-49,-51,-54,-57,-60,-63,-65,-68,-71,-73,-76,-78,-81,-83, -85,-88,-90,-92,-94,-96,-98,-100,-102,-104,-106,-107,-109,-111,-112,-113,-115,-116, -117,-118,-120,-121,-122,-122,-123,-124,-125,-125,-126,-126,-126,-127,-127,-127,-127, -127,-127,-127,-126,-126,-126,-125,-125,-124,-123,-122,-122,-121,-120,-118,-117,-116, -115,-113,-112,-111,-109,-107,-106,-104,-102,-100,-98,-96,-94,-92,-90,-88,-85,-83, -81,-78,-76,-73,-71,-68,-65,-63,-60,-57,-54,-51,-49,-46,-43,-40,-37,-34,-31,-28,-25, -22,-19,-16,-12,-9,-6,-3,}; void setup(){ pinMode(A0,INPUT); pinMode(9,OUTPUT); //OCR1A pinMode(10,OUTPUT); //OCR1B //Timer1 initialisieren //Mode 14, Fast PWM (ICR1), nichtinvertierte PWM, Prescaler 1 TCCR1A = (1<>8])*(int16_t)Amplitude)>>8); OCR1B = 128-(((int8_t)pgm_read_byte(&Sinus[i>>8])*(int16_t)Amplitude)>>8); }