Danke dir
Ich werde es mir wohl bestellen, sobald ich mit dem Abi durch bin - dauert also leider noch was - um genau zu sein bis zum 15.Mai...
Danach werde ich so richig loslegen...
Übrigens, in Planung ist das Projekt schon - es handelt sich um nen von dem Chip gesteuerten (getakteten) Spannungswandler... Sollte relativ einfach sein und geeignet für den Einstieg - genaueres aber später
Anmeldungsdatum: 27.07.2007 Beiträge: 925 Wohnort: Oberhofen im Inntal (Tirol)
Verfasst am: Mi 19.März 2008 21:29:52 Titel: UART - RS-232 - vom µC zum Computer
Hallo!
Ich habe an diesem Beitrag nicht durchgehend gearbeitet. Deshalb kann es sein, dass er evt. ein wenig auseinandergerissen wirkt. Hoffentlich bringe ich kein zu großes Kuddelmuddel rein.
Du wirst dir jetzt vielleicht denken, dass der Gerold ausgeflippt ist und nicht mehr weiß wie er diesen Beitrag mit Content füllen soll. Aber vielleicht kommen dir die fett geschriebenen Zahlen an der linken Seite bekannt vor. Es sind mögliche Geschwindigkeiten für COM-Verbindungen (auch RS-232 oder "Serielle Schnittstelle" genannt).
Auf der rechten Seite stehen, fett markiert, die möglichen Quarz-Frequenzen die idealerweise dafür verwendet werden, um genau diese Baudraten zu erreichen. Einzig durch das Teilen der Frequenz kommt man auf eine dieser Baudraten.
Die Geschwindigkeit von COM-Verbindungen gibt man in Bit/Sekunde oder Baud an. 14.400 Baud bedeutet, dass 14.400 Bit/Sekunden über die Leitung übertragen werden. Bei den üblichen Standardeinstellungen braucht man zum Übertragen von 8 Bit (1 Byte) genau 10 Bit. Es kommt ein Start-Bit und ein Stop-Bit dazu. Bei einer Geschwindigkeit von 14.400 Baud werden also 1.440 Byte die Sekunde über die Leitung gejagt. Bei einer Baudrate von 115.200 werden 11.520 Byte die Sekunde übermittelt.
So, jetzt habe ich genug wirres Zeug geschrieben. Es geht in diesem Beitrag darum, wie man Daten vom µC zum Computer übertragen kann. Als einfachste Möglichkeit steht auf dem Computer die RS-232-Schnittstelle zur Verfügung. Und viele der AVR-µController haben UART und USART eingebaut. UART steht für "Universal Asynchronous Receiver Transmitter" und USART steht für "Universal Synchronous/Asynchronous Receiver Transmitter". Das ist genau das was wir brauchen um uns über die RS-232-Schnittstelle mit dem Computer zu unterhalten. Siehe Wikipedia: http://de.wikipedia.org/wiki/UART
Ein Datenbyte wird verpackt: Zuerst kommt ein Startbit. Dann die Datenbits und optional ein Bit für die Parität (sehr selten) mit dazu. Zum Abschluss kommt noch ein Stopbit dran. So, oder ein wenig abgeändert, werden die Datenbits über die Leitung verschickt. Am anderen Ende werden die Datenbits wieder ausgepackt. Damit sich beide Gegenstellen verstehen, müssen sie sich an die ausgemachte Geschwindigkeit halten. Es nützt nichts, wenn eine Seite die Daten mit 115.200 Baud über die Leitung schickt wenn die andere Seite die Daten mit der Baudrate 4.800 erwartet. Da der Takt nicht über eine zusätzliche Leitung geschickt wird, bleiben beiden Seiten nur die Quarze um die Geschwindigkeit der Datenübertragung genau einzuhalten.
Der USART ist im ATmega8-Datenblatt das Kapitel "USART" (Seite 130) gewidmet. Dort findet man genaue Angaben zu den möglichen Frame-Formaten (die Verpackung der Daten) und natürlich auch die optimalen Frequenzen für den µC. Die Baudrate sollte sich aus der Quarz-Frequenz durch einfaches Teilen ermitteln lassen und wenn das nicht möglich ist, höchstens 2% von dieser abweichen.
Die idealen Frequenzen stehen im ATmega8-Datenblatt im Kapitel "Examples of Baud Rate Setting" (Seite 156).
Zusammengefasst - die Frequenzen und damit machbaren Baudraten:
Wie man sieht, ist 9.600 Baud überall mit dabei. Deshalb verwende ich für zeitunkritische Datenübertragungen gerne 9.600 Baud. Bei 1 MHz sind 4.800 Baud evt. besser geeignet. Erst wenn ich mehr Geschwindigkeit brauche kümmere ich mich um den richtigen Quarz.
Also, jetzt weißt du schon mal, dass die Geschwindigkeit für die Datenübertragung sehr wichtig ist. Jetzt kommt noch ein Fallstrick mit dazu -- die Spannung. Die UART des ATmega8 arbeitet mit der für diesen µC üblichen Spannung. Das ist im Normalfall 5 Volt. Ein LOW entspricht 0 Volt und ein HIGH entspricht 5 Volt. Natürlich kommt das auch auf die verwendete Versorgungsspannung an, aber ich gehe hier der Einfachheit halber immer von 5 Volt aus.
Die in den Computer eingebaute RS-232-Schnittstelle arbeitet nicht mit 0 und 5 Volt, sondern dort üblicherweise mit -12 bis +12 Volt. Genauer gesagt: −3 bis −25 Volt stellen ein HIGH dar und +3 bis +25 Volt stellen ein LOW dar. Es ist also nicht nur ein Spannungsunterschied, sondern auch noch ein Verdrehen von HIGH und LOW. Man setzt deshalb meist einen Pegelwandler (ein IC) zwischen den Computer und den AVR-µController. Oft wird dafür ein MAX232 http://www.alldatasheet.com/view.jsp?Searchword=MAX232 eingesetzt. Das ist ein IC mit 16 Pins der die Spannungen anpasst und gleichzeitig noch invertiert. Auf den meisten Evaluations-Boards ist genau dafür so ein MAX232 mit drauf. Die billigeren MAX232 arbeiten mit vier Elkos und die etwas teureren MAX232-Exemplare arbeiten mit kleineren 100 nF Kondensatoren.
Einfache Verbindungen in beide Richtungen können schon mit drei Leitungen aufgebaut werden. Braucht man nur Daten in eine Richtung zu schicken, genügen sogar schon zwei Leitungen.
Bei vielen Programmiersprachen ist es üblich, mit dem Befehl PRINT etwas in eine Konsole zu schreiben bzw. auf dem Bildschirm anzuzeigen. Bei Bascom ist das anders. Ein PRINT gibt nichts in irgendeiner Konsole aus, sondern schickt die Daten über die UART. Wenn man also einen ATmega8 über einen MAX232 mit dem Computer verbindet und im Programm ``PRINT "Hallo"`` schreibt, dann kann man den Text "Hallo" mit jedem beliebigen Terminalprogramm empfangen und anzeigen lassen. Der ATmega8 schickt die Daten über den TXD-Pin (PD1). Dabei wird standardmäßig ein Startbit, ein Stopbit und kein Paritätsbit verwendet. Und üblicherweise werden 8 Datenbits damit verschickt.
Die Geschwindigkeit der Datenübertragung wird im Programm mit ``$baud`` eingestellt. Dieses einfache Programm schickt den Text "Hallo" über die UART und beendet sich danach.
Da die mit den Fuse-Bits eingestellte Taktfrequenz des ATmega8 bei mir 8 Mhz ist, wird Bascom mit ``$CRYSTAL = 8000000`` auf diese Frequenz hingewiesen. Falls du eine andere Taktfrequenz eingestellt hast, musst du ``$CRYSTAL`` natürlich anpassen. Bascom kann von sich aus nicht feststellen, wie schnell der µC getaktet ist. Aber um die Übertragungsgeschwindigkeit genau einhalten zu können, muss Bascom darüber bescheid wissen.
Mit ``$BAUD = 9600`` gibt man die Übertragungsgeschwindigkeit an. Und das war es auch schon. Mehr ist nicht einzustellen. Ab jetzt wird jeder PRINT-Befehl die Daten über die UART raus schicken. Wenn du bei deinen Tests nur Datenmüll empfängst, dann liegt das zu 99% an einer falschen Einstellung bei $CRYSTAL oder $BAUD.
Als Gegenstelle kann man z.B. das mit Windows mitgelieferte Hyperterminal verwenden. Die Einstellungen, um die Daten vom ATmega8 empfangen zu können, sehen so aus:
- COM1 bis COM4 (je nach verwendeter COM-Schnittstelle)
- Bits pro Sekunde: 9600
- Datenbits: 8
- Parität: Keine
- Stoppbits: 1
- Flusssteuerung: kein
Natürlich kannst du jedes beliebige Terminalprogramm dafür verwenden. Auch das mit Bascom mitgelieferte Terminalprogramm. Dieses lässt sich in Bascom über das Menü "Werkzeuge/Terminal Emulator" aufrufen. Im Terminal-Fenster kommt man über das Menü "Terminal/Settings" zu den Einstellungen. Allerdings ist es nicht sehr zuverlässig. Es ist bei mir schon oft vorgekommen, dass es Daten nicht angezeigt hat, nur weil man vorher den Inhalt des Terminalfensters gelöscht hat. Also wenn du Daten erwartest, diese aber nicht angezeigt kriegst, dann könnte das am in Bascom eingebauten Terminalprogramm liegen. Verwende in diesem Fall ein anderes Terminalprogramm für den Empfang der Daten.
Das war jetzt mal die eine Richtung, vom µC zum Computer. Über die andere Richtung schreibe ich beim nächsten mal.
Diesmal war es sicher ein wenig verwirrend. Gibt es Fragen?
Soo, der Postbote hatte es heute immernoch nicht dabei
Aaaber: Da wir ja es hier (wie von Gerold schon mal erwähnt) mit Hex und Bin-Formen zu tun haben, viele die aber nicht umrechnen können, habe ich hier mal ein Tool reingestellt das vom Dezimalsystem in Hex und Bin umwandelt... An den anderen Richtungen arbeite ich noch - wird also irgendwann ein Update geben...
Möglich sind die Zahlen -32768 bis 32767 (16Bit-Int) - wobei Binär die Ausgabe im Zweierkomplement (bei negativen Zahlen) erfolgt. Die Hex-Ausgabe im negativen ist die positive Zahl mit einem Minuszeichen davor, da ich im Web nix brauchbares finden konnte wie negative Hex dargestellt werden....
Wenn einer was über die Darstellung weiß --> Delphi geschrieben, kann ich einbauen.
Anmeldungsdatum: 03.12.2006 Beiträge: 1195 Wohnort: Klinik der misshandelten Kuscheltiere
Verfasst am: Do 20.März 2008 17:16:25 Titel:
'Wer es nachrechnen möchte, bitte alles rechtsbündig untereinander schreiben '
Bei 8Bit Zweierkomplement ist das oberste bit das Vorzeichen ,somit sind nur
Zahlenwerte von +127 bis - 128 möglich.
Was ist ein Komplement ?
Darunter versteht man die Ergänzung zur größten gleichstelligen Zahl.
Komplement der Dezimal Zahl 1984 =
A = 1984 (10)
_
A = 9999-1984=8015
mit Binärzahlen
B = 01110101
_
B = 11111111
- 01110101
_
B = 10001010
Sieht man sich das ergebnis der subtraktion an so bemerkt man das das Komplement eine bitweise invertierung der Binärzahl ist.Bei der subtraktion
der Binärzahl zur größten gleichstelligen Zahl erfolgte immer eine Ergänzung zu 1. Deshalb wird B(strich) auch als Einerkomplement der Binärzahl 'B' bezeichnet.Addiert man eine Binärzahl zu ihrem Einerkomplement ,so hat das Ergerbnis immer die Form 11...11.
01110101
+10001010
-------------------
11111111
+ 1
-------------------
100000000 " B+B' +1"
Abgesehen vom Übertrag in die 9te stelle ist das Ergebnis Null.
Somit ist B' +1 eine Darstellungsweise für die negative Binärzahl -B,oder anders : addiert man zu einer beliebigen Binärzahl B ihr Zweierkomplement B'+1, so ist das ergebnis immer null.
Bsp.
2 Binärzahlen unterschiedlicher länge sollen voneinander abgezogen werden: 01110111 - 0111 = ?
Erstmal beide Zahlen auf gleiche länge bringen indem die höherwertigen stellen mit nullen ergänzt werden.
Dann wird das zweierkomplement der mit dem minuszeichen versehenen Binärzahl gebildet.
00000111 (Binärzahl)
11111000 (Einerkomplement)
+ 1
-----------------------------------
11111001 (Zweierkomplement)
====================
Jetzt addieren wir das Zweierkomplement der mit dem minuszeichen versehenen Binärzahl zur ersten positiven Binärzahl:
01110111
+11111001
-----------------
101110000
Der übertrag in die 9te stelle bleibt unberücksichtigt - das ergebnis lautet
01110000
==========
ich glaub ich höre jetzt erstmal auf ' verwirrt lachend ' _________________ Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Anmeldungsdatum: 03.12.2006 Beiträge: 1195 Wohnort: Klinik der misshandelten Kuscheltiere
Verfasst am: Fr 21.März 2008 11:59:07 Titel:
Moin
hab auch noch was gefunden , Hex-Dez-Bin Rechner , ist in VB6 geschrieben,
ich stell mal nur die .exe hier rein, sollte eigentlich bei den meisten gehen da keine besonderen sachen wie ocx und anderes benutzt wurden- wenn nicht dann muss ich mal das ganze incl. setup hochladen . Also Feedback ist erwünscht !
kann aber auch keine negativen hexzahlen
Die Grundlagen gibts als Standard Basic auf http://www.bellibot.com/seite5.php - ganz am ende der Seite _________________ Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Anmeldungsdatum: 27.07.2007 Beiträge: 925 Wohnort: Oberhofen im Inntal (Tirol)
Verfasst am: Fr 21.März 2008 12:25:49 Titel:
Hallo!
Das wirft irgendwie ein falsches Bild auf diese kleine Einführung. Wir werden nicht mit Binär oder Hex rechnen. Die Binärdarstellung ist einfach nur intuitiver als die Hexdarstellung um auf die I/O-Pins der µC zuzugreifen.
Alle drei Befehle bewirken das Gleiche.
Code:
DDRD = &B00010110
DDRD = &H16
DDRD = 22
Bei der Binärdarstellung weiß ich sofort, dass die Pins PD1, PD2 und PD4 als Ausgänge konfiguriert wurden. Man zählt von rechts nach links, beginnend mit 0. Das erste Bit stellt PD0 dar. Das zweite Bit stellt PD1 dar...
Aus den Hex- und Dezimalzahlen geht das nicht sofort hervor.
Ich werde später mal darauf eingehen, wie man eines der acht Bits auf 1 oder 0 ändern kann, ohne alle anderen Bits zu kennen. Aber das war es schon. Mehr werden wir selten brauchen.
Dieser Kurs soll ja weiterhin so einfach wie möglich und nur so detailliert wie notwendig bleiben. Man kann öfter mal etwas durch komplizierteres Programmieren optimieren. Aber falls ich entscheiden muss zwischen kompliziertem Code oder einem etwas besseren µC, dann werde ich meist den besseren µC wählen. Damit hat man Reserven für spätere Weiterentwicklungen und sauberen Code der sich weiterentwickeln lässt.
Stichworte: RS-232, Nullmodem Nullmodemkabel, gekreuztes Kabel _________________ http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Zuletzt bearbeitet von gerold am Fr 21.März 2008 19:33:46, insgesamt 3-mal bearbeitet
Anmeldungsdatum: 03.12.2006 Beiträge: 1195 Wohnort: Klinik der misshandelten Kuscheltiere
Verfasst am: Fr 21.März 2008 18:15:16 Titel:
Hinweis
Bei STK 500 ,Arduino , STK200 usw. normalerweise kein Nullmodemkabel erforderlich .
Die richtige Beschaltung rxd/txd erfolgt in der Zielapplikation. _________________ Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Anmeldungsdatum: 27.07.2007 Beiträge: 925 Wohnort: Oberhofen im Inntal (Tirol)
Verfasst am: Fr 21.März 2008 20:01:23 Titel:
BellaD hat folgendes geschrieben:
Bei STK 500 ,Arduino , STK200 usw.
Hallo BellaD!
Vielen Dank! Wie ich jetzt feststellen konnte, ist auch beim "Pollin Evaluationsboard" eine D-Sub Buchse (weiblich) drauf und für den Anschluss über ein normales 1 zu 1 Kabel gedacht. Man braucht für den Anschluss des Pollin Evaluationsboard also kein Nullmodemkabel, wie irrtümlich von mir angenommen, sondern ein normales 1 zu 1 D-Sub 9 Kabel mit einer Buchse (weiblich) und einem Stecker (männlich).
Und hier ein möglicher Anschlussplan für "ohne Nullmodemkabel".
Anmeldungsdatum: 27.07.2007 Beiträge: 925 Wohnort: Oberhofen im Inntal (Tirol)
Verfasst am: Sa 22.März 2008 15:18:57 Titel: UART - RS-232 - vom Computer zum µC
Hallo!
Die Kommunikation über die UART ist ziemlich nützlich und vielseitig. Damit kann der µC Daten zum Computer oder an andere µC schicken und empfangen. Bascom stellt dafür mehrere Befehle bereit auf die ich in diesem Beitrag näher eingehen möchte. Der ATmega8 besitzt eine eingebaute Hardware-UART-Schnittstelle. Man kann UART aber auch per Software nachbilden. Das ist zwar nicht mehr so schnell wie die Hardware-UART, aber immerhin kann man damit gleichzeitig Verbindung zu mehreren Gegenstellen aufnehmen. Wenn man nichts besonderes einstellt, dann verwendet Bascom die Hardware-UART.
$baud:
Damit stellt man die gewünschte Übertragungsgeschwindigkeit ein. Diese ist von der Frequenz abhängig, mit der der µC getaktet wird. Diese muss Bascom mit ``$crystal`` bekannt gegeben werden. Beispiel:
PRINT:
Dieser Befehl sendet eine Zeichenfolge (einen Text) über die UART. Mehrere Zeichenfolgen können mit einem Strichpunkt (;) getrennt werden. An diese Zeichenfolge werden autmatisch die unsichtbaren Zeichen CARRIAGE RETURN (CR) und LINEFEED (LF) angehängt. Diese unsichtbaren Zeichen kennzeichnen einen Zeilenumbruch. Möchte man nicht, dass diese unsichtbaren Zeichen angehängt werden, dann muss der PRINT-Befehl mit einem Strichpunkt (;) abgeschlossen werden. Wird an PRINT eine Zahl übergeben, dann wird diese in einen Text umgewandelt. Es wird also nicht die Zahl übermittelt, sondern der ASCII-Code dafür. Die Zahl 123 besteht aus den drei Zeichen "1", "2" und "3". Es werden die drei ASCII-Codes für die Zeichen "1", "2" und "3" und die ASCII-Codes der beiden unsichtbaren Zeichen CR und LF übertragen.
Dieser Code
Code:
PRINT "Hallo Welt!"
übermittelt die Zeichenfolge "Hallo Welt!" und fügt die unsichtbaren Zeichen CR und LF an. Das sieht in einem normalen Terminalprogramm so aus:
Code:
Hallo Welt!
Analysiert man aber die übermittelten Daten, dann sieht man, dass für jedes Zeichen der ASCII-Code übermittelt wurde. Hier der Dezimal- und Hex-Code der übermittelten Zeichen:
Code:
Dezimal: 72 97 108 108 111 32 87 101 108 116 33 13 10
Hex: 48 61 6C 6C 6F 20 57 65 6C 74 21 0D 0A
Text: H a l l o W e l t ! CR LF
Wenn man diese Codes mit einer ASCII-Tabelle vergleicht, dann erkennt man die Zusammenhänge.
Dieser Code
Code:
PRINT 1
übermittelt das Zeichen "1" und nicht die Zahl 1. In einem normalen Terminalprogramm wird also das Zeichen "1" angezeigt. Analysiert man was wirklich übermittelt wird, dann sieht das so aus:
Code:
Dezimal: 49 13 10
Hex: 31 0D 0A
Text: 1 CR LF
Will man die Zahl 1 ohne Umwandlung in ein Zeichen übermitteln, dann nimmt man dafür den Befehl PRINTBIN.
PRINTBIN:
Mit PRINTBIN werden die Daten, ohne Umwandlung in einen Text, übermittelt. Folgender Befehl übermittelt wirklich die Zahl 1:
Code:
PRINTBIN 1
Analysiert man das was an den Computer gesendet wurde, dann sieht das so aus:
Code:
Dezimal: 1
Hex: 01
Text: <unsichtbar>
So können reine Daten, ohne umwandeln, übermittelt werden. Diese lassen sich aber dafür nicht mehr in einem normalen Terminalprogramm anzeigen. Dafür bräuchte man einen Anzeigemodus der die empfangenen Daten in Hex oder Dezimal anzeigt.
INPUT:
Der Befehl INPUT erwartet eine Zeichenfolge von der UART und schreibt diese in eine Variable. INPUT wartet so lange auf die Zeichenfolge bis CARRIAGE RETURN (CR) übermittelt wurde. Das Programm bleibt also stehen, bis CR über die UART rein kommt. Das ist ideal, wenn das Programm in der MainLoop nur kommuniziert. Es ist nicht ideal, wenn in der MainLoop auch noch andere Dinge erledigt werden sollten. Dafür gibt es andere Befehle wie INKEY oder ISCHARWAITING. Außerdem gibt es sogar die Möglichkeit, einen Interrupt auslösen zu lassen, wenn eine Zeichenfolge angekommen ist.
Dieses Beispiel wartet bis eine mit CR abgeschlossene Zeichenfolge übermittelt wurde und schickt diese über die UART zurück.
Code:
Dim Empfangen As String * 20
Do
Input Empfangen
Print "Empfangen: " ; Empfangen
Loop
End
Mit CONFIG INPUT kann man einstellen, welches unsichtbare Zeichen oder welche unsichtbare Zeichenfolge einen Empfang abschließt. Und mit ECHO OFF kann man einstellen, dass in ein Terminal eingegebene Zeichen nicht sofort wieder zurück geschickt werden.
INPUTBIN:
Bei diesem Befehl wartet Bascom auf Binärdaten. Es wartet also nicht auf Text, wie es INPUT macht, sondern auf reine Daten. An diesen Befehl wird als Argument eine Variable übergeben. INPUTBIN stoppt das Programm so lange, bis diese Variable befüllt wurde. Wird also eine BYTE-Variable übergeben, dann genügt ein Byte und das Programm läuft weiter. Wird eine WORD-Variable übergeben, dann wartet INPUTBIN bis zwei Byte (=WORD) übergeben wurden. Beispiel:
WAITKEY:
Dieser Befehl wartet bis ein Zeichen über die UART zum µC übertragen wurde und gibt dieses zurück. WAITKEY blockiert so lange bis ein Zeichen übermittelt wurde. Wird eine BYTE-Variable damit befüllt, dann steht in der BYTE-Variable der ASCII-Code des übermittelten Zeichens. Wird eine STRING-Variable befüllt, dann weiß Bascom, dass der übermittelte ASCII-CODE ein Textzeichen ist und gibt dieses bei PRINT als solches zurück. Beispiel:
Code:
Dim My_byte As Byte
Dim My_string As String * 1
Do
My_byte = Waitkey()
Print "Empfangen: " ; My_byte 'Gibt den ASCII-Code des Zeichens zurück
My_string = Waitkey()
Print "Empfangen: " ; My_string 'Gibt den Text zurück
Loop
INKEY:
Wenn ein Zeichen im zwei Byte großen UART-Buffer steht, dann gibt INKEY ein Zeichen zurück. Steht nichts mehr im UART-Buffer, dann gibt INKEY die Zahl 0 zurück. INKEY bleibt also nicht stehen wie es bei WAITKEY der Fall ist. Das ist oft eine feine Sache, aber nicht ideal wenn in den zu übermittelnden Daten auch mal ein Nullbyte vorkommen kann. In so einem Fall sollte man vorher mit ISCHARWAITING prüfen ob etwas im UART-Buffer steht. Beispiel:
Code:
Dim My_string As String * 1
Do
My_string = Inkey()
If My_string <> Chr(0) Then
Print "Empfangen: " ; My_string
End If
Loop
oder so:
Code:
Dim My_string As String * 1
Do
If Ischarwaiting() = 1 Then
My_string = Inkey()
Print "Empfangen: " ; My_string
End If
Loop
ISCHARWAITING:
ISCHARWAITING gibt 1 zurück, wenn im UART-Buffer ein Zeichen wartet. ISCHARWAITING gibt 0 zurück, wenn kein Zeichen im UART-Buffer wartet. Beispiel: siehe INKEY
ECHO:
Die Einstellung ECHO ON gibt an, dass vom Befehl INPUT sofort nach dem Empfang eines Zeichens, dieses Zeichen zurück geschickt werden soll. Das ist die Standardeinstellung!
Die Einstellung ECHO OFF gibt an, dass nichts zurück geschickt werden soll.
Hi,
schöne Sache mit dem Einsteiger Tutorial
Eine kleine Anmerkung zum Anschlussplan:
Aref braucht man auch bei vielen Sachen, man sollte zwischen AREF und GND einen 100nF Kerko machen, viele legen AREF direkt an Vcc aber das ist denk ich, so weit ich das Datenblatt verstanden habe, falsch.
Wie machst du das?
Mach weiter so
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum nicht herunterladen