PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Software-UART mit ATmega16 bzw. 32



r.salfer
29.11.2005, 14:04
Hallo,

ich erstelle z.Zt. ein Programm für einen ATmega16/ATmega32 unter Verwendung eines STK500 und AVRStudio. Dabei habe ich folgendes Problem:

Das Programm soll neben der vorhandenen Hardware-UART eine Software-UART verwenden, die nur Daten senden soll. Ich habe mehrere SW-UART-Libs ausprobiert, aber jede dieser Libs liefert am RS232-Port des STK500 nur Datenmüll auf der Tx-Leitung.

Aktuelle Hardware-Konfiguration:
- STK500 mit ATmega16 bzw. ATmega32
- Controller verwendet Takt vom STK500 (3.6864 MHz)

Ausprobierte Software-UARTs:
- avr-libc (sowohl uartsw als auch uartsw2)
- ATMEL Application Note für eine timergesteuerte SW-UART
- ATMEL Application Note für eine SW-UART ohne Timer

Die Hardware-UART (uart.c der avr-libc) funktioniert ganz normal, also schließe ich mal aus, dass der Controller einen falschen Takt verwendet.

Kann mir bitte jemand weiterhelfen ? Ich bin wirklich langsam am Verzweifeln.

Vielen Dank.

Tschüss

Rico

PicNick
29.11.2005, 15:21
Vielleicht hilft dir da was drinnen. Es ist SoftUart Inp / Outp
und eine Muster, das funzt.
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=240

bluebrother
29.11.2005, 17:25
die AppNotes sollten eigentlich funktionieren -- musst du da evw. noch ein paar Konstanten anpassen damit du die richtige Frequenz hinkriegst? Oder kannst du mit nem Oszi mal gucken was auf den Leitungen passiert? Das klingt irgendwie alles sehr nach falscher Geschwindigkeit.

r.salfer
01.12.2005, 09:58
Vielen Dank an alle, die sich gemeldet haben.

Ich hab's mit der uartsim.c (siehe erste Antwort) hingekriegt, indem ich die Timing-Konstanten für 3.69 MHz neu berechnet und etwas nach oben verschoben habe.

Bei den anderen SW-UARTS waren es wirklich falsche Timing-Werte, nur bin ich davon ausgegangen, dass die Formeln, mit denen diese Libs die Timing-Werte berechnen, für jede Frequenz und Baudrate unverändert angewendet werden können.

Tschüss

Rico

jagdfalke
03.12.2005, 13:42
Hi, mal ne Frage zu dem uartsim.c :
Wie mach ich das wenn ich das Ding benutzen will? Muss ich es per include einbinden? Oder Komplett in mein .c-File kopieren? Und was für Einstellungen muss ich vornehmen? Funktioniert das auch auf meinem rnbfra 1.1 mit atmega32 ?

mfg
jagdfalke

PicNick
03.12.2005, 15:57
Das Uartsim ist auf einer RNBFRA 1.2 entwickelt worden und läuft dort als Tastatur-Echo (eigentlich ja überflüssig, da ja eine HW-Uart im Mega32 drin ost).
Es ist nur darum gegangen, das mal durchzuziehen.
Man müßte das Program zu mehreren Library-functions umbauen, eigentlich nix für Frischoperierte und Bettlägrige
Du brauchst ja eh' nur das Senden ?

jagdfalke
03.12.2005, 16:51
ja nur das Senden interessiert mich. Gibts denn dann irgendein fertiges Lib oder muss ich das selber machen ?

BTW: Was bedeutet "Frischoperierte" und "Bettlägrige" ??? Ich bin weder operiert worden noch lieg ich im Bett :D Was willst du damit sagen ???

PicNick
04.12.2005, 09:55
Das ist halt so'n Ausdruck. Frischoperierte und Bettlägrige sind alles Leute, die geschont werden müssen und keine Aufregung oder Anstrengung vertragen.
Und da ist so ein Gefummel mit Libraries bauen nicht optimal