Not logged in. · Lost password · Register
Forum: Grundstudium 2. Semester Informatik (GDI II) SPiC RSS
Interrupt während wait()
Toni #1 -- for a month · 5 posts
Show profile · Link to this post
Subject: Interrupt während wait()
Ich hab ne Schleife

  1. while(1) {
  2. cli();
  3. uint16_t inter = interval;            /*interval ist volatile*/
  4. sei();
  5. wait(inter);
  6. }
nen Interrupthandler:

  1. ISR(INT0_vect) {
  2. interval -= 1000;
  3. }
und ne wait-Funktion
  1. void wait(unsigend int interval) {
  2. volatile usigned int i;
  3. for(i=0; i<interval; i++) {}
  4. }

Frage: Wenn der Interrupt kommt, wenn Ich gerade in der wait-Funktion bin:
Verändert mir der Interrupt noch interval als Bedingung in der for-Schleife oder erst beim nächsten Aufruf von wait?
Panos #2 -- for 2 months · 18 posts
Show profile · Link to this post
Du übergibst doch inter als Parameter. Also inter ist dein aktueller Parameter in der wait. Wenn während du in der wait Funktion bist, ein Interrupt kommt, verändert er deine globale Variable interval (die Variable interval in der wait ist lokal, nicht von Interrupts betroffen), also macht sich die Änderung in der wait nicht bemerkbar. Wenn jetzt while(1) schleife wiederholt wird, und du wieder in die wait springst, wird die Änderung bemerkbar sein.
This post was edited on 2010-07-29, 17:18 by Panos.
Toni #3 -- for a month · 5 posts
Show profile · Link to this post
Alles klar, war nur eben bissl verwirrt, wenn der das nämlich noch ändern könnte wäre das ziemlich übel ;)
Wollte das nur nochmal bestätigt haben, thx
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Unclassified NewsBoard 1.6.4 © 2003-5 by Yves Goergen
Page created in 383.3 ms (176.6 ms) · 55 database queries in 59.2 ms
Current time: 2010-09-10, 04:21:03 (UTC +02:00)