(Atmel-) Mikrocontroller: Interrupts und "lange" ISRs

Ich bin dabei derzeit eine Atomuhr zu basteln (Physics Package
der Pulse angelangt.
Ich werde vermtulich erst mal einen 8-Bit-Atmel verwenden
zu recht belehrt hat ist das "Geriatronik", es gibt ARM-Controller
"saubere" Vorgehensweise interessieren. Das ganze mit roher
600MHz-Arm Cortex hat sicher keinerlei Probleme, wie unelegant
man auch immer programmiert.
Das hab ich mittlerweile geschafft (nach einigem Datenblatt-
Studium).
Jetzt habe ich folgendes Problem: Das ganze geht "meistens"
das tut auch nicht weh.
Nur zu manchen Zeitpunkten (Jahresanfang Mitternacht GMT,
zeitkritischen Teil (Sekunden, Minuten) vom weniger zeitkritischen
Teil (Stunden, Tage, Wochentag, Monat ...) getrennt abzuarbeiten?
/ralph
--
----------------------------------------------------------------------------- 
                                                              https://aisg.at 
 Click to see the full signature
Reply to
Ralph Aichinger
Loading thread data ...
Sekunden weiter laufen.
Wobei das auch nicht so arg lange dauern sollte.
Reply to
Thorsten Böttcher
Jau ;-)
und einen Portpin hi schaltet beim Funktionseintritt und beim verlassen den pin wieder runterzieht, toggeln etc. Man kann dann auf dem scope
Bei dem Abfragen der Variablen (Speicherbereich des RAMs) aufpassen,
in dem Moment neue Werte in den Speicher schreiben kann, wenn die Berechnungsroutine den Wert ausliest. Abhilfe dazu z.B. den IR sperren und nach dem Lesen wieder freigeben.
--
mit freundlichen Gruessen/ best regards Joerg Niggemeyer Dipl.Physiker 
WEB: http://www.nucon.de    https://www.led-temperature-protection.com 
 Click to see the full signature
Reply to
Joerg Niggemeyer
Ah, das ist clever. Gerade wenn das Timing gefragt ist, dann ist
wirkliche Option.
/ralph
--
----------------------------------------------------------------------------- 
                                                              https://aisg.at 
 Click to see the full signature
Reply to
Ralph Aichinger
ist.
;-O
--
mit freundlichen Gruessen/ best regards Joerg Niggemeyer Dipl.Physiker 
WEB: http://www.nucon.de    https://www.led-temperature-protection.com 
 Click to see the full signature
Reply to
Joerg Niggemeyer
...
Vieles kann man vorab ermitteln und in einer Tabelle halten, z.B. die beweglichen
hat der Controller fast den ganzen Tag Zeit zum Ausrechnen.
bei uns von der PTB festgelegt.
Interessanter wird die initiale Synchronisation mit der exakten Atomzeit. Da wirst du wohl ein GPS Zeitnormal, das auf 1ms genau ist, brauchen. Eine Handeinstellung wie bei einer normalen Digitaluhr geht ja nicht.
--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
Reply to
Peter Heitzer
Hier sicherlich unkritisch. Aber
weitere asynchrone Takte. Liefern manchmal
zu debuggen sind wenn sie selten auftreten.
Alle meine simplen Anwendungen a la
Endlosschleife die bei Tastendruck am Terminal
: RUN \ ( --- ) BEGIN < Anwendung > TERMINAL? UNTIL ;
FORTH ist eben etwas anders.
Programmiersprachen empfehlenswert.
MfG JRD
Reply to
Rafael Deliano
Mal sehen.
Ja ;)
so 15-150 ns genau relativ zu UTC, sofern man ein brauchbares Signal
formatting link

wird, dann wird:
1. das an der seriellen Schnittstelle anliegende NMEA-Zeitsignal auf
externe Vorteiler resetted) 3 die aus dem NMEA-Signal geparste Uhrzeit und das Datum in den internen
Ja ;)
so 15-150 ns genau relativ zu UTC, sofern man ein brauchbares Signal
formatting link

wird, dann wird:
1. das an der seriellen Schnittstelle anliegende NMEA-Zeitsignal auf
externe Vorteiler resetted) 3 die aus dem NMEA-Signal geparste Uhrzeit und das Datum in den internen
/ralph
--
----------------------------------------------------------------------------- 
                                                              https://aisg.at 
 Click to see the full signature
Reply to
Ralph Aichinger
Die moderne Alternative zum AVR ist der Cortex-M und die laufen nicht mit 600 MHz, sondern eher so mit 48...200 MHz, je nach Modell. Selbst
Gefummel gibt's obendrein. Und viel billiger als diese AVRs ist er auch noch.
ekelhaften AVR Harvard Architektur mehr hat. Lookuptable im ROM? Einfach per Pointer drauf zugreifen. Endlich hat PROGMEM und read_pgm_byte() ein
wieder.
Trotzdem ist es nicht so, dass du mit grober Rechenleistung so schlecht programmieren kannst, wie du willst. Gerade wenn dir Latenz wichtig ist, musst du schon nachdenken, wie du's hinschreibst.
Stichwort hier ist ISR/DSR. Im ISR machst du nur die unbedingt notwendigen Sachen, in der DSR (Deferred Service Routine) dann das,
Aber ehrlichgesagt klingen deine "langwierigen" Aufgaben nicht so, als
2560, du clockst den mit 16 MHz. Du wolltest 1 kHz ISR-Frequenz. In den zwei (!) Millisekunden die du da also hast, bevor du IRQs verlierst,
sind single cycle. Das ist UNGLAUBLICH viel Leistung, die du da hast.
ist.
Johannes
Reply to
Johannes Bauer
beim Arduino anpassen oder auf sie verzichten (die laufen entweder mit 16MHz oder 8MHz), z.B.
Baudrate.
geht.
Ich werde es zumindest probieren, sobald ich die 10MHz da liegen habe ;)
/ralph
--
----------------------------------------------------------------------------- 
                                                              https://aisg.at 
 Click to see the full signature
Reply to
Ralph Aichinger
Das ist mindestens genauso aufwendig wie 2mal lesen und hat noch mehr
auf und zu. Auch Semaphoren hickhack ist aufwendiger...
Es sei denn, Du hast sowas wie JBC (8051), dann ist das sauberer und
:)))
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
snipped-for-privacy@gmx.de (Johannes Bauer) am 13.08.19 um 18:52:
Mithin jedesmal, wenn die ISR zweimal nacheinander zu lange dauert.
oder meinetwegen 10.000, wenn man im Schnitt mit 1.6 Takten pro Befehl rechnet?
updaten, Warteschleifen legt man da ja nicht rein.
Rainer
--


(Hergen Lehmann in ger.ct)
Reply to
Rainer Knaepper
Geht oft auch mit einer geschickt eingesetzten LED. Geht sie nie an oder nie aus (je nach Implementierung) ist was faul. Flimmert oder
Rainer
--
Wenn Du eine Platte brauchst, dann kaufe sie jetzt. Oder morgen. Oder wann 
immer Du sie wirklich brauchst, denn irgendwann muss man sterben und den 
 Click to see the full signature
Reply to
Rainer Knaepper
was den Selbstbau etwas erschwert, so man nicht vom freundlichen Chinesen
Das hat aber weniger mit Harvard Architektur zu tun, sondern mit der
--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
Reply to
Peter Heitzer
Man legt den uC mit freigeschalteten Interrupts schlafen: sei(); sleep_mode();
Tiefschlaf versetzen.
Josef
Reply to
Josef Moellers
Na klar, die LED, die z.B. durch langsames Blinken diverese Codes
werden, wenn man ein scope dransetzt.
--
mit freundlichen Gruessen/ best regards Joerg Niggemeyer Dipl.Physiker 
WEB: http://www.nucon.de    https://www.led-temperature-protection.com 
 Click to see the full signature
Reply to
Joerg Niggemeyer
die Arduino-Plattform hat so einen reichen Schatz an Libraries
vorher jemand gemacht hat), relativ billig (15-25 Euro), gut supportet
neuerdings auch rohe Power bis 600MHz.
formatting link

Chip der im Teensy 4.0 steckt (i.MXRT1060, 600MHz Cortex-M7) ist schon eine Ansage.
Aber auch die Cortex M4 aus den kleineren Modellen sind deutlich komplexer als die 8-Bit-Atmels. Wenn man erst einsteigt in die Materie, ist das nicht so ohne.
Leider sind viele der im embedded-Bereich verwendeten Kalenderfunktionen und Zeitfunktionen stark simplifiziert: Schaltsekunden werden ignoriert, Sommerzeit-Wechsel nach irgendeinem starren Schema, etc.
Vor allem die fehlende Behandlung der Schaltsekunden tut mir weh. Wenn ich schon eine Atomuhr bastle, dann soll sie das hinkriegen (z.B.
wird.
Allerdings werde ich viele viele andere Convenience-Libraries nutzen, die es fertig gibt: Ansteuern von billigen Chinesen-Displays mit dem TM1637-Treiberchip, parsen der NMEA-Sentences vom GPS an der seriellen Schnittstelle, etc.
Naja, in der Arduino-Umgebung ist das gut gekapselt, auch wenn dem ganzen der gcc zugrundeliegt. Bei bisherigen Projekten hab ich
/ralph
--
----------------------------------------------------------------------------- 
                                                              https://aisg.at 
 Click to see the full signature
Reply to
Ralph Aichinger
Am 13.08.2019 um 18:52 schrieb Johannes Bauer:
Das geht seit ca. 5 Jahren auch einfacher:
formatting link

HTH Markus
Reply to
Markus Faust
Am 13.08.2019 um 19:54 schrieb Wolfgang Allinger:
Genau so ist das richtig gemacht.
Hmm, auf welchen Controllern soll das unsauberer oder langsamer sein?
DoDi
Reply to
Hans-Peter Diettrich
Am 14.08.2019 um 09:53 schrieb Joerg Niggemeyer:
Wenn schon Debuggen dann gleich richtig mit einem Logik-Analysator. Ist weit billiger als ein Scope und erlaubt bessere Diagnosen.
DoDi
Reply to
Hans-Peter Diettrich

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.