Forum: Mikrocontroller und Digitale Elektronik ATmega48 - Paranormal activity


von Walter T. (nicolas)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe gerade ein kurioses Problem: Bei der angehängten Schaltung 
hängt die Periodendauer eines Interrupts von der Stellung eines 
Schalters ab.

Controller ist ein ATmega48 auf 500kHz (4Mhz/CDIV8). Die Versorgung 
erfolgt momentan noch über die ISP-Buchse, d.h. IC2 ist noch nicht 
bestückt. Der Multiplex der LEDs 1-3 geschieht in einer ISR auf dem 
Timer2. Der Aufruf der ISR läßt sich damit sehr einfach mit dem 
Oszilloskop z.B. an T5, T6 oder T7 messen. Eine Periodendauer nenne ich 
jetzt den drei Aufrufe der ISR (= 1 Multiplex-Periode).


U$1 ist ein Panasonic-Drehgeber mit Rastungen auf zwei Takten. Das 
Interessante ist, daß ich abwechselnd eine Periodendauer  von 980µs und 
944µs bekomme, je nach Encoderrastung.

Der Takt des Quarzes ändert sich, sofern ich das messen kann, nicht mit 
der Schalterstellung.  Die Versorgungsspannung kann ich nur mit einem 
Baumarktmultimeter "messen", aber auch da ist kein Einbruch merkbar.

Im Anhang ist der momentane Stand des Quelltextes. Irgendwie ist mir der 
Einfluß der Encoderstellung auf die Periodendauer einer ISR völlig 
rätselhaft. Geht es hier jemandem anders?

Viele Grüße
Nicolas

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

mit
TEILER=1
...
TCCR2A = (1<<WGM21) | (0<<WGM20);
TCCR2B = (0<<WGM22) | (1<<CS21) | (0 << CS20)
OCR2A = TEILER
TCNT2 = 0
TIMSK2 = 1<<OCIE2A

läuft dein Timer mit 500kHz / 8, da OCR2A=1 wird noch mal durch 2 
geteilt, damit wird deine ISR 32µs aufgerufen. Die Abarbeitung deines 
Programmcodes in der ISR dauert dafür aber viel zu lang - Zeit hast du 
ja selbst gemessen. Dadurch wird die Zeit die du misst nicht durch den 
Timer erzeugt, sonder nur durch die Laufzeit des Codes und die schwankt 
je nach dem wie verscheidene Bedingungen erfüllt sind.

Sascha

von Walter T. (nicolas)


Lesenswert?

Danke! Du hast Recht! Die Laufzeit der ISR liegt bei ca. 180µs.

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.