ElTransistor
17.11.2007, 17:12
hi,
ich hab nun ein neues projekt angefangen, und wie hätte es auch anders sein können, habe ich schon wieder ein unlösbares problem welches wohl auch dieses gefährdet und mir den spass endgültig verdirbt :(
es geht um folgende: ich mache gerade ein kleines programm welches mit dem hyperterminal arbeitet und ihm bei unterschiedlichen zuständen unterschiedliche sachen per SerPrint(); schickt. soweit so gut. das hat auch wunderbar funktioniert, bis zu einer bestimmten anzahl an gespeicherten strings. sobald ich sie überschreite, fängt der asuro an, sämtliche strings in einen topf zu schmeissen, und über serprint einfach irgendeinen müll auszugeben.
da ich davon ausgegangen bin dass er ungefähr 8K ROM hat, wovon ich evtl 6-7K für meine sachen verwenden kann, müssten es schon einige tausend zeichen sein die er ohne probleme speichern sollte.
mein problem fängt aber schon bei ~600 zeichen an, was doch eigentlich schon sehr weit unterhalb der grenze liegen sollte..
ich habe hier einen kleinen test-code erstellt um mein problem zu verdeutlichen: (einige stellen des codes sind auskommentiert, erklärung weiter unten)
#include "asuro.h"
int main(void) {
Init();
SerPrint("00ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("01ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("02ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("03ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("04ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("05ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("06ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("07ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("08ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("09ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("10ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("11ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("12ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("13ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("14ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("15ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("16ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("17ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("18ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("19ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("20ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("21ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
/*SerPrint("22ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("23ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("24ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("25ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("26ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("27ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("28ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("29ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
*/
while(1);
return 0;
}
wenn ich das an das terminal sende, kommt folgendes raus:
05ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
06ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
07ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
08ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
09ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
10ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
11ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
12ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
13ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
14ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
15ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
16ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
17ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI18ABCDEFGHIJK LMNOPQRSTUVWXYZABCDEFGHIJKLMNO
PQRSTUVWXYZ
19ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
20ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
21ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
man beachte dass es in der 5. zeile erst anfängt und dass die 18. zeile komplett zerhackt ist. (der fehler ist reproduzierbar und liegt nicht an der ir-verbindung).
wenn ich die auskommentierten stellen des codes noch hinzufüge, wird es noch viel hefitger, dann kommen noch mehr verwirrte zeichen an. jetzt würde ich gerne wissen, woran das liegt. wieso geht es nicht, und warum fängt das problem schon bei so relativ wenigen zeichen an? was mache ich falsch? was kann ich anders machen?
danke schonmal..
ich hab nun ein neues projekt angefangen, und wie hätte es auch anders sein können, habe ich schon wieder ein unlösbares problem welches wohl auch dieses gefährdet und mir den spass endgültig verdirbt :(
es geht um folgende: ich mache gerade ein kleines programm welches mit dem hyperterminal arbeitet und ihm bei unterschiedlichen zuständen unterschiedliche sachen per SerPrint(); schickt. soweit so gut. das hat auch wunderbar funktioniert, bis zu einer bestimmten anzahl an gespeicherten strings. sobald ich sie überschreite, fängt der asuro an, sämtliche strings in einen topf zu schmeissen, und über serprint einfach irgendeinen müll auszugeben.
da ich davon ausgegangen bin dass er ungefähr 8K ROM hat, wovon ich evtl 6-7K für meine sachen verwenden kann, müssten es schon einige tausend zeichen sein die er ohne probleme speichern sollte.
mein problem fängt aber schon bei ~600 zeichen an, was doch eigentlich schon sehr weit unterhalb der grenze liegen sollte..
ich habe hier einen kleinen test-code erstellt um mein problem zu verdeutlichen: (einige stellen des codes sind auskommentiert, erklärung weiter unten)
#include "asuro.h"
int main(void) {
Init();
SerPrint("00ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("01ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("02ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("03ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("04ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("05ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("06ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("07ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("08ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("09ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("10ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("11ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("12ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("13ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("14ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("15ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("16ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("17ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("18ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("19ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("20ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("21ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
/*SerPrint("22ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("23ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("24ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("25ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("26ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("27ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("28ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
SerPrint("29ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ\r\n");
*/
while(1);
return 0;
}
wenn ich das an das terminal sende, kommt folgendes raus:
05ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
06ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
07ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
08ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
09ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
10ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
11ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
12ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
13ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
14ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
15ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
16ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
17ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI18ABCDEFGHIJK LMNOPQRSTUVWXYZABCDEFGHIJKLMNO
PQRSTUVWXYZ
19ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
20ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
21ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV WXYZ
man beachte dass es in der 5. zeile erst anfängt und dass die 18. zeile komplett zerhackt ist. (der fehler ist reproduzierbar und liegt nicht an der ir-verbindung).
wenn ich die auskommentierten stellen des codes noch hinzufüge, wird es noch viel hefitger, dann kommen noch mehr verwirrte zeichen an. jetzt würde ich gerne wissen, woran das liegt. wieso geht es nicht, und warum fängt das problem schon bei so relativ wenigen zeichen an? was mache ich falsch? was kann ich anders machen?
danke schonmal..