Xmega pulse with capture

Gast #4189920
Lesenswert?

Hallo Leute,

ich habe leider ein problem mit einer Messroutine:

Baustein: Xmega 32 E5
Signal: Rechteck fmax 500kHz
Messung: Periodendauer

Signal ist per Eventsystem auf einen Timer der auf
"Frequency and Pulse Width Capture of an External Signal"

konfiguriert ist geleitet, der Timer läuft mit 32 MHz und
zählt bis 0xFFFF

Mit dieser Konfiguration erhalte ich ohne jeglicher
CPU Belastung automatisch die Periodendauer und die Ontime
des Signals im CCA und CCB Register was auch soweit funktioniert, 
demnach sollte bei einem 1kHz Rechteck
31897 timerticks als Ergebnis erhalten, was ich sporadisch auch bekomme, 
bei Wiederholmessung pendeln die Werte im Register zwischen +-10 und 
+-40%, egal ob ich jetzt mit 1kHz oder z.B. 500KHz messe, bei 
Wiederholmessungen pendeln die Werte immer um den gleichen Prozentsatz 
was mache ich hier nur falsch???

Danke für eure Unterstützung!!!
Gast #4190278
Lesenswert?

>> demnach sollte bei einem 1kHz Rechteck
31897 timerticks als Ergebnis erhalten...

Wie kommst du auf die komische Zahl?
Bei einer System- und Timerfrequenz von 32MHz solltest du für die 
Periodendauer natürlich den Wert 32000 erhalten!
Gast #4190493
Lesenswert?

Ja das ist richtig, er müsste bei 32 MHz und 1kHz
auf ca. 32000 zählen, ich hab oben den Zählwert verwendet
der bei etwas über einem kHz rauskommt, da ich nicht genau 1 kHz
gemessen hatte, ----> Code kann ich heut abend reinstellen, ich mach 
aber bis dato
nur das Hardwaresetting für den Timer und das Eventsystem, 
Softwareseitig pfuscht da noch nichts rein.

Die Werte der Register CCA und CCB überprüfe ich bis jetzt noch mit der 
IO View im Atmel Studio,
das bedeutet, ich lass den Programmfluss normal laufen und drücke dann 
auf Break um die Registerwerte zu sichten.

---> kann es sein das der Timer ein Capture macht wenn ich auf Break 
drücke?
Das würde meine Messabweichungen von bis zu 50% erklären.
Gast #4190567
Lesenswert?

> kann es sein das der Timer ein Capture macht wenn ich auf Break
> drücke?
Ist möglich, dass das Eventsystem im Debug-Break aktiv bleibt, die Timer 
werden definitiv angehalten.
Du könntest auch einfach die CCx-Werte in einer (evtl. ISR-)Routine in 
eine Variable kopieren und die anschauen.
ODER
es stimmt mit deinem Frequenzsignal etwas nicht (Masse/Pegel??)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren