Hallo,
ich oute mich mal als Anfänger und Programmierleihe. Also bitte nicht 
erschlagen.
Für ein Bastelprojekt versuche ich den Laser-Rotations-Scaner YDLIDAR X4 
auszuwerten. Leider klappt nicht alles so wie es soll. Das Programm 
läuft und es werden mir auch plausible Werte angezeigt. Auf das letzte 
halbe Grad Auflösung oder den letzten 1/4mm habe ich bewusst verzichtet. 
Zum ersten mal habe ich mich an einen Ringbuffer gewagt, dort vermute 
ich auch das Problem.
Der Sensors Selbst sendet seine Daten kontinuierlich über 
UART (Baud 
128000).
Vor jedem Schreibvorgang in den Buffer wird dieser auf 0 geprüft. Das 
ist manchmal nicht der Fall. Manchmal heißt: das es immer an einer 
anderen Stelle im Buffer vorkommt. Woher diese Werte kommen konnte ich 
nicht herausfinden. Da die Werte in dieser Reihenfolge oder an dieser 
Stelle zuvor nicht empfangen wurden. Den Empfang habe dafür mittels LA 
mitgeschrieben. Auch ein löschen, des Buffers, nach Abarbeitung eines 
vollständigen Datensatzes bis zum nächsten Header hat nichts geholfen.
Auch habe mindestens 3 mal geprüft ob wirklich alle Pakete aus dem 
Datensatz abgearbeitet werden.
Zweiter Punkt warum ich vermute das es am Ringbuffer liegt. Die 
CheckCode Auswertung (Prüfsumme) löst aus, aber nur wenn ich beim lesen 
aus dem Ringbuffer über das Bufferende komme. Und dann auch nur in ca. 
5% der Fälle.
Ich Denke ich habe einen Fehler im Code, den ich einfach nicht finden 
kann.
Anbei das Lauffähige Minimalprogramm. Ohne die Datei LCD, da hier nur 
ganz simple ein 0815 LCD angesteuert wird. Ohne LCD-Anzeige (ja mit 
delay...) tritt der Fehler häufiger auf...
µC: ATXMega256A3BAU (32MHz)
Ich hoffe jemand ist so nett und kann mir einen Tipp geben, wo ich den 
Fehler noch suchen kann.
vielen Dank schonmal
			
		
 
	
Lesezeichen