Ringpuffer Zählerproblem

Gast #2452179
Lesenswert?

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
char uartbuf[30];
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren