Gast
#390816
Guten Tag, könnte mir jemand einen Tip geben, warum zwischen den folgenden beiden Code-Versionen für eine Ring-Puffer-Implementierung (dsPic30F6014, C30) ein Unterschied sein könnte: //defines und deklarierte Variablen .. #define rvmask 15 unsigned int rxbuf[rvmask+1]; unsigned char rxbufp=0; unsigend int rxr; .. //Code-Version 1: .. rxbufp = (rxbufp++)&rvmask; rxr = rxbuf[rxbufp]; .. //Code-Version 2: .. rxbufp++; rxbufp = rxbufp&rvmask; rxr = rxbuf[rxbufp]; .. Die zweite Code-Version funktioniert einwandfrei, während bei der ersten die Maskierung von rxbufp überhaupt nicht funktioniert und der Ring-Puffer-Indexierung fehlschlägt. rxbufp wird nicht wieder auf Null gebracht beim überschreiten von rvmask (erst beim char-overflow von 255->0 wird der Wert automatisch wieder Null). Wieso das? Hat jemand eine Idee. Vielen Dank. S. Leven