Forum: Mikrocontroller und Digitale Elektronik (Atmel) CTC counter zählen unterschiedlich schnell


von Hans W. (hans_wurst)


Lesenswert?

Hallo,

ich verwende den ATmega3290p und dessen Timer0 und Timer1. Beide haben 
die gleichen prescaler-Einstellungen und bekommen jeweils auch den 
gleichen Wert für das Output Compare Register.

Bei langsamer "Geschwindigkeit" kommen die Pulse/Interrupts sehr genau 
gleichzeitig. Übergebe ich jedoch "schnellere" Werte an die Output 
Compare Register, driften die Geschwindigkeiten, in der die Impulse 
ausgegeben werden sehr stark auseinander.
Hat jemand schon ein ähnliches Problem gehabt? Außer den Einstellungen 
für den Prescaler und das Output Compare Register ist doch nichts weiter 
für die Pulsfolge einstellbar. Oder sehe ich das falsch?

von Johannes M. (johnny-m)


Lesenswert?

Hans Wurst wrote:
> Bei langsamer "Geschwindigkeit" kommen die Pulse/Interrupts sehr genau
> gleichzeitig.
Was ist denn "langsam"? Bitte mal etwas präziser!

> Übergebe ich jedoch "schnellere" Werte an die Output
> Compare Register, driften die Geschwindigkeiten, in der die Impulse
> ausgegeben werden sehr stark auseinander.
> Hat jemand schon ein ähnliches Problem gehabt? Außer den Einstellungen
> für den Prescaler und das Output Compare Register ist doch nichts weiter
> für die Pulsfolge einstellbar. Oder sehe ich das falsch?
Code? Glaskugel ist in Reparatur. Aber wenn Du Interrupts aktiv hast, 
ist es ja wohl klar, dass ab einer gewissen "Geschwindigkeit" was 
verloren geht, besonders dann, wenn beide Interrupts exakt gleichzeitig 
auftreten sollen...

von Johannes M. (johnny-m)


Lesenswert?

Wie wäre es denn, wenn Du endlich mal erzählst, um welche 
Zeiten/Interrupt-Raten es hier geht? Noch mal frage ich nicht nach.

Mit Deinem Codeschnipsel kann niemand wirklich was anfangen, weil die 
ganzen Variablen und deren Funktion sowie der gesamte Kontext unbekannt 
sind.

Warum setzt Du Deine Steuerregister eigentlich im Oktalformat? Erstens 
ist das generell für 8-Bit-Register ziemlich ungeschickt (Hexadezimal 
wäre passender) und zweitens sollte man bei Steuerregistern generell die 
vordefinierten Bitnamen benutzen, damit man auch ohne Datenblatt sieht, 
was da gemacht wird!

Und zum Thema Interrupts bieten die Tutorials auf dieser Seite 
eigentlich genügend Informationen. Auch ein Blick ins Datenblatt schadet 
nicht. Interrupts gehen nur dann "verloren", wenn während einer 
Sperrphase (also z.B. während eines anderen Interrupt Handlers) 
mehrere gleiche Interrupt-Requests auftreten.

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
Noch kein Account? Hier anmelden.