Forum: Mikrocontroller und Digitale Elektronik Verbesserungspotential?


von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin gerade dabei ein an das Sony SIRCS-Protokoll angelehntes
Ein-Draht Protokoll zu schreiben. (SIRCS ist ja eigentlich für IR aber
es soll auch für Draht gut funktionieren!) Es gibt nur zwei
gleichberechtigte Geräte.

Problem ist nur, dass meine Routine, die für das Senden und Empfangen
zuständig ist einfach zu viel Speicher verbraucht 1286 Byte!!! Also
knapp 70% des Flashs meines ATTiny26...

Über Verbessungsvorschläge würde ich mich daher wirklich freuen!

Vielen Dank,


Daniel


ps. die Funktion um die es geht heißt DDBusCheck().

von john (Gast)


Lesenswert?

versuch mal die math.h weg zu lassen. so wie es aussieht benutzt du die
ja sowieso nicht

von Daniel (Gast)


Lesenswert?

Hallo,

math.h brauch ich leider für die fmod Fkt. (also modulo)
Macht aber auch nicht allzuviel aus...

Das kann doch nicht sein, dass das so viel Speicher braucht... hab ich
da zu viel if Abfragen???

Grüße,

Daniel

von Rufus T. Firefly (Gast)


Lesenswert?

Das geht aber einfacher:

  if (fmod(DDcountbit,2) != 0)  // Alle ungeraden Bits ...esendet.

Einerseits könntest Du einfach den modulo-Operator statt einer
_floatingpoint_(!)-Funktion verwenden


  if ((DDcountbit % 2) != 0)

oder noch einfacher nur das letzte Bit untersuchen:

  if (DDcountbit & 1)

Das macht exakt dasselbe.

von Daniel (Gast)


Lesenswert?

OOkkk... Mist. Das kommt davon wenn man nicht nachdenkt!!
Jetzt bin ich runter auf 40% (von vorher 80)...

Vielen Dank für die Hilfe!

Daniel

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.