Hallo Zusammen,
wie der Titel schon sagt, habe ich eine Frage oder eher ein Gedankenspiel zur seriellen Schnittstelle.
Ich kann meine GPS-Empfänger auf 9600, 19200, 38400, .... Baud einstellen. Die Datenmenge, die der uC empfängt, ist immer gleich. Wenn ich nur 2 Datensätze (GPRMC und GPGGA) auswerte, bin ich bei ca. 170 Byte. Bei mehr Datensätzen können es auch 500-600 Byte gesamt werden.
Meine Gedanken dazu: Je schneller ich die Baudrate einstelle, desdo schneller stehen sie dem uC zur Verarbeitung zur Verfügung, also müßte ich mehr Zeit für was anderes übrig haben. Die Frage ist aber, kann der uC die Daten überhaupt schneller verarbeiten, wenn sie schneller im RxD-Puffer stehen oder ist dessen Geschwindigkeit zu langsam, so daß das keine Rolle spielt? Also wer wartet auf wen? Der uC auf die Daten im Puffer oder läuft der Puffer bei höheren Baudraten über, weil der uC die Daten nicht schnell genug raus bekommt? Was ist also besser: Niedrige oder hohen Datenrate?
Gruss
Harry
PS: Wer meinen Gedanken nicht folgen kann, einfach diesen Thread ignorieren 
																
								
																	
																
								
							wie der Titel schon sagt, habe ich eine Frage oder eher ein Gedankenspiel zur seriellen Schnittstelle.
Ich kann meine GPS-Empfänger auf 9600, 19200, 38400, .... Baud einstellen. Die Datenmenge, die der uC empfängt, ist immer gleich. Wenn ich nur 2 Datensätze (GPRMC und GPGGA) auswerte, bin ich bei ca. 170 Byte. Bei mehr Datensätzen können es auch 500-600 Byte gesamt werden.
Meine Gedanken dazu: Je schneller ich die Baudrate einstelle, desdo schneller stehen sie dem uC zur Verarbeitung zur Verfügung, also müßte ich mehr Zeit für was anderes übrig haben. Die Frage ist aber, kann der uC die Daten überhaupt schneller verarbeiten, wenn sie schneller im RxD-Puffer stehen oder ist dessen Geschwindigkeit zu langsam, so daß das keine Rolle spielt? Also wer wartet auf wen? Der uC auf die Daten im Puffer oder läuft der Puffer bei höheren Baudraten über, weil der uC die Daten nicht schnell genug raus bekommt? Was ist also besser: Niedrige oder hohen Datenrate?
Gruss
Harry
PS: Wer meinen Gedanken nicht folgen kann, einfach diesen Thread ignorieren
 
																
 
																																													 
																																													 
																																													 . Man könnte, wenn meine Überlegung stimmt, jetzt annehmen, daß bei 9600 Baud und 170 Byte es ca. 177ms dauert, bis die Daten empfangen sind. Der Process hat Standard-Priorität 5, bekommt also 5xSysTick 10ms=50ms. Am Processanfang wird auf Daten gewartet, solange keine da sind springt er raus. Diese Daten kommen, wenn sie kommen garantiert am Stück ohne weitere Verzögerung. Bei 19200 Baud wäre ich bei ca. 89ms. Überlegung: Wenn der Process Daten bemerkt, die aber noch nicht vollständig da sind, fängt er an zu verarbeiten und vielleicht ist der Empfang fertig, bis der Process soweit ist? Ok 38400 Baud, 44ms Übertragungszeit und dem Process mehr Zeit (Prio 6-8) verschaffen? Nach 60-80ms wäre alles vorbei und der Rest hat großzügige 900ms Zeit für Display, SD & Co.
. Man könnte, wenn meine Überlegung stimmt, jetzt annehmen, daß bei 9600 Baud und 170 Byte es ca. 177ms dauert, bis die Daten empfangen sind. Der Process hat Standard-Priorität 5, bekommt also 5xSysTick 10ms=50ms. Am Processanfang wird auf Daten gewartet, solange keine da sind springt er raus. Diese Daten kommen, wenn sie kommen garantiert am Stück ohne weitere Verzögerung. Bei 19200 Baud wäre ich bei ca. 89ms. Überlegung: Wenn der Process Daten bemerkt, die aber noch nicht vollständig da sind, fängt er an zu verarbeiten und vielleicht ist der Empfang fertig, bis der Process soweit ist? Ok 38400 Baud, 44ms Übertragungszeit und dem Process mehr Zeit (Prio 6-8) verschaffen? Nach 60-80ms wäre alles vorbei und der Rest hat großzügige 900ms Zeit für Display, SD & Co.
