mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mit UART mehrere bytes im paket senden?


Autor: Malte Struebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist es möglich mit einem AVR ein Datenpaket von sagen wir 15 Byte länge
gleichzeitig zu übertragen?

Ich verwende im moment CodeVision AVR als C Compiler und die dort
verwendete Funktion putchar() kann ja immer nur ein byte übertragen,
wenn ich also mein ganzes Datenpaket senden will muss ich das 15 mal
aufrufen... ich denke wenn man es als ein paket schicken könnte würde
es sicher nen geschwindigkeitsvorteil geben und da meine Anwendung zum
Dataloggen ist kommt es da gerade auf Geschwindigkeit an.

bei bedarf poste ich gern mal die Routinen für das Put und get.

Gruß
Malte.

Autor: Andreas HOH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Häää? Ich glaub ich versteh das jetzt was nicht... Wie willst Du über
eine serielle Schnittstelle mehrere Datenpakete gleichzeitig senden?
Das geht gar nicht, da "gleichzeitig" immer nur ein einziges BIT
gesendet wird, also noch nicht mal ein Byte!

Stell es Dir mal so vor: Eine serielle Datenübertragung ist nichts
anderes als ein lichtschalter (=sender) und eine lampe (=empfänger).
Willst Du als Schalter der Lampe was mitteilen, muß Du sozusagen
"morsen": Licht an, an, aus, an, an, aus, an, aus. Damit hast Du der
Lampe das Byte (binär=)11011010 mitgeteilt, das entspricht den Hex-Wert
$DA, oder halt der ganz normalen dezimalen Zahl 218.

Soweit alles klar? (Wenn nicht, dann solltest Du Dich erstmal etwas
mehr mit den Grundlagen beschäftigen)

Da also Dein AVR anhand der Grundlagen einer seriellen Schnittstelle
immer nur ein Bit nach dem nächsten senden kann, verstehe ich nicht,
wie Du 15 Bytes(!) (=120Bits) als "ein paket" schicken willst...

Einen Geschwindigkeitsvorteil bekommst Du nur dann, wenn Du die
Datenrate (=BAUD) anhebst. Das ist die eizige Möglichkeit, mit einer
seriellen Schnittstelle schneller zu senden.

ciao,
Andi

Autor: Malte Struebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub ich hab mich da etwas missverständlich ausgedrück, natürlich
ist es klar das man Seriell immer nur eins nach dem anderen übertragen
kann.
Nur wenn ich immer nur ein Byte sende anstelle eines ganzen Bytestroms
an einem Stück, muss ich für jedes Byte einen Funktionsaufruf im AVR
machen der mich wiederrum ein paar Tacktzyklen kostet.

Es geht einfach darum ob es neben dem 1 Byte=1 Funktionsaufruf noch
eine andere elegantere bzw. schnellere möglichkeit gibt mehr als 1 Byte
zu übertragen.

Gruß
Malte.

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib dir eine Funktion die ein Array von zB 4 Bytes verschickt.


SG Josef

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von den AVR Freaks gibt es ein Codebeispiel für rs485.
Dort geht es darum, nach dem Versenden eines Datenpaketes möglichst
schnell wieder auf Empfang zu gehen.
In dem ganzen Code sind Funktionen drin, die das Erstellen und
Versenden eines Paketes ermöglichen. Da der 485 Treiber an die UART
angeschlossen wird, funktioniert diese ganze Paketsache also auch für
dein Vorhaben.


Dirk

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versendung von zB 17 Bytes :

UDR = 'D';
UDR = 'a';
UDR = 's';
UDR = 'i';
UDR = 's';
UDR = 't';
UDR = 'a';
UDR = 'b';
UDR = 'e';
UDR = 'r';
UDR = 'e';
UDR = 'i';
UDR = 'n';
UDR = 'f';
UDR = 'a';
UDR = 'c';
UDR = 'h';

Josef

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.