Gast
#4740503
Hallo, ich wollte gerne ein 8-Bit wert Binär ausgeben, habe folgenden Code erstellt, ist der so gut oder gibt es da was besseres?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
line ändert sich durch die Ports. Gruß Bernd
|
Anzeige
|
Einfach Binär Ausgabe am UART
Gast
#4740503
Hallo, ich wollte gerne ein 8-Bit wert Binär ausgeben, habe folgenden Code erstellt, ist der so gut oder gibt es da was besseres?
line ändert sich durch die Ports. Gruß Bernd
Gast
#4740506
Der Code ist super so. Ich würde nichts ändern. Zumindest solange ich nicht mehr über das Problem weiss, weil das komplett vergebene Zeit wäre.
Gast
#4740509
Wenn damit von der USART das gesendet wird, was du möchtest, ist das (wie mein Vorgänger schon schrieb) voll OK. Wenn nicht, musst du das mit "line" und "Port" und ... mal genauer erklären. Vieleicht als Schleife?
Gast
#4740512
ok, was Rechnet in dem Mikrocontroller schnell? die Schleife oder 8 mal (49-!(line & (1<<7))) Am schnellsten ist Dein Code, wenn Du jegliche Sprünge und Schleifen vermeidest. Ob das sinnvoll ist, steht auf einem anderen Blatt. Die UART wird dadurch nicht schneller. Muss es schneller werden? Erklär doch mal Dein Problem. Und zwar wirklich das Problem. Vollständig! Gruß Jobst
Gast
#4740536
Bernd schrieb: > ok, was Rechnet in dem Mikrocontroller schnell? Das ist ziemlich egal. Die Ausgabe kostet die Zeit. Bernd schrieb: > ist der so gut oder gibt es da was besseres? Viele Empfänger könnten mit deinem eigenwilligen Zeilenabschluss Probleme haben. Zumindest in der Windows-Welt ist meist <CR><LF> üblich und nicht umgekehrt. Aber es kann natürlich sein, dass dein Empfänger sein eigenes Süppchen kocht. Bernd schrieb: > USART_Transmit(49-!(line & (1<<7))); Irgenwie widerstrebt mir, daß hier das Ergebnis einer logischen Operation als Zahl weiterverarbeitet wird. Wie wäre es statt dessen mit dem Fragezeichen: USART_Transmit(line & (1<<7)?'1':'0');
Gast
#4740918
hi, mag sein, doch der Code mit
ist Langsamer als
das ist wesentlich schnell in der Ausführung auf dem µC Gruß Bernd Bernd schrieb: > hi, mag sein, doch der Code mit > > USART_Transmit(line & (1<<7)?'1':'0'); > (...) > > ist Langsamer als > > USART_Transmit(49-!(line & (1<<7))); > (...) > > das ist wesentlich schnell in der Ausführung auf dem µC Wie kommst Du zu dieser Erkenntnis? Das mit Abstand langsamste überhaupt ist der Aufruf von USART_Transmit(). Das braucht nämlich so lange wie das Senden eines Zeichens über die serielle Schnittstelle. Bei 9600 Baud also etwa 1 Millisekunde. Das dürfte gut das tausendfache von dem sein, was der Rest braucht. Daß hingegen der Ausdruck
langsamer sein soll als das hier
das bezweifle ich. Was soll da langsamer sein? Und vor allem, was soll da in Relation zur Ausführungsdauer von USART_Transmit "langsamer" sein?
Gast
#4740980
ja, das die Anzeige Langsam ist, ist klar. Aber wenn ist zwei µC einer mit den Zeile mit ? und der Andere mit - Zeile an einer Spannungsversorgung start. Kann der mit - mehr Zeile in das Terminal bringen, und beim tausch der Programmierung ist der zweite dann schneller. Bernd schrieb: > Kann der mit - mehr Zeile in das Terminal bringen, und beim tausch der > Programmierung ist der zweite dann schneller. Das hast Du jetzt auf welche Art und Weise ermittelt?
Gast
#4741237
in dem ich die beiden µC an jeweils einem COM Port habe und in zwei Terminals die anzeige mache. Über die Pipes die Zeilen zähle. Die Controller werden mit einem FET beide eingeschaltet.
getauscht habe ich alles schon C2 an Com1 und C1 an Com2, auch die Stromversorgung von C1 und C2 gegenseitig. Und da die µC gesockelt sind auch diese gegenseitig getauscht. Es ist immer der Mega mit dem Code 49-!(line & (1<<7)) schneller. Und es ist ja alles andere Identisch. Und was heißt "schneller"? Beide arbeiten mit 9600 Baud, also 960 Zeichen pro Sekunde. Wieviele Zeichen sendet der eine, wieviele Zeichen sendet der andere? Hast Du Dir mal den Assemblercode angesehen, den die beiden Ausdrücke > line & (1<<7)?'1':'0' > > 49-!(line & (1<<7)) erzeugen? Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|