Zitat Zitat von SlyD
Der Schreibpointer wie auch der Lesepointer MUSS vom Master kontrolliert werden damit der Slave weis welches Register gemeint ist.
Lötzinn :P
Noch mal...
Würde ich (bzw. Du damals) die Daten nicht sofort in die Slaveregister schreiben, wäre ein Ringbuffer natürlich das Mittel der Wahl... keine Frage, und dann stimmt natürlich alles was Du gesagt hast. Wir reden aber beim TWI immer noch über Registeraccess und NICHT über UART/ISO-OSI

Zitat Zitat von SlyD
Schau Dir erstmal an wie ein Ringbuffer funktioniert (google).
Du das weis ich aber ich bleibe dabei das wir uns missverstehen Und ich hoffe die Aussage da klärt es nun. Ich gebe dir vollkommen recht wenn man keine Register sondern eine Pipe verwenden würde... aber schau dir vielleicht einfach den geänderten Code mal an... ich ändere nichts am Prinzip was Du mal vorgegeben hast, ich mache ihn nur gängig. Alle Daten landen sofort im RAM, und zwar in den Slave Registern. Ein Ringbuffer ist unnötig und hilft nicht, das Receiverpüroblem zu lösen. Es wäre nur weitere RAM verbraucht.. für nix. Ob ich ein N-Dimensionales Array als Ringbuffer verwende oder die Daten direkt ins RAM auf die Registerplätze schreibe, ist Pott wie Deckel. Für die ISR ebenso wie für verlorene Zeichen.

I2CTWI_writeRegisters[current_register++] = TWDR;

sagt doch alles, oder?
Mit der Aussage bezüglich Read/Write Register oben lag ich übrigends daneben wie ich jetzt sehe... tut aber nichts zur Sache.

LG RolfD