Forum: Mikrocontroller und Digitale Elektronik FiFo lesen bringt sporadisch Fehler


von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo allerseits,

ich habe hier eine kleine Funkübertragungsstrecke mit zwei gleichen 
Schaltungen aufgebaut, die je einen ATmega1284p und ein RFM23BP 
enthalten. Den Sender habe ich so eingerichtet, daß er unterschiedlich 
lange Strings nacheinander abwechselnd sendet. Der Empfänger gibt den 
empfangenen String aus dem Fifo per Uart (Fleury-lib) ans Terminal aus. 
Die Initialisierung habe ich per Excel-Datei heraus gefunden. Ich nutze 
Fifo-mode mit packethandler und auto-TX bei Erreichen des oberen 
Schwellwertes im Sende Fifo. 40 kbps. Zum Ablauf: pkvalid-IRQ wird 
abgewartet, dann der RX-Fifo gelesen und in ein Stringarray kopiert, 
RX-Fifo gelöscht, UART-Ausgabe, Empfang wieder eingeschaltet. SPI-Takt 
läuft mit 62500 Hz und bis 2 MHz getestet einwandfrei.

Oft stimmen die Ausgaben. Leider fehlen manchmal am Anfang der Ausgabe 
einige Zeichen. So ein bis 5 könnten das sein. Aufgrund des CRC gehe ich 
davon aus, daß bei der Funkübertragung nichts verloren geht. Bleibt also 
nur das Beschreiben oder Lesen des Fifos, jeweils im burst-mode. Es 
werden nur so viele Zeichen geschrieben, wie die Länge des Textes 
vorgibt.

Hat jemand so etwas schon mal beobachtet oder eine Idee, woher das 
kommen könnte? Andere UART-Ausgaben von Texten aus dem Flash oder aus 
Itoa erscheinen immer vollständig.

mit freundlichem Gruß

von Karl M. (Gast)


Lesenswert?

Hallo,

was "Die Initialisierung habe ich per Excel-Datei heraus gefunden." 
bedeutet das?

bei mir laufen 3x 57600 Bit/s per Software Uart im Interruptbetrieb über 
je einen Fifo. Da passiert nichts unerwartetes.

Ein RX-, bzw. TX-Fifo gehört zur Funktionalität des Moduls und diese 
fasse ich nicht direkt an, sonder schreib in das RX-Fifo und im 
Hintergrund wird es per Interruptroutine gelesen und somit geleert. Was 
(welche Daten) da nun drin steht, ist für die Fifo-Funktion unerheblich!

Da keiner dein Programm kennt, ist eine spezielle Antwort nicht möglich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.