Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Problem beim Aufruf eines externen Programmes Kategorie: Progr. Assembler, TaskingTools, OS (von Matthias Siemß - 10.05.2004 10:37)
Als Antwort auf Re: Problem beim Aufruf eines externen Programmes von André H. - 9.05.2004 15:31
Ich nutze:
C164CI-ControllerBoard, OSOPT_V2, OSOPT V3.0
Hallo André,

danke erstmal fĂŒr deine Antwort.
Ich habe mein Programm zum Testen erstmal sehr klein gehalten und das while ( ) durch das loop ( )
ersetzt wie von Dir vorgeschlagen.
Habe das Problem aber trotzdem. Darum hier mein Quelltext:

thread main
{
    hwcom.init();
    hwcom.setspeed(8);
    ports.set(5,1);
    hwcom.put(1);
    hwcom.put(13);
   loop {
       sleep (500);
       system.call(3,0x0000);
       sleep (500);
       hwcom.put(13);
     }
}

FĂŒr meine folgende System-Routine benutze ich eine gnu-c Compiler:

void SerPut( char ch )
{
   S0TIC &= 0xffbf;
   // Wait until last transmission ready.
   while ( ( S0TBIC & 0x0080) == 0 );
   S0TBIC &= 0xff7f;

   S0TBUF = ch;

   // Wait until transmission ready.
   while ( ( S0TIC & 0x0080) == 0 );
   S0TIC &= 0xff7f;
   S0TIC |= 0x0040;
} // SerPut

void main()
{
  int i;
  for (i=0;i<1000;i++){
                SET_SFRBIT( p1l.5 );
                CLR_SFRBIT( p1l.5 )
                SET_SFRBIT( p1l.5 )
                }
  SerPut(255);
} // main


Ob das ganze nun lÀuft oder sich aufhÀngt, liegt an der Zeit die ich in der System-Routine verbringe,
bzw. bei diesem Beispiel an der Anzahl der DurchlÀufe der for-Schleife.
So mit den 1000 DurchlÀufen hÀngt er sich wÀrend der for-Schleife auf, und erreicht die Ausgabe
auf der seriellen Schnittstelle nicht.
Wenn ich diese nur 100 mal durchlaufen lasse, so funktioniert es.

Weiterhin habe ich mal mit dem Befehl "CLR_SFRBIT( IEN );" vor der for-Schleife die Interrups
deaktivert und siehe da, er durchlÀuft die for-Schleife komplett und sendet die 255 auf der seriellen
Schnittstelle. Nur mit dem setzen der Interrupte am Programmende hÀngt sich die Routine auf.
Daher war meine Vermutung, das ein Interrupt (Timer, Watchdog oder Àhnliches) nicht mehr
richtig behandelt wird.

MfG Matthias


    Antwort schreiben


Antworten:

Re: Problem beim Aufruf eines externen Programmes (von André H. - 12.06.2004 18:42)