ATmega48 - Paranormal activity

OP #3279172
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
Angehängte Dateien:
#3279201
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.