Forum: Mikrocontroller und Digitale Elektronik Fragen zum Stack FreeModbus


von Owen S. (senmeis)


Lesenswert?

Servus,

ich benutze den FreeModbus Stack für den MSP430: 
http://freemodbus.berlios.de/.

Die Initialisierung der seriellen Schnittstelle sieht folgendermaßen 
aus:
1
if( bInitialized )
2
{  
3
    ENTER_CRITICAL_SECTION(  );
4
    
5
    EXIT_CRITICAL_SECTION(  ); 
6
}
wobei
1
void EnterCriticalSection( void )
2
{
3
    USHORT usOldSR;
4
    if( ucCriticalNesting == 0 )
5
    {
6
#if defined (__GNUC__)
7
        usOldSR = READ_SR;
8
    _DINT( );
9
    #else
10
        usOldSR = _DINT( );
11
#endif
12
        ucGIEWasEnabled = usOldSR & GIE ? TRUE : FALSE;
13
  }
14
    ucCriticalNesting++;
15
}
Frage 1: Dieser Prozess sieht kompliziert aus. Kann man diese 
if-Anweisung und die Methode ENTER_CRITICAL_SECTION() wegmachen? Sowieso 
geschieht die Initialisierung nur einmal am Anhang!

Frage 2: Die Methode ENTER_CRITICAL_SECTION() ist auch kompliziert. Kann 
man diese vereinfachen:

In EnterCriticalSection(): globale Interrupts deaktivieren
In ExitCriticalSection(): globale Interrupts aktivieren?

Viele Grüße
Senmeis

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.