mikrocontroller.net

Forum: PC-Programmierung FIFO-Speicher Überlauf


Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
Bei einer Applikation werden Messdaten in einem FIFO-Speicher geschleift 
und dann alle 5ms an einer Steuerung geschickt.
Wie kann man sicher sein bzw feststellen dass der FIFO-Speicher nie voll 
wird?
Ich meine kann man einen Fehler bauen oder simulieren so dass der 
FIFO-Speicher voll wird? um zu prüfen ob das Programm eine entsprechende 
Fehlermeldung schickt?

Gruß F

: Verschoben durch Moderator
Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Wie kann man sicher sein bzw feststellen dass der FIFO-Speicher nie voll
> wird?

Indem man die Daten garantiert schneller abholt/verarbeitet als die
Quelle sie füttern kann.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn weniger Daten am Ziel ankommen als am Sensor generiert wurden, dann 
fehlt was ;)

Also ich weiß nicht wie der FIFO programmiert ist, aber bei meiner 
Implementation geht bei einem Überlauf der gesamte Bufferinhalt auf 
einmal verloren und er macht dann weiter als wäre nichts...

Autor: jasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Ich meine kann man einen Fehler bauen oder simulieren so dass der
> FIFO-Speicher voll wird? um zu prüfen ob das Programm eine entsprechende
> Fehlermeldung schickt?

Uuhhhh, wie jetzt?

Einfach keine Daten aus dem FIFO auslesen, dann wird er doch voll- und 
ueberlaufen?

Oder meintest Du was total anderes als Du schrobst?

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen

es geht um ein Prüfprogramm bei dem eine MDF(enthält Messdaten) geöffnet 
wird und bearbeitet.
Die Messdaten werden zuerst in einem FIFO geschleift und dann zur 
Steuerung geschickt. Da es auch eine Dauerprüfung gedacht muss vorher 
sichergestelt werden dass der FIFO nie überlaufen wird bzw wenn er voll 
ist dann muss das Prüfprogramm einen Fehler zurückmelden.
Meine Frage ist wie man das simulieren kann bzw extra einen Fehler bauen 
um dies zu überprüfen.
AN programm selbst kann ich nichts ändern

Gruß F

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Die Messdaten werden zuerst in einem FIFO geschleift und dann zur
> Steuerung geschickt. Da es auch eine Dauerprüfung gedacht muss vorher
> sichergestelt werden dass der FIFO nie überlaufen wird bzw wenn er voll
> ist dann muss das Prüfprogramm einen Fehler zurückmelden.

Dann musst Du den Punkt "und dann zur Steuerung geschickt" halt drosseln 
bzw. anhalten.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Dann musst Du den Punkt "und dann zur Steuerung geschickt" halt drosseln
> bzw. anhalten.

du meinst die Verbindung trennen?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie auch immer das bei Dir implementiert sein mag kannst nur Du wissen. 
Wenn der Teil, der dafür zuständig ist, mit der Steuerung zu 
kommunizieren, mitbekommt, daß die Steuerung keine Daten mehr 
entgegennimmt, dann ließe sich damit vermutlich das Verhalten erzielen.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt's anderen Weg oder idee wie man einen FIFO Speicher auf Überlauf 
testen kann?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein. Gibt es nicht. Ein Fifo läuft nur dann über, wenn er schneller 
beschrieben wird, als er ausgelesen wird.

Wenn Du die Auslesegeschwindigkeit nicht ändern kannst, könntest Du 
versuchen, an der Füllgeschwindigkeit zu arbeiten, aber davon abgesehen 
gibt es keine anderen Möglichkeiten.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> an der Füllgeschwindigkeit zu arbeiten, aber davon abgesehen
> gibt es keine anderen Möglichkeiten.

was meinst du denn damit

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll ich damit meinen? Ein Fifo wird von einer Seite befüllt und von 
einer anderen entleert.

Das schreibst Du ja auch selber:

> Bei einer Applikation werden Messdaten in einem FIFO-Speicher
> geschleift und dann alle 5ms an einer Steuerung geschickt.

Du musst also entweder seltener als alle 5ms Datensätze an die Steuerung 
weiterreichen oder mit mehr als 200 Datensätzen pro Sekunde das Fifo 
befüllen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Rufus Τ. Firefly schrieb:
>> an der Füllgeschwindigkeit zu arbeiten, aber davon abgesehen
>> gibt es keine anderen Möglichkeiten.
>
> was meinst du denn damit

Wenn du testen willst, ob der Überlauf deiner Badewanne funktioniert 
gibt es nur 2 Möglichkeiten:

Entweder du vergrößerst den Wasserzulauf auf Feuerwehrschlauch-Niveau 
oder du stopfst den Abfluss zu.

Wenn du an die Badewanne selber rankommst, kannst du zusätzlich zum 
normalen Wasserzulauf auch noch eimerweise selber Wasser zuschütten. 
Aber laut deiner Aussage hast du ja diese Option nicht.

Also bleiben dir nur diese beiden Möglichkeiten.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz Buchegger schrieb:
> Entweder du vergrößerst den Wasserzulauf auf Feuerwehrschlauch-Niveau
> oder du stopfst den Abfluss zu.

ich kann natürlich die Verbindung zwischen Steuergerät und 
Mikrocontroller trennen und somit werden keine Daten zur Steuerung 
geschickt. Aber ich gehe davon aus dass das Programm einen 
Kommunikation-Fehler melden wird das heisst in diesem Fall kann den 
FIFO-speicher auf Überlauf nicht prüfen.

Die 2te Variante war dass ich die Datenmenge die der Speicher holen kann 
vergrößen muss. Das heisst wenn der Speicher 1mm Messwerte einliest dann 
soll ich die menge auf 200 erhöhen
Darauf habe ich leider keinen Einfluß ich weiss nur dass die MDF datei 
schrittweise eingelesen wird und zwar alle 10ms werden zB. 100 Messwerte 
eingelesen.
Die Datei liegt in einem vordefienierten Verzeichniss und wird durch 
Knopfdurck "Messung_Starten" geöffnet

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter diesen Rahmenbedingungen, wenn Du also weder das eine noch das 
andere beeinflussen kannst, kannst Du Deinen gewünschten 
Fifo-Überlauftest nicht durchführen.

Wasch mich, aber mach mich nicht nass.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Karl Heinz Buchegger schrieb:
>> Entweder du vergrößerst den Wasserzulauf auf Feuerwehrschlauch-Niveau
>> oder du stopfst den Abfluss zu.
>
> ich kann natürlich die Verbindung zwischen Steuergerät und
> Mikrocontroller trennen und somit werden keine Daten zur Steuerung
> geschickt.

Was zu beweisen wäre.
Wenn dein µC, so wie meistens, die Daten einfach rausbläst und sich 
nicht darum kümmert ob ihm wer zuhört, dann kannst du die Verbindung 
trennen und der FIFO läuft deswegen immer noch nicht über.

Ein nicht angestecktes Kabel bedeutet nicht automatisch, dass deswegen 
keine Daten an diesem Anschluss rausgesendet werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.