generování PWM v CTC 328P

Tak jo :smiley: ještě stále mě to nefunguje, ale ještě to budu zkoušet dál. Všechny dotazy jsem tentokrát vložil do kódu jako komentáře snad to nevadí. Dal jsem tam i ty výňatky z datasheetu proč jsem nastavoval ten FOC a proč tím pádem jsem nastavoval časovač jednou s FOC a podruhé bez něj. Bylo to kvuli tomu že jsem si tím vynutil nasatvení log1. Nyní kód vypadá takto:

unsigned char x;

ISR(TIMER2_COMPA_vect, ISR_NAKED )
{

x=x-1;
if(x==0)
{
x=40;
}
if (x<21)
{
PIND=(1<<3);
PINB=(1<<3);
}
reti();
}

void setup()
{
DDRD=(1<<3);
DDRB=(1<<3);
DDRC=0;
PORTD=255;
PORTC=255;
PORTB=~(1<<3);

x=1;
//podle datasheetu je normal port operation pro 0<<COM2x jenže zároveň je u toho napsané že v takovém případě je OC2x odpojen
TCCR2A=(0<<COM2A1)|(0<<COM2A0)|(0<<COM2B1)|(0<<COM2B0)|(1<<WGM21)|(0<<WGM20);
TCCR2B=(0<<WGM22)|(0<<CS22)|(0<<CS21)|(1<<CS20);
TIMSK2=(1<<OCIE2A); //mám nastavovat aji OCIE2B?? proč to nedělá chybu při |= respektivě při požití OR?

OCR2A=25;
OCR2B=25; 
//OC2x je označení pinů a OCR2x je označení registru 


/*
  Forcing compare match will not set the OCF1x
  Flag or reload/clear the timer, but the OC1x pin will be updated as if a real compare match had occurred
  (the TCCR1A.COM1x[1:0] bits define whether the OC1x pin is set, cleared or toggled). str.129
 
  The easiest way of setting the OC2x value is to use the Force Output Compare (FOC2x) strobe bit
  in Normal mode. The OC2x Register keeps its value even when changing between Waveform Generation
  modes. str.130
*/

}

void loop() {
// put your main code here, to run repeatedly:

}