Using the UART/de
m (1 revision) |
(→SOFTWARE UART) |
||
(7 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | + | = <span class="f_Header">UART</span> = | |
− | + | Ein Universal Asynchronous Receiver and Transmitter (UART) kann benutzt werden um Daten zwischen zwei Geräten zu senden und zu empfangen. Diese zwei Geräte können sein: PC-zu-PC, PC-zu-Mikrocontroller oder Mikrocontroller-zu-Mikrocontroller. Die UART Kommunikation benutzt TTL Spannungen von +5V and 0V oder LVTTL abhängig von der Mikrocontroller Betriebsspannung. | |
| | ||
− | + | Wenn eine Verbindung zum PC gewünscht wird dann muss das RS232-Protokoll verwendet werden. Das bedeutet, dass mit definierten Spannungen (+15V und -15V) kommuniziert werden muss. Die kann mit einem MAX232 Level-Shifter erreicht werden. | |
| | ||
− | + | Die Hardware wird im folgenden Schaltplan dargestellt: | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 17: | Line 17: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Der DB-9 Anschluss hat 9 Pins aber es müsse nur 3 davon benutzt werden. Die obige Grafik zeigt die Vorderansicht - gelötet wird auf der anderen Seite. Bei den meisten Anschlüssen sind die Pinbezeichnungen auch auf den Steckern und Buchsen selbst zu lesen. | |
| | ||
− | + | Wenn der verwendete Mikrocontroller HW-UART nicht unterstützt dann kann auch Software-UART benutzt werden. Siehe unten. Wenn der Mikrocontroller einen HW-UART unterstützt dann werden die TxD und RxD Pins mit TxD und RxD im Schaltplan verbunden. Wenn der Mikrocontroller mehrere HW-UARTs hat dann werden die TxD0 und RxD0 Pins mit TxD und RxD entsprechend obigem Schaltplan verbunden. | |
− | + | Nun muss per Programm der Mikrocontroller initialisiert werden. Öffnen Sie dazu eine neue .bas Datei und fügen Sie die folgenden Programmzeilen am Anfang hinzu. | |
| | ||
− | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$regfile</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">" | + | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$regfile</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">"verwendeter_mikrocontroller def.dat"</span> |
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$crystal</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> 8000000</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$crystal</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> 8000000</span> | ||
Line 35: | Line 35: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Stellen Sie sicher, dass der benutzte Mikrocontroller mit $regfile angegeben wird - zum Beispiel der ATMega32 | |
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$regfile</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">"m32def.dat"</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$regfile</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">"m32def.dat"</span> | ||
Line 41: | Line 41: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Einige Mikrocontroller können einen internen Oszillator als Taktquelle verwenden. Einige Mikrocontroller verwenden den internen Oszillator standardmäßig. Bei Benutzung eines internen Oszillators braucht man keinen (externen) Quarz. | |
| | ||
− | <span style="font-family: Arial; font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;"> | + | <span style="font-family: Arial; font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;">Führen Sie diesen Schritt nur aus wenn Sie einen internen Oszillator verwenden.</span> |
− | + | Öffnen Sie den BASCOM-AVR Programmer wie folgt: | |
Line 58: | Line 58: | ||
|- valign="baseline" style="vertical-align: baseline;" | |- valign="baseline" style="vertical-align: baseline;" | ||
| width="13" | <span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial;">•</span> | | width="13" | <span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial;">•</span> | ||
− | | | + | | Wählen Sie den “Lock and Fuse Bits” Tab aus und and maximimieren Sie das Programmer-Fenster. |
|} | |} | ||
</div><div style="padding: 0px; margin: 0px -84px 0px 11px;"> | </div><div style="padding: 0px; margin: 0px -84px 0px 11px;"> | ||
Line 64: | Line 64: | ||
|- valign="baseline" style="vertical-align: baseline;" | |- valign="baseline" style="vertical-align: baseline;" | ||
| width="13" | <span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial;">•</span> | | width="13" | <span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial;">•</span> | ||
− | | | + | | Prüfen Sie, ob Sie den folgenden “Fusebit” Abschnitt sehen: |
|} | |} | ||
</div> | </div> | ||
"1:Divide Clock by 8 Disabled" | "1:Divide Clock by 8 Disabled" | ||
− | | + | und |
"Int. RC Osc. 8 MHz; Start-up time: X CK + X ms; [CKSEL=XXXX SUT=XX]" | "Int. RC Osc. 8 MHz; Start-up time: X CK + X ms; [CKSEL=XXXX SUT=XX]" | ||
Line 79: | Line 79: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Diese Einstellungen gibt es nicht bei jedem AVR Mikrocontroller. Wenn Sie die Einträge bei sich nicht haben dann ändern Sie nicht irgendwelche Fuse Bits. | |
+ | |||
| | ||
− | + | Wenn diese Einstellungen verfügbar sind aber mit anderen Werten dann ändern Sie die Werte durch die Drop Down Möglichkeiten. Schließlich klicken Sie den "Program FS" Knopf und dann "Refresh" um die tatsächlichen Einstellungen zu sehen. | |
| | ||
− | + | Verbinden Sie nun Mikrocontroller und PC mit einem Kabel mit DB-9 Anschluss | |
+ | |||
+ | Schreiben Sie ein Testprogramm für Ihren Mikrocontroller welches folgendermaßen aussehen sollte: | ||
− | |||
| | ||
− | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$regfile</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">"m32def.dat"</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 0);">' | + | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$regfile</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">"m32def.dat"</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 0);">'Verwendeter Mikrocontroller</span> |
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$crystal</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> 8000000 </span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">$crystal</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(255, 0, 0);">=</span><span style="font-family: Courier;"> 8000000 </span> | ||
Line 103: | Line 105: | ||
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Do</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Do</span> | ||
− | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);"> Print</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">" | + | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);"> Print</span><span style="font-family: Courier;"> </span><span style="font-family: Courier; color: rgb(0, 128, 128);">"Hallo Welt"</span> |
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Waitms</span><span style="font-family: Courier;"> 25</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Waitms</span><span style="font-family: Courier;"> 25</span> | ||
Line 115: | Line 117: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Öffnen Sie nun Das BASCOM Terminal-Programm und stellen Sie die Verbindungseinstellungen unter “Terminal” -> “Settings” ein. Wählen Sie den Com-Port wie am PC und stellen Sie eine Baudrate ein von 19200, Parity none, Data bits 8, Stop bits 1, Handshake none, emulation none. | |
| | ||
Line 123: | Line 125: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Wenn Sie das "Hallo Welt" im BASCOM Terminal Emulator Fenster angezeigt bekommen dann ist alles in Ordnung. | |
| | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Beispiel</span> = |
− | + | Sie können auch das folgende Programm mit dem BASCOM Terminal Emulator ausprobieren welches verschiedene Sende- und Empfangs-Befehle demonstriert. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 141: | Line 143: | ||
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Dim</span><span style="font-family: 'Courier New';"> Akey </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Byte</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Dim</span><span style="font-family: 'Courier New';"> Akey </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Byte</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Bytevariable deklarieren</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 147: | Line 149: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Hallo, geben Sie irgendein alphanumerisches Zeichen ein.."</span> |
− | <span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Waitkey | + | <span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Waitkey wartet bis ein Zeichen von der UART empfangen wird</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> Akey</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> Akey</span> | ||
Line 159: | Line 161: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Danke! Wie Sie sehen gibt der Mikrocontroller eine Zahl aus."</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"aber nicht das getippte Zeichen."</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 169: | Line 171: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Probieren Sie nun die Enter-Taste.."</span> |
<span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span> | <span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span> | ||
Line 181: | Line 183: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Die Zahl die Sie sehen ist der ASCII-Wert des eingetippten Zeichens."</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Wir müssen die Zahl wieder zurück umwandeln in das eingetippte Zeichen..."</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Beachten Sie die Funktion dieser Zeile..</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Geben Sie wieder ein alphanumerisches Zeichen ein..."</span> |
<span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span> | <span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'Courier New';">akey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'Courier New';">akey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Beachten Sie was hier passiert</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Jetzt klappt es!"</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 201: | Line 203: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"In vielen Situationen reicht ein Tastendruck nicht aus..."</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Geben Sie nun Ihren Namen ein und dann Enter zum Bestätigen"</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Dim</span><span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">String</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">*</span><span style="font-family: 'Courier New';"> 12 </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Dim</span><span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">String</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">*</span><span style="font-family: 'Courier New';"> 12 </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Zeichenkettenvariable deklarieren</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 217: | Line 219: | ||
<span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span> | <span style="font-family: 'Courier New';">Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span><span style="font-family: 'Courier New';"> Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> 13 </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Then</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Goto</span><span style="font-family: 'Courier New';"> Thanks </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span><span style="font-family: 'Courier New';"> Akey </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> 13 </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Then</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Goto</span><span style="font-family: 'Courier New';"> Thanks </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Bei Enter zu thanks springen</span> |
− | <span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">+</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'Courier New';">akey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">+</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'Courier New';">akey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Zeichen an Zeichenkette anhängen/span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Loop</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Loop</span> | ||
Line 227: | Line 229: | ||
<span style="font-family: 'Courier New';">Thanks</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">:</span> | <span style="font-family: 'Courier New';">Thanks</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">:</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Vielen Dank"</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">;</span><span style="font-family: 'Courier New';"> Inputstring </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">;</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" !"</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Beachten Sie die Funktion des Semikolons ; für mehrere Parameter</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 235: | Line 237: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Sehen Sie sich den Programm-Code an und versuchen Sie zu verstehen,"</span> |
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"wie das Programm arbeitet. Drücken Sie auch F1 während die Schreibmarke auf einem Befehl steht."</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Wenn Sie alles verstanden haben dann gehen Sie weiter zum nächsten Beispielprogramm."</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 251: | Line 253: | ||
= <span class="f_Header">ASCII</span> = | = <span class="f_Header">ASCII</span> = | ||
− | + | Wie Sie im vorigen Beispiel gesehen haben benutzen wir den PRINT Befehl um irgendetwas zur UART zu senden. Genaugenommen senden wir nicht einfach Text sondern wir senden ASCII-Zeichen. ASCII heißt American Standard Code for Information Interchange. ASCII ist eine Tabelle mit 127 Zeichen. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | <span style="font-family: 'Courier New';">ASCII | + | <span style="font-family: 'Courier New';">ASCII Tabelle (unvollständig)</span> |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | <span style="font-family: 'Courier New';"> | + | <span style="font-family: 'Courier New';">Dezimal Hex Binär Wert</span> |
<span style="font-family: 'Courier New';">------- --- ------ -----</span> | <span style="font-family: 'Courier New';">------- --- ------ -----</span> | ||
Line 289: | Line 291: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Die vollständige ASCII Tabelle finden Sie [[ASCII_chart|hier]] | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header">CARRIAGE RETURN (CR) | + | = <span class="f_Header">CARRIAGE RETURN (CR) UND LINE FEED (LF)</span> = |
− | + | Im vorigen Beispiel konnten Sie auch sehen, dass ein weiterer PRINT Befehl den Text in die nächste Zeile schreibt. Das kommt dadurch, dass der PRINT Befehl immer auch die CR und LF Zeichen anhängt uns ausgibt. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Wenn wir schreiben: | |
<span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(0, 128, 128);">“ABC”</span> | <span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(0, 128, 128);">“ABC”</span> | ||
− | + | dann senden wir 65 66 67 13 10 to the UART. (Im Binär-Format) | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Das Carriage Return Zeichen (13) bewegt die Schreibmarke zurück zur Position 0 der aktuellen Zeile. Das line feed (10) bewegt die Schreibmarke in die nächste Zeile. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 313: | Line 315: | ||
<span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(0, 128, 128);">“ABC”</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">;</span> | <span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(0, 128, 128);">“ABC”</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">;</span> | ||
− | + | Wenn wir ein Semikolon (;) am Ende der Zeile benutzen ... | |
− | + | sendet BASCOM kein carriage return/line feed so dass man weiteren Text nach dem ABC auf der selben Zeile schreiben kann. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 321: | Line 323: | ||
<span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(0, 128, 128);">“ABC”</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">;</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'MS Reference Sans Serif';">13</span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">) ;</span> | <span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(0, 128, 128);">“ABC”</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">;</span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold;"> </span><span style="font-family: 'MS Reference Sans Serif'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'MS Reference Sans Serif';">13</span><span style="font-family: 'MS Reference Sans Serif'; color: rgb(255, 0, 0);">) ;</span> | ||
− | + | Das würde nur ABC CR senden. Der nachfolgende Text würde das ABC überschreiben. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Übersicht</span> = |
− | + | Hier finden Sie einige Befehle, die in Zusammenhang mit UART-Kommunikation benutzt werden können: | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 333: | Line 335: | ||
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: Courier; color: rgb(255, 0, 0);">()</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Waitkey</span><span style="font-family: Courier; color: rgb(255, 0, 0);">()</span> | ||
− | Waitkey | + | Waitkey wartet bis ein Zeichen im seriellen Puffer empfangen wird. |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 339: | Line 341: | ||
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Ischarwaiting</span><span style="font-family: Courier; color: rgb(255, 0, 0);">()</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Ischarwaiting</span><span style="font-family: Courier; color: rgb(255, 0, 0);">()</span> | ||
− | + | Gibt eine 1 zurück wenn ein Zeichen im Hardware UART Puffer ansteht. | |
| | ||
Line 345: | Line 347: | ||
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Inkey</span><span style="font-family: Courier; color: rgb(255, 0, 0);">()</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Inkey</span><span style="font-family: Courier; color: rgb(255, 0, 0);">()</span> | ||
− | Inkey | + | Inkey gibt den ASCII-Wert des ersten Zeichens aus dem seriellen Eingabe-Puffer zurück. |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 351: | Line 353: | ||
<span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | <span style="font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);">Print</span> | ||
− | + | Sendet eine variable oder eine konstante Zeichenkette zum UART. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 359: | Line 361: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Ein weiiteres Beispiel</span> = |
+ | |||
+ | Dieses Beispiel zeigt wie Ischarwaiting verwendet wird um zu prüfen ob eine Taste gedrückt wurde. Falls dies der Fall ist wird die Taste in eine Variable eingelesen: | ||
− | |||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Print " | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Print "Tippen Sie die Taste B um zu starten"</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Dim</span><span style="font-family: 'Courier New';"> Serialcharwaiting </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Byte</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">,</span><span style="font-family: 'Courier New';"> Serialchar </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Byte</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Dim</span><span style="font-family: 'Courier New';"> Serialcharwaiting </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Byte</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">,</span><span style="font-family: 'Courier New';"> Serialchar </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Byte</span> | ||
Line 371: | Line 374: | ||
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New';">Serialcharwaiting </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Ischarwaiting</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New';">Serialcharwaiting </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Ischarwaiting</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">()</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Prüfen, ob B oder b gedrückt wurde. Dann goto</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span><span style="font-family: 'Courier New';"> Serialcharwaiting </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> 1 </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Then</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span><span style="font-family: 'Courier New';"> Serialcharwaiting </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> 1 </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Then</span> | ||
Line 393: | Line 396: | ||
<span style="font-family: 'Courier New';">Myroutine:</span> | <span style="font-family: 'Courier New';">Myroutine:</span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Anweisungen</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
Line 399: | Line 402: | ||
<span style="font-family: 'Courier New';">Main:</span> | <span style="font-family: 'Courier New';">Main:</span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Anweisungen</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">End</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">End</span> | ||
Line 409: | Line 412: | ||
= <span class="f_Header">BUFFERING SERIAL DATA</span> = | = <span class="f_Header">BUFFERING SERIAL DATA</span> = | ||
− | + | Wenn Sie mit hoher Geschwindigkeit senden und empfangen wollen dann müssen Sie serielle Input und serielle Output Puffer verwenden. Das Puffern wurde in BASCOM implementiert und kann nur mit Hardware UARTs verwendet werden. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Um einen UART für Pufferung zu konfigurieren muss der CONFIG Befehl benutzt werden. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 419: | Line 422: | ||
<span style="font-weight: bold; color: rgb(0, 0, 129);">Config </span>Serialout <span style="color: rgb(255, 0, 0);">= </span>Buffered <span style="color: rgb(255, 0, 0);">, </span>Size <span style="color: rgb(255, 0, 0);">= </span>20 | <span style="font-weight: bold; color: rgb(0, 0, 129);">Config </span>Serialout <span style="color: rgb(255, 0, 0);">= </span>Buffered <span style="color: rgb(255, 0, 0);">, </span>Size <span style="color: rgb(255, 0, 0);">= </span>20 | ||
− | + | und/oder | |
<span style="font-weight: bold; color: rgb(0, 0, 129);">Config </span>Serialin <span style="color: rgb(255, 0, 0);">= </span>Buffered <span style="color: rgb(255, 0, 0);">, </span>Size <span style="color: rgb(255, 0, 0);">= </span>20 | <span style="font-weight: bold; color: rgb(0, 0, 129);">Config </span>Serialin <span style="color: rgb(255, 0, 0);">= </span>Buffered <span style="color: rgb(255, 0, 0);">, </span>Size <span style="color: rgb(255, 0, 0);">= </span>20 | ||
Line 425: | Line 428: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Mehr Informationen finden Sie in der BASCOM-Hilfe. Suchen Sie nach "[[CONFIG_SERIALIN|config serialin"]]. Es gibt auch ein Beispielprogramm “RS232BUFFER.BAS” im Samples-Verzeichnis. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 433: | Line 436: | ||
= <span class="f_Header">SOFTWARE UART</span> = | = <span class="f_Header">SOFTWARE UART</span> = | ||
− | + | Die bisherigen Beispiele benutzen die Hardware UART. Das bedeutet, dass die internen UART Register und interne Hardware (RxD(0) and TxD(0)) des AVR genutzt werden. Wenn Sie keinen Hardware UART haben dann können Sie auch Software UART benutzen. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Der BASCOM Compiler macht es leicht, weitere UARTS zu definieren. BASCOM kann fast jeden Pin für Software UARTs benutzen. | |
+ | |||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Bedenken Sie, dass Software UART nicht so stabil ist wie Hardware UART und deshalb kann man Timing-Probleme bekommen wenn viele Interrupts im Programm benutzt werden. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Für dieses Beispiel benutzen wir die Pins portc.1 und portc.2. | |
− | + | Verbinden Sie portc.1 mit TxD und portc.2 mit RxD entsprechend obigem Schaltplan. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Ändern Sie $regfile und programmieren Sie dieses Beispiel: | |
<span style="font-size: 12pt; font-family: Arial;"> </span> | <span style="font-size: 12pt; font-family: Arial;"> </span> | ||
Line 469: | Line 473: | ||
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Öffnen eines TRANSMIT-Kanals für Ausgabe</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Open</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"comc.1:19200,8,n,1"</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">For</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Output</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Open</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"comc.1:19200,8,n,1"</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">For</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Output</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1</span> | ||
Line 477: | Line 481: | ||
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Öffnen eines RECEIVE-Kanals für Input</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Open</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"comc.2:19200,8,n,1"</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">For</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Input</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">2</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Open</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"comc.2:19200,8,n,1"</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">For</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Input</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">As</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">2</span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Weil es keine Verbindung zwischen Input- und Output-Pin gibt</span> |
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'gibt es KEIN ECHO wenn Tasten getippt werden</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1 </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">,</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">" | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1 </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">,</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 128);">"Drücken Sie eine alphanumerische Taste"</span> |
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Mit INKEY() können wir prüfen, ob ein Zeichen verfügbar ist</span> |
− | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Bei der Benutzung mit der Software-UART muss der Kanal mit angegeben werden.</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Do</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Do</span> | ||
− | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'In Byte speichern</span> |
<span style="font-family: 'Courier New';"> B </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Inkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(#</span><span style="font-family: 'Courier New';">2</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span> | <span style="font-family: 'Courier New';"> B </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">=</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Inkey</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(#</span><span style="font-family: 'Courier New';">2</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span> | ||
− | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Wenn der Wert > 0 dann wurde etwas empfangen</span> |
<span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span><span style="font-family: 'Courier New';"> B </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">></span><span style="font-family: 'Courier New';"> 0 </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Then</span> | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span><span style="font-family: 'Courier New';"> B </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">></span><span style="font-family: 'Courier New';"> 0 </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Then</span> | ||
− | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1 </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">,</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'Courier New';">b</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Print</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1 </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">,</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Chr</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">(</span><span style="font-family: 'Courier New';">b</span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">)</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Zeichen ausgeben</span> |
<span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">End</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span> | <span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">End</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">If</span> | ||
Line 511: | Line 515: | ||
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Loop</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Loop</span> | ||
− | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Close</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">2 </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">' | + | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Close</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">2 </span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0);">'Kanäle schließen</span> |
<span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Close</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1</span> | <span style="font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);">Close</span><span style="font-family: 'Courier New';"> </span><span style="font-family: 'Courier New'; color: rgb(255, 0, 0);">#</span><span style="font-family: 'Courier New';">1</span> | ||
Line 521: | Line 525: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Nachdem der Mikrocontroller programmiert und das Kabel angeschlossen wurde öffnen Sie das Terminal Emulator Fenster von BASCOM mit [[File:Terminal-icon.png]] . | |
− | + | Sie sollten dann sehen, wie das Programm nach aplphanumerischer Eingabe fragt und dann sollte die Eingabe wieder im Terminal Fenster ausgegeben werden | |
Latest revision as of 01:49, 26 February 2013
Contents |
UART
Ein Universal Asynchronous Receiver and Transmitter (UART) kann benutzt werden um Daten zwischen zwei Geräten zu senden und zu empfangen. Diese zwei Geräte können sein: PC-zu-PC, PC-zu-Mikrocontroller oder Mikrocontroller-zu-Mikrocontroller. Die UART Kommunikation benutzt TTL Spannungen von +5V and 0V oder LVTTL abhängig von der Mikrocontroller Betriebsspannung.
Wenn eine Verbindung zum PC gewünscht wird dann muss das RS232-Protokoll verwendet werden. Das bedeutet, dass mit definierten Spannungen (+15V und -15V) kommuniziert werden muss. Die kann mit einem MAX232 Level-Shifter erreicht werden.
Die Hardware wird im folgenden Schaltplan dargestellt:
Der DB-9 Anschluss hat 9 Pins aber es müsse nur 3 davon benutzt werden. Die obige Grafik zeigt die Vorderansicht - gelötet wird auf der anderen Seite. Bei den meisten Anschlüssen sind die Pinbezeichnungen auch auf den Steckern und Buchsen selbst zu lesen.
Wenn der verwendete Mikrocontroller HW-UART nicht unterstützt dann kann auch Software-UART benutzt werden. Siehe unten. Wenn der Mikrocontroller einen HW-UART unterstützt dann werden die TxD und RxD Pins mit TxD und RxD im Schaltplan verbunden. Wenn der Mikrocontroller mehrere HW-UARTs hat dann werden die TxD0 und RxD0 Pins mit TxD und RxD entsprechend obigem Schaltplan verbunden.
Nun muss per Programm der Mikrocontroller initialisiert werden. Öffnen Sie dazu eine neue .bas Datei und fügen Sie die folgenden Programmzeilen am Anfang hinzu.
$regfile = "verwendeter_mikrocontroller def.dat"
$crystal = 8000000
$baud = 19200
Stellen Sie sicher, dass der benutzte Mikrocontroller mit $regfile angegeben wird - zum Beispiel der ATMega32
$regfile = "m32def.dat"
Einige Mikrocontroller können einen internen Oszillator als Taktquelle verwenden. Einige Mikrocontroller verwenden den internen Oszillator standardmäßig. Bei Benutzung eines internen Oszillators braucht man keinen (externen) Quarz.
Führen Sie diesen Schritt nur aus wenn Sie einen internen Oszillator verwenden.
Öffnen Sie den BASCOM-AVR Programmer wie folgt:
• | Wählen Sie den “Lock and Fuse Bits” Tab aus und and maximimieren Sie das Programmer-Fenster. |
• | Prüfen Sie, ob Sie den folgenden “Fusebit” Abschnitt sehen: |
"1:Divide Clock by 8 Disabled"
und
"Int. RC Osc. 8 MHz; Start-up time: X CK + X ms; [CKSEL=XXXX SUT=XX]"
Diese Einstellungen gibt es nicht bei jedem AVR Mikrocontroller. Wenn Sie die Einträge bei sich nicht haben dann ändern Sie nicht irgendwelche Fuse Bits.
Wenn diese Einstellungen verfügbar sind aber mit anderen Werten dann ändern Sie die Werte durch die Drop Down Möglichkeiten. Schließlich klicken Sie den "Program FS" Knopf und dann "Refresh" um die tatsächlichen Einstellungen zu sehen.
Verbinden Sie nun Mikrocontroller und PC mit einem Kabel mit DB-9 Anschluss
Schreiben Sie ein Testprogramm für Ihren Mikrocontroller welches folgendermaßen aussehen sollte:
$regfile = "m32def.dat" 'Verwendeter Mikrocontroller
$crystal = 8000000
$baud = 19200
Do
Print "Hallo Welt"
Waitms 25
Loop
End
Öffnen Sie nun Das BASCOM Terminal-Programm und stellen Sie die Verbindungseinstellungen unter “Terminal” -> “Settings” ein. Wählen Sie den Com-Port wie am PC und stellen Sie eine Baudrate ein von 19200, Parity none, Data bits 8, Stop bits 1, Handshake none, emulation none.
Wenn Sie das "Hallo Welt" im BASCOM Terminal Emulator Fenster angezeigt bekommen dann ist alles in Ordnung.
Beispiel
Sie können auch das folgende Programm mit dem BASCOM Terminal Emulator ausprobieren welches verschiedene Sende- und Empfangs-Befehle demonstriert.
$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200
Dim Akey As Byte 'Bytevariable deklarieren
Print "Hallo, geben Sie irgendein alphanumerisches Zeichen ein.."
Akey = Waitkey() 'Waitkey wartet bis ein Zeichen von der UART empfangen wird
Print Akey
Wait 1
Print "Danke! Wie Sie sehen gibt der Mikrocontroller eine Zahl aus."
Print "aber nicht das getippte Zeichen."
Wait 1
Print "Probieren Sie nun die Enter-Taste.."
Akey = Waitkey()
Akey = Waitkey()
Print Akey
Print "Die Zahl die Sie sehen ist der ASCII-Wert des eingetippten Zeichens."
Print "Wir müssen die Zahl wieder zurück umwandeln in das eingetippte Zeichen..."
Print 'Beachten Sie die Funktion dieser Zeile..
Print "Geben Sie wieder ein alphanumerisches Zeichen ein..."
Akey = Waitkey()
Print Chr(akey) 'Beachten Sie was hier passiert
Print "Jetzt klappt es!"
Wait 1
Print "In vielen Situationen reicht ein Tastendruck nicht aus..."
Print "Geben Sie nun Ihren Namen ein und dann Enter zum Bestätigen"
Dim Inputstring As String * 12 'Zeichenkettenvariable deklarieren
Do
Akey = Waitkey()
If Akey = 13 Then Goto Thanks 'Bei Enter zu thanks springen
Inputstring = Inputstring + Chr(akey) 'Zeichen an Zeichenkette anhängen/span>
Loop
Thanks:
Print "Vielen Dank" ; Inputstring ; " !" 'Beachten Sie die Funktion des Semikolons ; für mehrere Parameter
Wait 1
Print "Sehen Sie sich den Programm-Code an und versuchen Sie zu verstehen,"
Print "wie das Programm arbeitet. Drücken Sie auch F1 während die Schreibmarke auf einem Befehl steht."
Print "Wenn Sie alles verstanden haben dann gehen Sie weiter zum nächsten Beispielprogramm."
End
ASCII
Wie Sie im vorigen Beispiel gesehen haben benutzen wir den PRINT Befehl um irgendetwas zur UART zu senden. Genaugenommen senden wir nicht einfach Text sondern wir senden ASCII-Zeichen. ASCII heißt American Standard Code for Information Interchange. ASCII ist eine Tabelle mit 127 Zeichen.
ASCII Tabelle (unvollständig)
Dezimal Hex Binär Wert
------- --- ------ -----
000 000 00000000 NUL (Null char.)
008 008 00001000 BS (Backspace)
009 009 00001001 HT (Horizontal Tab)
010 00A 00001010 LF (Line Feed)
012 00C 00001100 FF (Form Feed)
013 00D 00001101 CR (Carriage Return)
048 030 00110000 0
049 031 00110001 1
052 034 00110100 4
065 041 01000001 A
066 042 01000010 B
067 043 01000011 C
Die vollständige ASCII Tabelle finden Sie hier
CARRIAGE RETURN (CR) UND LINE FEED (LF)
Im vorigen Beispiel konnten Sie auch sehen, dass ein weiterer PRINT Befehl den Text in die nächste Zeile schreibt. Das kommt dadurch, dass der PRINT Befehl immer auch die CR und LF Zeichen anhängt uns ausgibt.
Wenn wir schreiben:
Print “ABC”
dann senden wir 65 66 67 13 10 to the UART. (Im Binär-Format)
Das Carriage Return Zeichen (13) bewegt die Schreibmarke zurück zur Position 0 der aktuellen Zeile. Das line feed (10) bewegt die Schreibmarke in die nächste Zeile.
Print “ABC” ;
Wenn wir ein Semikolon (;) am Ende der Zeile benutzen ...
sendet BASCOM kein carriage return/line feed so dass man weiteren Text nach dem ABC auf der selben Zeile schreiben kann.
Print “ABC” ; Chr(13) ;
Das würde nur ABC CR senden. Der nachfolgende Text würde das ABC überschreiben.
Übersicht
Hier finden Sie einige Befehle, die in Zusammenhang mit UART-Kommunikation benutzt werden können:
Waitkey()
Waitkey wartet bis ein Zeichen im seriellen Puffer empfangen wird.
Ischarwaiting()
Gibt eine 1 zurück wenn ein Zeichen im Hardware UART Puffer ansteht.
Inkey()
Inkey gibt den ASCII-Wert des ersten Zeichens aus dem seriellen Eingabe-Puffer zurück.
Sendet eine variable oder eine konstante Zeichenkette zum UART.
Ein weiiteres Beispiel
Dieses Beispiel zeigt wie Ischarwaiting verwendet wird um zu prüfen ob eine Taste gedrückt wurde. Falls dies der Fall ist wird die Taste in eine Variable eingelesen:
'Print "Tippen Sie die Taste B um zu starten"
Dim Serialcharwaiting As Byte, Serialchar As Byte
Serialcharwaiting = Ischarwaiting() 'Prüfen, ob B oder b gedrückt wurde. Dann goto
If Serialcharwaiting = 1 Then
Serialchar = Inkey()
If Serialchar = 66 Or Serialchar = 98 Then
Goto MyRoutine
End If
End If
Goto Main
Myroutine:
'Anweisungen
Main:
'Anweisungen
End
BUFFERING SERIAL DATA
Wenn Sie mit hoher Geschwindigkeit senden und empfangen wollen dann müssen Sie serielle Input und serielle Output Puffer verwenden. Das Puffern wurde in BASCOM implementiert und kann nur mit Hardware UARTs verwendet werden.
Um einen UART für Pufferung zu konfigurieren muss der CONFIG Befehl benutzt werden.
Config Serialout = Buffered , Size = 20
und/oder
Config Serialin = Buffered , Size = 20
Mehr Informationen finden Sie in der BASCOM-Hilfe. Suchen Sie nach "config serialin". Es gibt auch ein Beispielprogramm “RS232BUFFER.BAS” im Samples-Verzeichnis.
SOFTWARE UART
Die bisherigen Beispiele benutzen die Hardware UART. Das bedeutet, dass die internen UART Register und interne Hardware (RxD(0) and TxD(0)) des AVR genutzt werden. Wenn Sie keinen Hardware UART haben dann können Sie auch Software UART benutzen.
Der BASCOM Compiler macht es leicht, weitere UARTS zu definieren. BASCOM kann fast jeden Pin für Software UARTs benutzen.
Bedenken Sie, dass Software UART nicht so stabil ist wie Hardware UART und deshalb kann man Timing-Probleme bekommen wenn viele Interrupts im Programm benutzt werden.
Für dieses Beispiel benutzen wir die Pins portc.1 und portc.2.
Verbinden Sie portc.1 mit TxD und portc.2 mit RxD entsprechend obigem Schaltplan.
Ändern Sie $regfile und programmieren Sie dieses Beispiel:
$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200
Dim B As Byte
Waitms 100
'Öffnen eines TRANSMIT-Kanals für Ausgabe
Open "comc.1:19200,8,n,1" For Output As #1
Print #1 , "serial output"
'Öffnen eines RECEIVE-Kanals für Input
Open "comc.2:19200,8,n,1" For Input As #2
'Weil es keine Verbindung zwischen Input- und Output-Pin gibt
'gibt es KEIN ECHO wenn Tasten getippt werden
Print #1 , "Drücken Sie eine alphanumerische Taste"
'Mit INKEY() können wir prüfen, ob ein Zeichen verfügbar ist
'Bei der Benutzung mit der Software-UART muss der Kanal mit angegeben werden.
Do
'In Byte speichern
B = Inkey(#2)
'Wenn der Wert > 0 dann wurde etwas empfangen
If B > 0 Then
Print #1 , Chr(b) 'Zeichen ausgeben
End If
Loop
Close #2 'Kanäle schließen
Close #1
End
Nachdem der Mikrocontroller programmiert und das Kabel angeschlossen wurde öffnen Sie das Terminal Emulator Fenster von BASCOM mit .
Sie sollten dann sehen, wie das Programm nach aplphanumerischer Eingabe fragt und dann sollte die Eingabe wieder im Terminal Fenster ausgegeben werden
Languages | English • Deutsch |
---|