Hallo HaWe, Danke für deine Rückmeldung.
Mit Multitasking ist das sicher eine gute Lösung.
Habe bisher nur mit "einem" Task und tonnenweise Interrupts gearbeitet.
Da möcht ich mein System natürlich nicht ausbremsen.

Ich hab grad ein Paradebeispiel für "unsicheren" Code.

Ohne meine Compileroptimierung läuft das Display einwandfrei.
Schalte ich die "C" Optimierung ein, egal welche Stufe, funktioniert das Display nicht mehr.

Das Problem ist hier eindeutig das "Timing" was ich grad versuche "sinnvoll" zu ordnen.

Code:
void LCD_DataOut8(U8 data)
{
  LCD_RS_LOW;
  LCD_RW_LOW;
  LCD_EN_HIGH;
  Delay_ms(2);  /* ist hier nicht erforderlich */

  /* write the data byte, THREAD SAFE ??? RMW problem auf den PORTs */
  GPIO_CLR1 = LCD_DATA_BITS;
  GPIO_SET1 =  ((U32)(data) << 20);
  Delay_ms(2);   /* OHNE Delay gibt es ein TIMING PROBLEM sofern die C-OPTIMIERUNG eingeschaltet ist */

  LCD_EN_LOW;
  Delay_ms(2);   /* normalerweise nicht erforderlich */
}