Hallo,

ich habe ein Programm für einen Atmega48 geschrieben welches mir ein Signal mit welchselden Impulslängen erzeugen soll. Bis zu 2 Werten klappt alles wunderbar und ich bekomme ein sauberes Signal. Nur sobald es mehr werden überlagern sich die Signale. Hat jemand ne Ahnung woran das liegen kann....??

Code:
#include <avr/io.h>
#include <avr/interrupt.h>	
unsigned char Preloads[] =  {15, 100, 20, 100, 20, 100, 20, 100, 20, 100, 20, 100, 5, 100, 5, 200};
unsigned char NrOverflow = 0;


ISR(TIMER2_COMPA_vect)
{
  PORTB =~ PORTB;                   // PORTB inventieren

  NrOverflow++; 
  if( NrOverflow == 16)
    NrOverflow = 0;


	OCR2A = Preloads[ NrOverflow ];	// Den Timer damit laden
 
}

int main()
{
  	
  DDRB  =  0xFF; // PORTB als Ausgang schalten
  PORTB =  0x00; // Alle Ausgaenge auf 0 schalten
  

  TCCR2B |= (1 << CS21);     // Teiler 8
  
  TCCR2A |= (1 << WGM21);	 // CTC Modus
   				
  TIMSK2 |= (1 << OCIE2A);   // Timer 2 Compare Interrupt enable


  sei(); // Interrupts einschalten

  while(1); //ever
}
Gruß Funky