Hallo,
danke, das warsIch hatte mir vorher sogar noch ein paar Beispiele angesehen, wo das Flag auch gelöscht wurde, aber irgendwie habe ich das wieder vergessen... Dankeschön!
Jedoch gibts jetzt schon das nächste Problem:
Folgende Zeile
funktioniert (ohne Komma zwischen Digflt0 = 8 & Mux1 = Tcc0_ovf), diese nicht:Code:Config Event_system = Dummy , Mux0 = Porte.0 , Digflt0 = 8 Mux1 = Tcc0_ovf
Aber ich denke mal, das ist ein Bug?!Code:Config Event_system = Dummy , Mux0 = Porte.0 , Digflt0 = 8 , Mux1 = Tcc0_ovf
Mit der ersten Zeile wird die DMA Channel1 ISR aufgerufen, bei der zweiten Zeile jedoch nicht... Aber damit kann ich Leben, wenn ichs weiß
Nächstes Problem:
Wenn ich mir in der DMA Channel1 ISR die PWM_Input Variable ausgeben lasse, trägt diese immer den Wert von Timer_Reload_Value... Ich glaube, der Timer läuft noch nicht... Mal sehen
Vielen Dank & Gruß
Chris
EDIT:
1. Ich habe die Register vertauscht!! Das Register, in dem der aktuelle Zählerstand steht, heißt TCC0_CNT.
2. Gerade habe ich gesehen, dass man mit dem Timer auch direkt die PWM Pulsweite messen kann... Somit wird mir der Umweg über den DMA usw... erspart... Trotzdem ein sehr interresantes Kapitel
EDIT2:
Also: PWM einlesen mit TCE0 CaptureA funktioniert, mit CatpureB jedoch nicht... Weiß jemand Rat?
Das funktioniert:
Das funktioniert nicht:Code:$regfile = "xm64a3def.dat" $crystal = 32000000 $framesize = 100 $hwstack = 100 $swstack = 100 $lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014 Config Osc = Disabled , 32mhzosc = Enabled Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 Dim X As Word Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 Open "COM2:" For Binary As #1 Config Porte.0 = Input Porte_pin0ctrl = &B00_011_010 Config Event_system = Dummy , Mux0 = Porte.0 , Digflt0 = 1 Config Tce0 = Normal , Prescale = 1 , Capturea = Enabled , Event_source = E0 , Event_action = Pwc , Resolution = 16 Config Tcd0 = Pwm , Prescale = 1 , Comparea = Enabled , Resolution = 16 Tcd0_cca = 30000 Enable Interrupts Config Priority = Static , Vector = Application , Lo = Enabled Do Incr X If X = 65500 Then X = 0 Tcd0_cca = X Print #1 , Tce0_cca Loop End
Code:$regfile = "xm64a3def.dat" $crystal = 32000000 $framesize = 100 $hwstack = 100 $swstack = 100 $lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014 Config Osc = Disabled , 32mhzosc = Enabled Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 Dim X As Word Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 Open "COM2:" For Binary As #1 Config Porte.1 = Input Porte_pin1ctrl = &B00_011_010 Config Event_system = Dummy , Mux0 = Porte.1 , Digflt0 = 1 Config Tce0 = Normal , Prescale = 1 , Captureb = Enabled , Event_source = E0 , Event_action = Pwc , Resolution = 16 Config Tcd0 = Pwm , Prescale = 1 , Comparea = Enabled , Resolution = 16 Tcd0_cca = 30000 Enable Interrupts Config Priority = Static , Vector = Application , Lo = Enabled Do Incr X If X = 65500 Then X = 0 Tcd0_cca = X Print #1 , Tce0_ccb Loop End







Zitieren

Lesezeichen