R
Ralph Aichinger
Guest
Ich bin dabei derzeit eine Atomuhr zu basteln (Physics Package
ist noch unterwegs), und bin gerade beim Zählen und auswerten
der Pulse angelangt.
Ich werde vermtulich erst mal einen 8-Bit-Atmel verwenden
(fĂźr den Prototypen einen Arduino Mega 2560, fĂźrs fertige
Gerät vielleicht eine Teensy 2.0 mit 32u4). Ja, wie mich jemand
zu recht belehrt hat ist das "Geriatronik", es gibt ARM-Controller
die das alles mit links erschlagen, aber trotzdem wĂźrde mich eine
"saubere" Vorgehensweise interessieren. Das ganze mit roher
Rechenpower lĂśsen kann ich ja noch immer. Ein Teensy 4.0 mit
600MHz-Arm Cortex hat sicher keinerlei Probleme, wie unelegant
man auch immer programmiert.
Die AVR-Controller kÜnnen einen Zähler an einen externen
Pin hängen, mit oder ohne Prescaler und recht schnell
zählen, ohne daà die eigentliche CPU belästigt wird.
Das hab ich mittlerweile geschafft (nach einigem Datenblatt-
Studium).
Meine Idee wäre die Pulse unterhalb der Sekunde so zu
zählen (egal ob die vollen 10MHz oder schon was runtergeteiltes,
z.B. 1000Hz fĂźr eine Millisekundenanzeige), und jede
Sekunde, d.h. beim Ăberlauf des Zählers der Sekundenbruchteile,
einen ausgelĂśsten Interrupt mit einer ISR zu behandeln.
Jetzt habe ich folgendes Problem: Das ganze geht "meistens"
sehr schnell (Sekunden erhÜhen, fertig, Counter läuft alleine
auf 0 zurĂźck). Bei vollen Minuten muĂ ich die Minute erhĂśhen,
das tut auch nicht weh.
Nur zu manchen Zeitpunkten (Jahresanfang Mitternacht GMT,
Anfang Sommerzeit, Schaltjahre, Schaltsekunden) muĂ ich
eventuell langwierigere Dinge machen. Gibt es auĂer
"ganz ganz sicher sein, daĂ die Berechnung keine Sekunde dauert"
noch MĂśglichkeiten wie man sowas abhandelt? Z.B. wie man den
zeitkritischen Teil (Sekunden, Minuten) vom weniger zeitkritischen
Teil (Stunden, Tage, Wochentag, Monat ...) getrennt abzuarbeiten?
Oder ist die Idee mit dem Interrupt Ăźberhaupt schlecht?
/ralph
--
-----------------------------------------------------------------------------
https://aisg.at
ausserirdische sind gesund
ist noch unterwegs), und bin gerade beim Zählen und auswerten
der Pulse angelangt.
Ich werde vermtulich erst mal einen 8-Bit-Atmel verwenden
(fĂźr den Prototypen einen Arduino Mega 2560, fĂźrs fertige
Gerät vielleicht eine Teensy 2.0 mit 32u4). Ja, wie mich jemand
zu recht belehrt hat ist das "Geriatronik", es gibt ARM-Controller
die das alles mit links erschlagen, aber trotzdem wĂźrde mich eine
"saubere" Vorgehensweise interessieren. Das ganze mit roher
Rechenpower lĂśsen kann ich ja noch immer. Ein Teensy 4.0 mit
600MHz-Arm Cortex hat sicher keinerlei Probleme, wie unelegant
man auch immer programmiert.
Die AVR-Controller kÜnnen einen Zähler an einen externen
Pin hängen, mit oder ohne Prescaler und recht schnell
zählen, ohne daà die eigentliche CPU belästigt wird.
Das hab ich mittlerweile geschafft (nach einigem Datenblatt-
Studium).
Meine Idee wäre die Pulse unterhalb der Sekunde so zu
zählen (egal ob die vollen 10MHz oder schon was runtergeteiltes,
z.B. 1000Hz fĂźr eine Millisekundenanzeige), und jede
Sekunde, d.h. beim Ăberlauf des Zählers der Sekundenbruchteile,
einen ausgelĂśsten Interrupt mit einer ISR zu behandeln.
Jetzt habe ich folgendes Problem: Das ganze geht "meistens"
sehr schnell (Sekunden erhÜhen, fertig, Counter läuft alleine
auf 0 zurĂźck). Bei vollen Minuten muĂ ich die Minute erhĂśhen,
das tut auch nicht weh.
Nur zu manchen Zeitpunkten (Jahresanfang Mitternacht GMT,
Anfang Sommerzeit, Schaltjahre, Schaltsekunden) muĂ ich
eventuell langwierigere Dinge machen. Gibt es auĂer
"ganz ganz sicher sein, daĂ die Berechnung keine Sekunde dauert"
noch MĂśglichkeiten wie man sowas abhandelt? Z.B. wie man den
zeitkritischen Teil (Sekunden, Minuten) vom weniger zeitkritischen
Teil (Stunden, Tage, Wochentag, Monat ...) getrennt abzuarbeiten?
Oder ist die Idee mit dem Interrupt Ăźberhaupt schlecht?
/ralph
--
-----------------------------------------------------------------------------
https://aisg.at
ausserirdische sind gesund