Au weh, tut mir leid. Es ist ein nano328p/TQFP AU 1511 (ATmega328-P_Atmel-42735A_Datasheet_Complete-06-2016) verbaut, den originalen 16MHz-Resonator hatte ich durch einen baugleichen 20 MHz-Typ ersetzt.was für ein verwendeter Controller exakt? ..
Das ist ein selbsterstelltes Programm (Studentenübung), das mir zur Fehlersuche vorgelegt wurde. TOP ist OCRA, siehe Datenblatt, Seite 205, waveform Mode 5... Warum Phase Correct Mode bzw. welche TOP Wert ist konfiguriert? ..
Es ist Timer2, bei den megas immer? 8bittig; der 16bittige Timer ist immer? Timer1... Meine Vermutung, er zählt mit 16Bit = 65535 und 200/65535 = 0.3% ..
Das wait soll die isochrone Phase der PWM dimensionieren - ohne zweiten Timer. Wie erwähnt, ein Anfängerversuch... wait wait wait .... warum schaltest du den interrupt ein? Hast du denn auch eine Interrupt Routine? Sonst schmiert er dabei immer ab!
Nein, der Interrupt wurde im vorgelegten Programm nicht mal in der Timerinitialisierung erlaubt/freigegeben. Ich bin selbst überrascht, dass weder die Interruptlibrary #include <avr/interrupt.h> benutzt werden muss, noch muss der Interrupt global freigegeben werden, nur lokal in der Timerinitialisierung. Bei global freigegebenem Interrupt muss notwendigerweise zusätzlich noch die ISR ISR (TIMER2_COMPA_vect) erstellt sein, wenn auch nur als leere Funktion. (Ja ja, das klingt auch bei mir nach experimentellem Software-Engineering, aber mein C ist ja noch sehr rudimentär).
Lesezeichen