Go Down

Topic: DUE Timer/Interrupt (Read 103 times) previous topic - next topic

Sijjim

Hallöchen,

Mein aktuelles Projekt ist inzwischen ziemlich groß geworden und zudem sehr komplex. Das Problem ist, es sind mehrere Zeitsensitive Abläufe zusammen drin aber manches ist wichtiger als anderes.

Frage 1:
Können Interrupts sich gegenseitig unterbrechen? Wenn ja, nach welcher Priorität läuft das ab? Ich habe 2 Timer parallel laufen aber einer muß unbedingt immer an der richtigen Stelle kommen, wenn der andere dafür mal ein paar Takte pausieren muß ist das nicht ganz so schlimm. Geht das?

Frage 2:
Wenn ich im TCx_Handler eine externe Funktion ( void test(){blablabla} ) starte, läuft der Timer dann weiter während die Funktion noch ausgeführt wird?

Kommen bestimmt noch mehr Fragen zu dem Thema, das sind aber erstmal die wichtigsten.

Danke und Grüße

combie

Ich würde ja an deiner Stelle erst mal das Datenblatt des Prozessors untersuchen. Das wird alle diese Fragen (und noch viel mehr) beantworten können.

Udo Klein

Check out my experiments http://blog.blinkenlight.net

Sijjim

combie:
Ich bin das Datenblatt (Blatt mit 1466 Seite....) paar mal an den Stellen durch, wo ich das vermutet hatte. Nun ist mein Englisch nicht so gut um sicher jede Stelle richtig zu verstehen. Hab da aber weder ein Ja noch ein Nein gefunden, daher hab ich dann hier gefragt.

Udo: Dankeschön.

Hab jetzt was mit void NVIC_SetPriority (IRQn_t IRQn, uint32_t priority) gefunden. Allerdings kann ich weder im Datenblatt noch bei Google mehr zu dem "uint32_t priority" finden. Von wo bis wo geht das und in welche Richtung? Gibt es vordefinierte Schritte?

combie

Quote
uint32_t
Das ist ein Datentype


Quote
priority
Das ist an der Stelle der Name eines Parameters.

Bei beidem ist die suche per Google recht sinnfrei.
Der Name ist beliebig. Der Type millionenfach zu finden. 

Du solltest nach NVIC_SetPriority suchen und dir den Quellcode ansehen.

Sijjim

Ach Combie....
Auch wenn ich das echt ungerne mache, deine Antworten sind nicht hilfreich und belasten nur unnötig. Dann mach doch mal das Datenblatt auf, hier haste nen Link dazu un dsuche nach "NVIC_SetPriority". Es kommt an genau 3 Stellen vor. Im ersten steht das man sich für mehr Informationen die Tabelle darunte ransehen soll und die anderen beiden male kommt es in genau dieser Tabelle vor, wo eben nix weiter drin steht ausser
Quote
void NVIC_SetPriority (IRQn_t IRQn, uint32_t priority) Set priority for IRQn
Meine Frage bezog sich darauf, das ich die Stelle gefunden habe aber explizit dieser Wert "uint32_t priority", wie muß der genau gehandhabt werden?
Und nun? Soll ich jetzt alle möglichen Kombinationen von 0 bis 4.294.967.295 durchprobieren bis ich was brauchbares gefunden habe? Ich komme erst wieder am Wochenende ans Werk und wollte die nötigen Infos dazu bis dahin parat haben.

Aber deine Art zu Antworten kommt mir sehr bekannt vor. Du bist nicht zufällig ein Insider von MikrocontrollerNet?

Also, statt hier rumzuheulen das nach einer vollkommen zerpflückte Anfrage suchen keinen Sinn ergibt, sei doch so gütig und sag was du weißt oder lies mit und lerne.

-----------------------------------------

Also nochmal, was muß ich als Priorität eingeben, damit es wichtiger als andere ist? Gibt es, und wenn ja welche, häufigen Prioritäten sind bereits vorgegeben?

Danke und Grüße

combie

#6
Jan 30, 2015, 02:34 pm Last Edit: Jan 30, 2015, 02:41 pm by combie
Wenn dir meine Art zu helfen nicht passt, dann ist das so.

Also mal im Ernst .... 8)
Google anzuwerfen ist schwer.
Tipp: http://www.google.de/search?q=+NVIC_SetPriority
An zweiter Stelle (bei mir) findet sich: http://www.state-machine.com/arm/AN_ARM-Cortex-M_Interrupt-Priorities.pdf

Und jetzt..... glücklicher .....


Nachtrag:
Und deinem Tipp mit dem Datenblatt bin ich auch gefolgt.
Da steht ganz klar, dass es 4 Bit für die Prioritäten gibt.
Quote
soll ich jetzt alle möglichen Kombinationen von 0 bis 4.294.967.295 durchprobieren
Lohnt sich nur bei den wenigen, welche in 4 Bit passen....

Sijjim

Ich hab ne andere Ergebnisliste...warum auch immer, die von dir verlinkte Seite hab ich nicht drauf, nur lauter Codeschnipsel wo das eben mit drin steht.

Danke für den Link

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy