"FIFO" mittels RIngspeicher gibt's da
https://www.roboternetz.de/wissen/in...FO_mit_avr-gcc
Btw: Ich selbst mach bei I2C KEINEN Ringpuffer, weil auch der ein Limit hat, bei dem es nicht mehr weitergeht. D.h. ich verschiebe das Problem nur. Daher hab ich es bleiben lassen. Bei einem Multimastersystem kann ein Sender sowieso nicht sicher sein, daß er gleich dran kommt, bzw. das der andere nicht gerade selbst sendet. Also bleibt die Message immer dort im Buffer, der sie gerade senden will.
getimete Busfreigabe: hat nur sinn, wenn die anderen wissen, daß einer gerade definitiv pause macht. Und dann müssen sie auch grad dann überhaupt was zum senden haben.
Es ist einfach so, daß jeder warten muß, bis er den Bus kriegt.
Und die Datenmenge, die insgesamt (von allen Teilnehmern) über den Bus gesendet werden kann, hat Grenzen, und kannst du auch berechnen, nach message-länge und Bus-speed.
Das ist einfach eine Sache der Bilanz: wenn mehr gesendet wird als verarbeitet, kommst du in troubles.
Schau dir die Methoden bei anderen Collision-Bussen an (Ethernet), für µC ist das alles schwere Kost.
Lesezeichen