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!!!
Zeig mal Deinen Code, der Fehler wird dort zu finden sein. Ich nutze den gleichen Controller in einer Modellbahnanwendung, da werden die Pulse einwandfrei und mit ±1LSB gemessen.
>> 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!
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.
Wanninger schrieb: > kann es sein das der Timer ein Capture macht wenn ich auf Break > drücke? Eher nicht, aber er hält vermutlich den Timer an! Kannst du nicht die Werte per RS232 raushauen? Debugger sind Fluch und Segen.
> 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??)
Ich werde die Registerinhalte per ISR abrufen und kontrollieren, ich hoffe dies ist auch die Ursache meiner Messfehler. Danke für eure Unterstützung!!!
Warum hat noch niemand nach der Beschaltung bzw. Einspeisung des Signals gefragt? Ist die schrottig dann hilft die ganz Software nix.
Das Signal hab ich natürlich als erstes kontrolliert... Daran liegt es leider nicht. Wird jetzt dann gleich wie oben beschrieben nachschauen.
Wanninger schrieb: > Das Signal hab ich natürlich als erstes kontrolliert... > Daran liegt es leider nicht. Ich sprach auch von der Einspeisung, nicht vom Signal selbst.
Hallo, momentan hab ich noch probleme mit dem Usart, muss mich erst in alles einarbeiten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.