Stirngs auf dem Controller

Gast #181466
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
Angehängte Dateien:
Gast #181467
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.
Gast #181469
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).
Gast #181470
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
Gast #181471
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
Gast #181472
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.