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....??
Gruß FunkyCode:#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 }







Zitieren

Lesezeichen