frage zur uart!!!

Gast #56024
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
Gast #56028
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.
Gast #56030
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.
Gast #56031
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
#56032
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren