Seite 1 von 3

Projekt

Verfasst: Mo 3. Dez 2007, 12:06
von DeRiEsS
Hallo zusammen

Ich bin Teil einer Projektgruppe die zur Zeit ihr Abschlussprojekt für ihren Techniker macht.

Als Abschlussprojekt haben wir uns eigentlich was ganz simples rausgesucht :)
wir sollen den Sendernamen des Senders der Aktuell läuft an der Com Schnittstelle eines Topfield Recivers in einem bestimmten Format ausgeben.
Die Ausgabe soll immer nach dem Umschalten und direkt beim Einschalten erfolgen.
Wir haben von unserer Schule einen Topfield 5000 PVR Masterpiece zur Verfügung gestellt bekommen.

Kann ja nicht so schwer sein hab ich mir gedacht :D :
Also haben wir uns der Sache angenommen ... dies ist jetzt schon eine ganz weile her und der Abgabetermin rückt immer näher ...

Unser Problem ist ganz einfach das der Topfield abstürtzt.
Sobald wir das Programm ausführen reagiert der Topfield nur noch auf den Ausschalter ...
Und an der Com Schnittstelle wird ein Fehlercode ausgegeben (Unexpected .... ).
Wenn es gewünscht wird kann ich gerne den kompletten Fehlercode posten den habe ich zur Zeit leider nicht zur Hand (da muss ich ihn gerade mal abstürzen lassen :) ).

Hier habe ich einen Auszug aus dem Programm.

Code: Alles auswählen


#include "tap.h"

#define ID_DISPLAY 0xB8023456   

TAP_ID( ID_DISPLAY );
TAP_PROGRAM_NAME("Kom-Test");
TAP_AUTHOR_NAME("Project One");
TAP_DESCRIPTION("Daten via Serieller Verbindung");
TAP_ETCINFO(__DATE__);

int ursender;


dword TAP_EventHandler( word event, dword param1, dword param2 )
{

    TYPE_TapChInfo ChInfo;
    int Typ, Nummer, checksumme, count, a;
    unsigned char sendtext[255];

//	TAP_Channel_GetCurrent( &Typ, &Nummer );
//	 TAP_Channel_GetInfo ( Typ, Nummer, &ChInfo);
//	  TAP_SPrint (sendtext,"%s                                        \0", ChInfo.chName);	
	  
sendtext[0] = 'R';
sendtext[1] = 'T';
sendtext[2] = 'L';
sendtext[3] = ' ';
sendtext[4] = 'T';
sendtext[5] = 'E';
sendtext[6] = 'L';
sendtext[7] = 'E';
sendtext[8] = 'V';
sendtext[9] = 'I';
sendtext[10] = 'S';
sendtext[11] = 'I';
sendtext[12] = 'O';
sendtext[13] = 'N';

for (a = 0; ( sendtext[a] != 0 ) && ( a < 14 ) ; a=a+1) {};// zählen wie viele Stellen der Sendername besitzt

	  checksumme = checksberechnen(sendtext, a); //Berechnung der Checksumme

	if( checksumme == urchecks ) //überprüfung ob umgeschaltet wurde
	{
	 return param1;
	}
	 else
	{
 
                    urchecks = checksumme;
               	     Sendetext (a, sendtext, checksumme); //übergabe der Variablen an die Funktion Sendetext

	}


  return param1;

}

int TAP_Main(void)
{
	return 1; //TSR Modus
}
Sobald ich jetzt die Komentarzeilen bei TAP_Channel_GetCurrent, TAP_Channel_GetInfo und bei TAP_SPrint weg mache und die Manuelle zuweisung auskommentiere ist es vorbei.
Mit dieser manuellen Zuweiung hat er mit immer einmal den Sender "RTL Television" ausgegeben.

Die beiden Funktionen für die Berechnung der Checksumme und die Ausgabe kann ich gerne auch mal posten aber ich denke das der Fehler an anderer Stelle zu suchen ist.

Die Ausgabe des Senders geschied mit Hilfe von TAP_Print in der Funktion Sendetext.

Ich bin hier im Forum schon eine ganze Weile an wühlen aber irgendwie komme ich nicht wirklich weiter.

Falls jemand eine Idee hat ... ich wäre für jede Hilfestellung dankbar.

bis dann Thomas

AW: Projekt

Verfasst: Mo 3. Dez 2007, 12:41
von FireBird
Servus Thomas,

willkommen im Board. Auf einen ersten schnellen Blick fällt mir nichts böses auf. Was Du prüfen kannst: alle Töpfe haben einen Bug beim Dateisystem. Wenn eine vom PC übertragene Datei ein Vielfaches von 512 Bytes hat, werden die letzten 512 Byte nicht in den Speicher geladen und ein betroffenes TAP stürzt in der Regel sofort nach dem Laden ab.

MfG. Alex

AW: Projekt

Verfasst: Mo 3. Dez 2007, 12:55
von Elle4u
Also was mir nur auffällt sind ein paar umständliche Dinge :)

[quote=""DeRiEsS""]

Code: Alles auswählen

sendtext[0] = 'R';
sendtext[1] = 'T';
sendtext[2] = 'L';
sendtext[3] = ' ';
sendtext[4] = 'T';
sendtext[5] = 'E';
sendtext[6] = 'L';
sendtext[7] = 'E';
sendtext[8] = 'V';
sendtext[9] = 'I';
sendtext[10] = 'S';
sendtext[11] = 'I';
sendtext[12] = 'O';
sendtext[13] = 'N';
[/quote]

Kannst Du auch so schreiben:

Code: Alles auswählen

strcpy(sendtext, "RTL TELEVISION")

Und

[quote=""DeRiEsS""]

Code: Alles auswählen

for (a = 0; ( sendtext[a] != 0 ) && ( a < 14 ) ; a=a+1) {};// zählen wie viele Stellen der Sendername besitzt
[/quote]

kannst Du so schreiben:

Code: Alles auswählen

a = strlen(sendtext)

Wofür die Checksummen-Berechnung ist ist mir nicht klar, aber Du könntest ja auch einfach den aktuellen Typ + Number zwischenspeichern und immer mit dem Neuen vergleichen...


Hoffe, etwas geholfen zu haben :wink:

AW: Projekt

Verfasst: Mo 3. Dez 2007, 16:13
von Erdnussnase
Zwei Sachen:

- Entweder Du machst noch ein sendtext[14] = 0;
oder verwendest die strcpy Alternative. So siehst gefärlich aus.

Ebenso der Test in der For Schleife. Der ist so ok, aber SEHR gefährlich. Besser ist sich das so herum anzugewöhnen:
(a < 14) && (sendtext[a] != 0)

Sollte aber trotzdfem nicht freezen.

AW: Projekt

Verfasst: Di 4. Dez 2007, 15:23
von ibbi
Wie bekommst Du das TAP kompiliert? urchecks ist nicht deklariert (und übrigens uninitialisiert).

[quote=""DeRiEsS""]Die beiden Funktionen für die Berechnung der Checksumme und die Ausgabe kann ich gerne auch mal posten[/quote]

Das wäre hilfreich. (Genauer gesagt wäre es hilfreich, Du würdest genau die Sourcen posten, die kompiliert werden können und zum Fehler führen.)

[quote=""DeRiEsS""]aber ich denke das der Fehler an anderer Stelle zu suchen ist.[/quote]

Evtl. denkt der Fehler ganz anders darüber. :wink:

AW: Projekt

Verfasst: Di 4. Dez 2007, 17:17
von DeRiEsS
uff erst mal danke an alle die geantwortet haben!
Wie bekommst Du das TAP kompiliert? urchecks ist nicht deklariert (und übrigens uninitialisiert).
:rolleyes: ich hatte bevor ich es hier rein gestellt habe noch eine kleine Änderung gemacht und anscheind ist mir urchecks durch die lappen gegangen ...
statt ursender muss es urchecks heißen ...

hmmm wie kann man sein tap Trogramm denn so abändern das es nicht mehr abstürtzt bzw. sein Programm durch 512 teilbar ist ... das aktuelle Programm ist 10704 byte groß.
Wenn man es durch 512 teil kommt 20,9 raus ...
Ich hab heute schon mal ein wenig im forum gewühlt und da habe ich den Beitrag von Happy gefunden Klick
Ich habe mir das Programm runtergeladen und habe es nach den Kompilieren aufgerufen.
Aber die TAP Datei ist immer noch 10704 byte groß :thinker:
Ich ruf das Programm mit dem Befehl "Tapcheck.exe /f" im gleichen Verzeichniss wie die Tap Datei liegt auf.

Code: Alles auswählen

TAPCHECK Version 1.2 by Till Hepke
Projekt.tap   04.12.2007 14:43:34     10.704 bytes     OK
Das ist die Ausgabe die ich bekomme wenn ich das Tool wie oben beschrieben ausführe ...
Wofür die Checksummen-Berechnung ist ist mir nicht klar, aber Du könntest ja auch einfach den aktuellen Typ + Number zwischenspeichern und immer mit dem Neuen vergleichen...
Ist schwer zu erklären ... das hat mit dem String zu tun den ich ausgeben will bzw. mit dem Geräte was den String enpfangen soll ... Ich poste einfach mal was in der Anleitung steht

Code: Alles auswählen

Step #1 - Add the HEX value of every byte in the message that precedes the Checksum:
Example - 0xF0 + 0x00 + 0x67 + 0x7C + 0xF1 + 0x0F = 0x02D3

Step #2 - Count the number of bytes which precede the Checksum and convert that value from
DEC to HEX (byte count). Add the byte count in HEX to the previously calculated sum of
bytes:
Example - 0x02D3 + 6 (6 = Decimal value byte count) = 0x02D9

Step #3 - This value is then AND-ed with the HEX value 0x007F (7F is the highest BIN value
for 7 bits = 1111111). The Checksum itself and the End of Message Character are not
included in the calculation. Only the low 7 bits are used so overflow is discarded:
Example - 0x02D9 AND 0x007F = 0x59 = Checksum
Aber den code habe ich im C Builder von Borland vorgeschrieben der sollte Funktionieren
aber hier ist er für intersierte :)

Code: Alles auswählen

int checksberechnen(char * Sendername)
{

int x , y , Temp ,z;
int bin[13];

//------------------------------------------------------------------
//Umrechnung des Sendernamens in eine Dezimale Zahl
//------------------------------------------------------------------

Temp = 0;
y = 0;

for (x = 0; ( Sendername[x] != 0 ) && ( x < 14 ) ; x=x+1) {};

for(y=0; y-x ; y=y+1)
{
 Temp=Temp+(int)Sendername[y];
}

Temp = Temp + x;

//------------------------------------------------------------------
//Umrechnung der Dezimalen Zahl in eine binäre Zahl
//------------------------------------------------------------------

x = 0;
y = 4096;
z = 0;

while ( y > 1 )
{
 y = y / 2;

 if (Temp >= y)
 {
  Temp = Temp - y;
  bin[z] = 1;
  z=z+1;
 }
 else
 {
  bin[z] = 0;
  z=z+1;
 }

}

//------------------------------------------------------------------
//Umrechnung der ersten (von rechts) 7 Stellen der Binären Zahl
//------------------------------------------------------------------

z = 5;
Temp = 0;
y = 128;

while ( z < 12 )
{

 y = y/2;

  if (bin[z] == 1)
  {
   Temp = Temp + y;
  }

 z=z+1;
}


//------------------------------------------------------------------
//Übergabe des errechneten Wertes an die übergeordnete Funktion
//------------------------------------------------------------------

return Temp;

}
Wahrscheinlich schlagen jetzt wieder mehere Leute die Hände über dem Kopf zusammen aber hier ist die Ausgabe des Strings :)
void SendeHex (int anzahl, char * Sendername, int cheks)
{

int x = 0;

//------------------------------------------------------------
//Ausgabe verschiedener Hex Zahlen. Die Beschreibung der jew. Hex Zahl steht als komentar hinter dem Sendebefehl.
//------------------------------------------------------------

TAP_Print( "%c" , 0xF0 );//Start of Message
TAP_Print( "%c" , 0x23 );//Target Controller Id
TAP_Print( "%c" , 0x23 );//Target Zone Id
TAP_Print( "%c" , 0x23 );//Target keypad Id
TAP_Print( "%c" , 0x23 );//Source Controller Id
TAP_Print( "%c" , 0x23 );//Source Zone Id
TAP_Print( "%c" , 0x23 );//Source Keypad Id
TAP_Print( "%c" , 0x23 );//Message Type
TAP_Print( "%c" , 0x23 );//Target Path, Num Levels
TAP_Print( "%c" , 0x23 );//Target Path, Level 1
TAP_Print( "%c" , 0x23 );//Target Path, Level 2
TAP_Print( "%c" , 0x23 );//Source Path, Num Levels
TAP_Print( "%c" , 0x23 );//Packet Num Lo Byte
TAP_Print( "%c" , 0x23 );//Packet Num Hi Byte
TAP_Print( "%c" , 0x23 );//Num Packets Lo Byte
TAP_Print( "%c" , 0x23 );//Num Packets Hi Byte
TAP_Print( "%c" , 0x23 );//Num Data Bytes Lo Byte
TAP_Print( "%c" , 0x23 );//Num Data Bytes Hi Byte
TAP_Print( "%c" , 0x23 );//Data Byte 1 - alignment
TAP_Print( "%c" , 0x23 );//Data Byte 2 - Flash Time


//The alignment field defines how the message appears on the display. The following values are
//currently supported:
//00 Centered
//01 Left justified


//Flash Time
//Messages can be displayed perminantly or they can be flashed on the display for a brief time. The
//Flash Time field defines how long the string is displayed. The time is measured in 10ms increments
//with a value of 0 being constant display (will be overwritten by normal system activity).
//Low byte of "Flash" time in 10ms
//increments. 0 = constant (3 secs)


//------------------------------------------------------------
//Ausgabe des Sendernamens
//------------------------------------------------------------

TAP_Print( "%s" , Sendername);

//------------------------------------------------------------
//Ausgabe der Checksumme
//------------------------------------------------------------

// TAP_Print( "%i" , checks );

//------------------------------------------------------------
//Ausgabe des Stringendes
//------------------------------------------------------------

TAP_Print( "%c" , 0xF7 );

}
so jetzt habt ihr das ganze Programm :)
Seid nicht zu hard mit mir ... so lange programier ich auch noch nicht aber ich bin für jeden verbesserungsvorschlag dankbar.

ich hatte erste alle hex Zahlen in einer TAP_Print Funktion ausgeben aber durch die Abstürze hab ich das dann ein wenig auseinander gefriemelt ...

bis dann gruß Thomas

AW: Projekt

Verfasst: Di 4. Dez 2007, 17:21
von Sigittarius-E
[quote=""DeRiEsS""]hmmm wie kann man sein tap Trogramm denn so abändern das es nicht mehr abstürtzt bzw. sein Programm durch 512 teilbar ist ... das aktuelle Programm ist 10704 byte groß.
Wenn man es durch 512 teil kommt 20,9 raus ...
Ich hab heute schon mal ein wenig im forum gewühlt und da habe ich den Beitrag von Happy gefunden Klick
Ich habe mir das Programm runtergeladen und habe es nach den Kompilieren aufgerufen.
Aber die TAP Datei ist immer noch 10704 byte groß :thinker:
Ich ruf das Programm mit dem Befehl "Tapcheck.exe /f" im gleichen Verzeichniss wie die Tap Datei liegt auf. [/quote]

wenn es nicht eine durch 512 auf eine natürliche Zahr teilbare Grösse ist (d.h. kein Vielfaches von 512 bzw. beim dividieren durch 512 ein Rest bleibt) dann paßt die Grösse mit z.B. 10704 schon.

Happys Programm bessert nur aus wenn dein Programm z.B. 4096 gross wäre.

AW: Projekt

Verfasst: Di 4. Dez 2007, 21:12
von ibbi
[quote=""DeRiEsS""]

Code: Alles auswählen

checksumme = checksberechnen(sendtext, a); //Berechnung der Checksumme

Code: Alles auswählen

Sendetext (a, sendtext, checksumme); //übergabe der Variablen an die Funktion Sendetext
[/quote]

[quote=""DeRiEsS""]

Code: Alles auswählen

int checksberechnen(char * Sendername)

Code: Alles auswählen

void SendeHex (int anzahl, char * Sendername, int cheks)
[/quote]

Offenbar möchtest Du uns nicht die Sourcen posten, die kompiliert werden können und zum Fehler führen.

Dann möchte ich Dir auch nicht helfen. :bye2:

AW: Projekt

Verfasst: Mi 5. Dez 2007, 15:57
von mamel1984
hallo ich gehöre auch zu der projektgruppe. wir haben momentan immer mehr zeitdruck und suchen jemanden der uns mit dem problem helfen kann. es wäre ganz nett wenn jemand mal das programm in seinen topfield spielen könnte und mal ausprobiert ob das ganze auch abschmiert. wir müssen das bis januar zum laufen bekommen und dann alles präsentieren. es ist ein projekt für die technikerausbildung und ziemlich wichtig. es wäre klasse wenn sich jemand finden würde der uns unterstützt das problem zu lösen. vielleicht liegt es auch an unserem topfield aber es ist andererseits auch unwahrscheinlich, weil andere programme ja laufen. ich hoffe jetzt einfach mal das euch noch was einfällt. vielen dank im vorraus.

AW: Projekt

Verfasst: Mi 5. Dez 2007, 16:00
von ibbi
Könnt Ihr auch lesen oder nur schreiben?

AW: Projekt

Verfasst: Mi 5. Dez 2007, 16:05
von macfan
:rotfl: :megalol:

@mamel1984:
Als Lesehilfe: Bitte einmal Beitrag #8 gründlich studieren!

Gruß, Horst

AW: Projekt

Verfasst: Mi 5. Dez 2007, 16:08
von FireBird
[quote=""ibbi""]Könnt Ihr auch lesen oder nur schreiben?[/quote]
Das ist die andere Gruppe.

AW: Projekt

Verfasst: Mi 5. Dez 2007, 16:32
von Twilight
welche firmware ist denn auf den mp ?

wird wahrscheinlich jetzt nicht der grund sein, aber sicher gut zu wissen das es keine uraltversion ist.

twilight

AW: Projekt

Verfasst: Do 6. Dez 2007, 10:14
von ibbi
[quote=""FireBird""]Das ist die andere Gruppe.[/quote]

Du meinst also, die eine Gruppe lernt programmieren und schreiben und die andere Gruppe lesen und zuhören. :thinker:

Das würde einiges erklären. :D :

AW: Projekt

Verfasst: Do 6. Dez 2007, 10:23
von DeRiEsS
Offenbar möchtest Du uns nicht die Sourcen posten, die kompiliert werden können und zum Fehler führen.
Dann möchte ich Dir auch nicht helfen.
okay ....
Ich hatte den ersten Post auf der Arbeit geschrieben und den zweiten von zu Hause aus.
Da hatte ich 2 unterschiedliche Versionen ... das war bestimmt keine Absicht ... :o SORRY
Hier habe ich jetzt nochmal den kompletten Code von A bis Z ...
Das Programm habe ich gestern Abend so kompilieren können ...

Code: Alles auswählen

#include "tap.h"

#define ID_DISPLAY 0xB8023456   

TAP_ID( ID_DISPLAY );
TAP_PROGRAM_NAME("Kom-Test RNet");
TAP_AUTHOR_NAME("Project One");
TAP_DESCRIPTION("Daten via Serieller Verbindung");
TAP_ETCINFO(__DATE__);


int urchecks;

void SendeHex (int anzahl, char * Sendername, int check)
{

//------------------------------------------------------------
//Ausgabe verschiedener Hex Zahlen. Die Beschreibung der jew. Hex Zahl steht als komentar hinter dem Sendebefehl.
//------------------------------------------------------------

	TAP_Print( "%c" , 0xF0 );//Start of Message
	TAP_Print( "%c" , 0x23 );//Target Controller Id
	TAP_Print( "%c" , 0x23 );//Target Zone Id
	TAP_Print( "%c" , 0x23 );//Target keypad Id
	TAP_Print( "%c" , 0x23 );//Source Controller Id
	TAP_Print( "%c" , 0x23 );//Source Zone Id
	TAP_Print( "%c" , 0x23 );//Source Keypad Id
	TAP_Print( "%c" , 0x23 );//Message Type
	TAP_Print( "%c" , 0x23 );//Target Path, Num Levels
	TAP_Print( "%c" , 0x23 );//Target Path, Level 1
	TAP_Print( "%c" , 0x23 );//Target Path, Level 2
	TAP_Print( "%c" , 0x23 );//Source Path, Num Levels
	TAP_Print( "%c" , 0x23 );//Packet Num Lo Byte
	TAP_Print( "%c" , 0x23 );//Packet Num Hi Byte
	TAP_Print( "%c" , 0x23 );//Num Packets Lo Byte
	TAP_Print( "%c" , 0x23 );//Num Packets Hi Byte
	TAP_Print( "%c" , 0x23 );//Num Data Bytes Lo Byte
	TAP_Print( "%c" , 0x23 );//Num Data Bytes Hi Byte
	TAP_Print( "%c" , 0x23 );//Data Byte 1 - alignment
	TAP_Print( "%c" , 0x23 );//Data Byte 2 - Flash Time

//------------------------------------------------------------
//Ausgabe des Sendernamens
//------------------------------------------------------------

	TAP_Print( "%s" , Sendername );

//------------------------------------------------------------
//Ausgabe der Checksumme
//------------------------------------------------------------

	TAP_Print( "%i" , check );

//------------------------------------------------------------
//Ausgabe des Stringendes
//------------------------------------------------------------

	TAP_Print( "%c" , 0xF7 );

}

int checksberechnen(char * Sendername)
{

int x , y , Temp ,z;
int bin[13];

//------------------------------------------------------------------
//Umrechnung des Sendernamens in eine Dezimale Zahl
//------------------------------------------------------------------

Temp = 0;
y = 0;

for (x = 0; ( Sendername[x] != 0 ) && ( x < 14 ) ; x=x+1) {};

for(y=0; y-x ; y=y+1)
{
 Temp=Temp+(int)Sendername[y];
}

Temp = Temp + x;

//------------------------------------------------------------------
//Umrechnung der Dezimalen Zahl in eine binäre Zahl
//------------------------------------------------------------------

x = 0;
y = 4096;
z = 0;

while ( y > 1 )
{
 y = y / 2;

 if (Temp >= y)
 {
  Temp = Temp - y;
  bin[z] = 1;
  z=z+1;
 }
 else
 {
  bin[z] = 0;
  z=z+1;
 }

}

//------------------------------------------------------------------
//Umrechnung der ersten (von rechts) 7 Stellen der Binären Zahl
//------------------------------------------------------------------

z = 5;
Temp = 0;
y = 128;

while ( z < 12 )
{

 y = y/2;

  if (bin[z] == 1)
  {
   Temp = Temp + y;
  }

 z=z+1;
}


//------------------------------------------------------------------
//Übergabe des errechneten Wertes an die übergeordnete Funktion
//------------------------------------------------------------------

return Temp;

}

dword TAP_EventHandler( word event, dword param1, dword param2 )
{

    TYPE_TapChInfo ChInfo;
    int Typ, Nummer, checksumme, a;
    unsigned char sendtext[255];

	TAP_Channel_GetCurrent( &Typ, &Nummer );
	 TAP_Channel_GetInfo ( Typ, Nummer, &ChInfo);
	  TAP_SPrint (sendtext,"%s                                        \0", ChInfo.chName);	

        for (a = 0; ( sendtext[a] != 0 ) && ( a < 14 ) ; a=a+1) {};// zählen wie viele Stellen der Sendername besitzt	  	  

	checksumme = checksberechnen(sendtext);

	if( checksumme == urchecks )
	{
	 return param1;
	}
	 else
	{
	  urchecks = checksumme;  
	  SendeHex (a, sendtext, checksumme);
	}

  return param1;

}

int TAP_Main(void)
{
	return 1;
}
Hier ist im übrigen das was der Topfield ausgibt wenn er abschmiert.

Code: Alles auswählen

$sp=803ba160
$at=821c2b10    $v0=821c022c    $v1=80180be0    $a0=80180b30
$a1=80188f30    $a2=80188fcc    $a3=80189058    $t0=80188c74
$t1=80188d08    $t2=80188d9c    $t3=801808dc    $t4=80188e28
$t5=80180838    $t6=801890c8    $t7=80181070    $t8=821c0000
$t9=0000279a    $s0=80180dc0    $s1=80180ea4    $s2=80180fac
$s3=00000000    $s4=00001293    $s5=80180724    $s6=80180524
$s7=821c279a    $s8=821c1950    $ra=821c1978    $t0=00002bc2
$t1=00000000    $gp=821c279a    $k1=821c1a00


<<< Unexpected Exception >>>
CAUSE   = 00000414
  EPC = 821c1a00
 *EPC   = ac25ffff
   SR   = 10000403
badVAddr = 821c2b0f
 task = 0
_runCount=1
lastTask(0) = 0
memory monitor
cmd number = 10
>
Also es wäre schön wenn irgend jemand irgend ein fehler finden könnte der zum absturz führen könnte.
danke schon mal im voraus.
welche firmware ist denn auf den mp ?
Die Firmware die aktuell auf dem Topfield läuft ist die Version 1416.
Ich denke das ist keine Uralt Version obwohl es schon die 1417 bzw. die 1516 gibt.
:rotfl: :megalol:

@mamel1984:
Als Lesehilfe: Bitte einmal Beitrag #8 gründlich studieren!
Danke Horst ... ich finds nicht lustig ...

bis dann

AW: Projekt

Verfasst: Do 6. Dez 2007, 10:34
von macfan
[quote=""DeRiEsS""]Danke Horst ... ich finds nicht lustig ...[/quote]
Ich fand ibbis Bemerkung schon lustig. Das traf es auf den Punkt, weil ihr immer weiter fragtet ohne zu liefern. Wenn dann eine solche Spitze kommt, müsst ihr auch damit leben ;) .

Aber nun ist ja endlich der ganze Quelltext da, und ich bin überzeugt, dass unsere Spezialisten wie ibbi und Firebird etwas finden werden. Toi toi!

Gruß, Horst

AW: Projekt

Verfasst: Do 6. Dez 2007, 10:34
von billygeen
1416 und 1417 ist soweit ich weis die bootloader version nicht die der Firmware!

AW: Projekt

Verfasst: Do 6. Dez 2007, 11:09
von schasskistn
Ohne jetzt ganz sicher zu sein, würde ich eure Kommunikation mal ins TAP_main nehmen. Der Eventhandler wird immer aufgerufen sobald es nix anderes zu tun gibt, vielleicht läuft er in ein Stackproblem rein?

AW: Projekt

Verfasst: Do 6. Dez 2007, 11:23
von Erlefranz
[quote=""DeRiEsS""]okay ....

Die Firmware die aktuell auf dem Topfield läuft ist die Version 1416.
Ich denke das ist keine Uralt Version obwohl es schon die 1417 bzw. die 1516 gibt.

bis dann[/quote]

Das ist der Boot Loader und hat mit der Firmware nichts zu tun....

Diese ist hier zu finden...

AW: Projekt

Verfasst: Do 6. Dez 2007, 11:34
von ibbi
Außer, dass es mich so ziemlich in jeder Zeile zu einem :patsch: reizt und weder Prüfungen noch Initialisierungen vorhanden sind, entdecke ich nichts, was zu einem Absturz führen könnte. (Mit Ausnahme der ungeprüften Verwendung von ChInfo.chName.) Eventuell hat der Compiler (welchen verwendet Ihr übrigens) Probleme mit

Code: Alles auswählen

TAP_Print( "%i" , check );
oder dem \0 in

Code: Alles auswählen

TAP_SPrint (sendtext,"%s                                        \0", ChInfo.chName);
[quote=""schasskistn""]Ohne jetzt ganz sicher zu sein, würde ich eure Kommunikation mal ins TAP_main nehmen.[/quote]

Das geht natürlich nicht, weil sie ja den Senderwechsel mitbekommen möchten.

[quote=""schasskistn""]Der Eventhandler wird immer aufgerufen sobald es nix anderes zu tun gibt, vielleicht läuft er in ein Stackproblem rein?[/quote]

Es wäre natürlich keine schlechte Idee, den EventHandler nur im EVT_IDLE aufzurufen. Evtl. macht tatsächlich eine der API-Funktionen Probleme.