Forum: Mikrocontroller und Digitale Elektronik [MSP430] Laufzeit ISR


von Bernd K. (Gast)


Lesenswert?

Hallo,

ich wollte die Laufzeit einer ISR bestimmen, indem ich einfach einen 
Port ein und ausschalte. Es handelt sich um einen ISR fuer die 
Datenuebertragung via RS232. Wenn ich die Baudrate variere 9600- 
115200baud, sollte die Laufzeit sich ja gravierend aendern (von 1ms bis 
0.8ms)
Es ist jedoch so, dass die Pins immer im gleichen Zeitabstand von 
einigen µs ein und ausgeschaltet werden.

Warum ist das so? Wie kann ich die Laufzeit der RS232-Uebertragung 
beobachten?
1
void sio0_isr(void)
2
3
{    
4
   P2OUT |= 0x02;
5
  if(n_send < 4)
6
7
  {    
8
    U0TXBUF = Ziffern_send[n_send];
9
    n_send++;
10
  }
11
  else
12
  {
13
   n_send = 0;
14
   }
15
  P2OUT &= 0xfd;
16
}

von Peter D. (peda)


Lesenswert?

Bernd K. wrote:
> Es ist jedoch so, dass die Pins immer im gleichen Zeitabstand von
> einigen µs ein und ausgeschaltet werden.

Die High-Zeit ist konstant, das ist korrekt.
Die Baudrate ändert die Low-Zeit.


Peter

von Jörg S. (joerg-s)


Lesenswert?

>Warum ist das so?
Weil das kopieren von Daten in den Sendepuffer immer gleich lang dauert. 
Das Senden selber (was der MSP von sich aus erledigt) dauert 
unterschiedlich lang.

von Christian R. (supachris)


Lesenswert?

Eben, und da du nicht mal prüfst, ob der Sendepuffer wieder frei ist, 
bevor du das nächste Zeichen sendest, geht die Sache eh schief. Du musst 
vor jedem Senden schauen, ob der Puffer bereit ist.

von Peter D. (peda)


Lesenswert?

Christian R. wrote:
> Eben, und da du nicht mal prüfst, ob der Sendepuffer wieder frei ist,
> bevor du das nächste Zeichen sendest, geht die Sache eh schief. Du musst
> vor jedem Senden schauen, ob der Puffer bereit ist.

Wozu?

Der Interrupt kommt doch erst, wenn der Sendepuffer frei ist.
Das ist ja der Sinn des Interrupts.


Peter

von Christian R. (supachris)


Lesenswert?

Achso, hatte übersehen, dass er ja in der TX-ISR ist. Sorry. Steht ja 
sogar in der Überschrift, ohje. Naja, Asche auf mein Haupt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.