Hallo Leute,
ich habe bei für meinen Mikrocontroller einen Ringpuffer programmiert
und der macht mir etwas problem. Das Problem ist, dass ich daten zum
mikrocontroller schicke und dieser dann eine Spannung ausgibt. Leider
gibt es zuviele Ausreißer (0V). Ich vermute, dass es am Ringpuffer
liegt, da sich die Fehlerquote mit änderung der Puffergröße verändert.
Ich poste einfach mal meinen Quellecode und ihr könnt euch lustig machen
;-).
1 | interrupt (UART1RX_VECTOR) usart1_rx (void)
|
2 | {
|
3 | uartbuf[uartpos] = U1RXBUF;
|
4 | uartpos++;
|
5 | if (uartpos==30)
|
6 | {
|
7 | uartpos=0;
|
8 | }
|
9 | }
|
[c]
char *pch;
int j=0;
int Trans;
char *command;
char *val1s;
char Buffer[11];
if (abs(uartpos-uartlesen)>10)
{
for(j=0;j!=11;j++)
{
Buffer[j]=uartbuf[uartlesen];
uartlesen++;
if (uartlesen==30)
{
uartlesen=0;
}
}
pch = strtok (Buffer,"#_");
for(j = 0; pch != NULL; j++)
{
if(j == 0) command = pch;
if(j == 1) val1s = pch;
pch = strtok (NULL,"#_");
}
Trans =atoi(val1s);
Output (command,Trans);
}
}
Hoffe der Quellecode ist so okay und es handelt sich vielleicht nur um
einen Zähler fehler.
Wenn der Rinpuffer 30 zeichen groß ist, liegt die Fehlerquote bei ca.10%
bei 130 zeichen bei ca 1,4 %.
danke schonmal
lisa