Guten Tag, ich bin Anfänger und arbeite neu mit einem Atmega 162 und
möchte 4 verschiedene 16Bit PWM generieren.
Ich habe ein simples Programm geschrieben um die PWM zu testen, ich
erhöhe die Pulsweite bis ans Maximum, und verkleinere sie dann bis ans
Minimum und so weiter und sofort. Soweit funktioniert die PWM gut,
ausser dass sie eine Störung aufweisst. Die LED flakert kurz, wenn die
PWM an das Maximum gelangt.
Das passiert meistens, jedoch nicht immer, die Störung ist also nicht
regelmässig.
Ich bin verwirrt..
Habe ich einen Fehler beim Setzen der Register gemacht?
Habe ich sonst etwas übersehen oder nicht korrekt gemacht?
mfg Markus
Hi
>TCCR3A|=(1<<COM3A1 | COM3A0 | 1<<COM3B1 | COM3B0 |1<<WGM31 );>TCCR3B|=(1<<CS30| 1<<WGM32| 1<<WGM33);>TCCR1A|=(1<<COM1A1 | COM1A0 | 1<<COM1B1 | COM1B0 |1<<WGM11 );>TCCR1B|=(1<<CS10| 1<<WGM12| 1<<WGM13);
Meinst du nicht, das da noch ein paar Shiftoperatoren fehlen?
MfG Spess
Du mußt den Speicher nicht zumüllen, eine "long" Tabelle ist unnötig.
65535 paßt prima in ein "unsigned int" oder besser "uint16_t".
Beim AVR-GCC sind die Timer auch 16-bittig definiert, muß man also nicht
umständlich aufsplitten.
Peter
dass heisst man könnte das so machen:
OCR3A=tab[i];
OCR3B=tab[i];
OCR1A=tab[j];
OCR1B=tab[j];
ok..
die tabelle habe ich nun auch mit einem unsigned int erstellt
unsigned int tab[256]={....};
leider flakert es immer noch.. danke trotzdem!