Forum: Compiler & IDEs Stirngs auf dem Controller


von mathias giacomuzzi (Gast)


Angehängte Dateien:

Lesenswert?

Ich möchte gerne mit eine Händy Wetterdaten übermitteln für meine
Modellflugclub!

Ich habe da jetzt mal was geschrieben, das mir den Text und die Nummer
in das grauslige PDU Format umrechnet! ==> funktioniert auch!

Aber ich brauch ziemlich viel Stringfunktionen, strcyp und strcat
hauptsächlich!! ==> Ist das ein Problem auf dem uC, kann ich das
irgendwie umgehen ?? ==> vielleicht könnten ihr mal den Code
anschauen!!

Derzeit noch für den LCC-Win32 ich Probiere immer zuerst damit alles
aus bevor ich auf den uC gehe!!

Also jetzt muss ich es umschreiben für eine AVR ich denke mal ein
atmega8535 ==> schaft er das wenn er zum Beispiel jede Minute so eine
SMS über die Serielle hinaus schreiben muss??

Danke im voraus

mfg mathias

von Malte (Gast)


Lesenswert?

Also jede Minute wird mit Sicherheit kein Problem sein. Es sei denn du
reduzierst den Takt auf ein paar hundert Hertz. ;-)
Pass nur auf, dass du dein Programm nicht mit immer mehr Texten
ausstattest und auf einmal die Variablen vom Stack überschrieben
werden.

von mathias giacomuzzi (Gast)


Lesenswert?

nein also wie meinst du das ?? ich schreibe höchstens den satzt den ich
im programm oben auch verwende!!

mfg mathisa

von Malte (Gast)


Lesenswert?

Ok, wenn du das Programm so belässt wird der RAM wohl reichen. Meine
eigene Erfahrung ist nur dass einem bei Mikrocontrollern immer
weitere Features einfallen und irgendwann ist dann Ende mit dem
Speicher (sei es nun RAM, Flash oder EEPROM).

von Hans (Gast)


Lesenswert?

ich mach mit einem mega128 bei 3,6864Mhz jede sekunde einen kompleten
read vom sms-speicher vom handy + pdu decodierung aller messages und
dann noch absetzen von retour nachrichten bei passenden messages..

alles OHNE zusatz ram... und nebenbei spielt das teil noch datalogger
G.. ich glaube dein vorhaben sollte auch problemlos gehen..

vielleicht nochmal überlegen ob man nicht mit lustigem pointer hin und
her schieben nicht noch ein paar 100bytes freimachen kann.. aber es
sollte schon gehen (hab den code nicht durchgekuckt)...

nur warum leute noch zu 8515 oder 8535 kompatibeln dingern greifen ist
mir unklar... nehmt doch mega16 oder mega32... das erleichtert
teilweise das leben ungemein...schon klar ein 8515 ist am anfang
einfach übersichtlicher..aber dafür ist rapid prototyping am mega32
viel schöner machbar und pinkompatibel zum 8535 ist er auch... und
speicher kann an bekanntlich nie genug haben g

so jetzt hab ich mir den code doch schnell angekuckt...

1. bitte etwas schöner layouten das zeug.. sprich spiel dich mal mit
tabs... sprich zieh das einrücken nach blockbegin gnadenlos durch.. das
lohnt sich !! ;)

2.
if(strlen(buf)<2){
  strcpy(pdutext,"0");
  strcat(pdutext,buf);

}else strcpy(pdutext,buf);
kann man auch so machen

if(strlen(buf)<2){
  strcpy_P(&pdutext[strlen(pdutext)],PSTR("0"));
}else strcpy(&pdutext[strlen(pdutext)],buf);

das ist zwar etwas unübersichtlicher.. aber im if verbrauchst du
weniger ram (weil direkt aus dem flash kopiert wird.. dann könnte man
nun auch buf wegoptimieren...


itoa(strlen(text),buf,16);
 hab ich in meinem fall selbst nachgebildet..

char *g_HexConversionTable="0123456789abcdef";

inline void Int2Hex(char *dest,char value) {
  dest[1]=g_HexConversionTable[(value&0x0f)];
  dest[0]=g_HexConversionTable[(value&0xf0)>>4];
}

das hat unter umständen vorteile... z.b ist so meine länge immer 2 ;)

sprich

//laenge hinein Kopieren !!

itoa(strlen(text),buf,16);

if(strlen(buf)<2){
  strcpy(pdutext,"0");
  strcat(pdutext,buf);

}else strcpy(pdutext,buf);

wird sogar nur ein

Int2Hex(&pdutext[strlen(pdutext)],strlen(text));
b
ich sollte in den nächsten tagen (sprich gegen we) wieder mehr zeit
haben.. dann werd ich mal einen preview von meiner WizAVRd
installieren... der bring ich dann bei eine tool-lib zu generieren ;)

denn genau bei so sondersachen ist unter umständen eine stark
abgespeckte und aufs wesentliche reduzierte tool-lib recht gut... am
mega128 interessiert mich der flash verbrauch nicht..aber 8k sind so
recht schnell voll ;)

gut die ganze nachricht ist jetz wirklich schön unübersichtlich
geworden ;)

gut ich hoffe das hat noch ein bisserl inspiration gebracht... und hift
auch beim (hoffentlich nicht nötigen) ram freimachen G

73

von mathias giacomuzzi (Gast)


Lesenswert?

Also wirklich danke für die guten Kommentare, ja ich nehme sonts schon
immer Mega 32,16 oder so, ich habe aber noch 8535er rumliegen!!

was ist eigentlich das inline void ??

was meinst du sonst zu Code, machst du es auch so??

mfg mathias

von Hans (Gast)


Lesenswert?

da hab ich anscheinend irgendwo diese funktion schneller haben wollen ;)
inline sagt dem compiler er soll die funktion nicht aufrufen, sondern
den code einfach an stelle des aufrufes setzen.. dadurch wirds größer,
aber man erspart sich zeit und unter umständen speicher.. aber hier
glaub ich, dass ichs einfach schneller gebraucht habe ;)

den rest vom code hab ich mir nicht sooo genau angeschaut.. ich hab nur
mal die ersten 1-2 seiten überflogen und mal schnell ein paar ideen
aufgeschrieben.

wenn ich heut von der uni heimkomm und zufällig zuviel zeit haben
sollte werd ich mich um den restlichen code kümmern ,)

btw zum thema gerade herumliegende controller ;) ich tu gerade meine
alten 90s8515 verbauen... ich dachte schon,dass ich die nie mehr
verbauen würde aber jetzt werden sie thermostate G

73

von mathias giacomuzzi (Gast)


Lesenswert?

okay super danke!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.