naja...
das Problem hatte ich im vorletzten Semester erst... Buffergröße vs. normaler Speicher...
bei 1kb Speicher und viel Datenmüll müssen die Buffer halt kleiner ausfallen
im Sendebuffer legst du alles ab, was du senden willst...
wir haben da ein Ringbuffersystem aufgebaut gehabt, so dass man immer max. Sendeplatz nutzen konnte - nie Speicher blockiert... egal btt
der Buffer ist dafür da, dass du die Daten direkt erzeugen kannst und darin ablegen kannst... die Daten können dann direkt - sobald die Leitung frei ist - übertragen werden...
Vorteil:
Daten können erstmal komplett erzeugt werden, bevor man sie sendet
µC muss nicht sinnlos rumidlen um den richtigen Moment für's Senden abzupassen
Empfangsbuffer ist genau andersrum
Daten, die ankommen, werden erstmal dort abgelegt und können später vom Programm verarbeitet werden
Vorteil:
Routine kann erstmal durchlaufen (sonst müsste man erstmal Register freiräumen, ...)
µC muss nicht ständig nachgucken, ob was ankommt und dann ein Register irgendwo hin schreiben, weil ja gleich wieder was ankommen könnte
(wenn man das mit Buffer ganz extrem sieht) µC muss nicht in nem Status festhängen und nichts tun, weil er auf den Rest eines Pakets wartet...
Die Buffergröße liefert ein wenig Bequemlichkeit... betrachten wir es mal aus der Sicht:
Warum die Größe wichtig ist/Wann sollte man ihn vergrößern?
- wenn die Datenpakete größer sind und man sie komplett braucht (sonst müsste man sie in einen anderen Buffer zwischensichern) [Beispiel: Crypto-Coprozessor für Verfahren mit Blocklänge]
- wenn die Anzahl der Pakete pro Zeit "groß" ist [Überlauf durch Stoßzeiten, UART eigentlich nur, wenn man nicht abräumt]
- wenn das Programm geschützte Bereiche hat, in denen es auf Bufferinput nicht reagiert [z.B. ABS oder sowas, wo Parameter warten müssen]
- wenn man sich sicher sein muss, dass kein Paket verloren geht [Daten die beim Sender weggeworfen werden nach dem Senden]
Kenne die Funktionen nicht, hatten uns da ne eigene Lib an Funktionen geschrieben, weil wir die Pakete unterschiedlich interpretiert haben... (Zeitstamp, Text, Messwerte, ...)... sollten aber auch mit veränderter Buffergröße funktionieren...
Lesezeichen