Fragen zum Stack FreeModbus

OP #2116710
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.