www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik frage zur uart!!!


Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
habe schon wieder eine frage.
wie kann ich denn bei der datenübertragung eine pause von 4bit
erzeugen?
mit einem atmega8!

kann mir da jemand helfen?
dachte an eine schleife oder so, aber wie bekomm ich da die zeit von
4bit hin?

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Bitzeit kannst Du aus der Baudrate errechnen und die Pause für 4 Bit
kannst Du entweder mit einem Timer oder mit einer Schleife realisieren.
In Assembler ist die Zeitbestimmung mit der Schleife einfach, weil Du
die Zeit für jeden einzelnen Befehl anhand der Befehlsliste ermitteln
kannst. Einfaches Beispiel:

nop
nop
nop
nop

Damit vertrödelt der Prozessor 4 Taktzyklen (was nicht identisch mit
Deiner 4-Bit-Pause ist).

Gruß, Frank

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ralph,
aus welchem Grund brauchst du denn die Verzögerung und soll die
Verzögerung zwischen den einzelnen Bytes sein?

Gruß Oliver

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi oliver!

ja, die pause soll immer zwischen jedem byte entstehen und is 4 bit
lang. also in meinem fall ca 400microsecunden.

hast du eine idee?

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich denke mit dem Hardware UART geht das nicht. Da hilft nur, das UART
selber per Software zu erzeugen ...

Dann ist es einfach!

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das mag sein. aber ich bin noch ein anfänger und kann es leider
nicht. habe es jetzt geschafft, dass das signal ausgegeben wird. fehlen
eben nur noch die pausen und das antriggern des signals.

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es da eine möglichkeit ein beispielprogramm irgendwo
herzubekommen??? damit ich mir das anschauen kann???

Autor: Hubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ralph
Hi,
bei den Links findest du einen Verweis auf den AVR delay loop
genearator, ein kleines Windows-Programm, das dir nach Vorgabe der Zeit
ein Stück Assembler-Code generiert. Den kannst du dann in dein Programm
mittels Drag/Drop importieren.

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ralph:

Tut mir leid, vergiss das mit dem Software UART!
Ich habe etwas überlesen. ich dachte, du willst nach jedem BIT 4 bit
Pause machen. Du hast aber Byte geschrieben.

Das geht natürlich auch mit dem Hardware UART, einfach mittels nops
nach dem Senden eines Bytes das Senden des nächsten verzögern. Eben wie
oben beschriben.

Ich werd die Beiträge nächstes Mal genauer lesen!

Grüße
Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du setzt einfach einen Timerinterrupt mit der Länge von 14 Bitzeiten auf
und in diesem startest Du dann immer das Senden des nächsten Bytes.

Alternativ könntest Du, wenn schon 2 Bitzeiten Pause reichen würden,
die UART auf 9 Bit + 2 Stopbits setzen.


Peter

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.