Interups und Funktionsaufrufe

Gast #1293050
Lesenswert?

Hallo,

ich habe eine Frage zu Interupts. Ich sende an einen MSP per UART einen 
Befehl. Die UART-RX-ISR springt an. Dort rufe ich eine Funktion zum 
Abrufen einiger Registerwerte eines anderen ICs auf. Dazu übergebe ich 
dieser Funktion ein Byte-Array. Die Funktion schreibt die Registerwerte 
in das Array. Die einzelnen Array-Werte werden dann von einer weiteren 
Funktion einzeln per UART an den Rechner zurückgeschickt. Bei der 
Übergabe des Array bzw. einer Array-Elemente an Funktionen wird der 
Stack gefüllt richtig? Ist dieser dann wieder so leer wie vor dem 
ISR-Aufruf, sobald alle Vorgänge abgeschlossen sind?

Grüße
Gast #1293243
Lesenswert?

Hm, was GAST da alles aufzählt, klingt nach tiefstem Fachwissen.
Irgendwie passt das Niveau der Frage nicht dazu.

Grundsätzlich sollte (bei Programmierung in C) der Stackzeiger
nach dem RETURN einer Funktion wieder auf dem alten Stand sein.

Das MAIN-Programm muss aber VIEL Zeit haben, wenn die UART-RX-ISR erst
nach dem seriellen Senden eines Arrays abgearbeitet ist.

Geschieht das Senden ohne Tx-Ready- oder Tx-Reg-free- -Interrupt?
Polling in der ISR?
TX-ISR in der RX-ISR?
An IRQ-Freigabe gedacht?

Schwer vorstellbar, dass das problemlos läuft.

Gruß Ralli

Vielleicht ist mein Vorstellungsvermögen auch nur gedämpft,
weil ich mit dem Kürzel MSP nicht so viel anfangen kann...
Gast #1293433
Lesenswert?

Also Polling findet in der ISR nicht statt. Auch keine weiteren ISRs, 
lediglich wird in einer aufgerufenen Funktion das angesprochene Array 
mit Daten beschrieben und dann per UART verschickt. Das Senden der Daten 
geschieht mit Tx-Ready-Interupt.
Persönliche Seite #1293476
Lesenswert?

Gast schrieb:
> Bei der
> Übergabe des Array bzw. einer Array-Elemente an Funktionen wird der
> Stack gefüllt richtig? Ist dieser dann wieder so leer wie vor dem
> ISR-Aufruf, sobald alle Vorgänge abgeschlossen sind?

Kann sein, vielleicht auch nicht.

Kommt drauf an in welcher Sprache du das hinschreibst:
   Assembler, C, C++, Ada, Java, Haskell, Fortran,
wie die Funktionen definiert sind und welches ABI (Application Binary 
Interface) ein evtl. verwendeter Compiler/Interpreter/Virtuelle Maschine 
implementiert.

Johann

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren