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
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
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.