PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleines Problem mit Daten über RS232 einlesen, input get...



RCO
29.10.2004, 19:15
Also ich dachte, es wär so einfach, aber irgendwie werde ich da nicht schlau ruas, wie kann ich DAnte seriell einlesen, ich habe 2 AT90S2313 verbunden und der eine sendet ununterbrochen "a". Aber wie empfange ich die DAten nun am zweiten und wie bekomme ich das dann aufs LCD.
Gibt mir Input oder Get den Buchstaben und welches die Zahl wieder.
Könnte mir jemand einwenig Code schreiben?
Müsste ja ohne die ganzen Configs irgendwie so aussehen:

***********
Dim X as Byte
do
home
get X
Lcd X
lowerline
input x
Lcd X
loop
**********

Oder muss ich die Serielle Schnnittstelle noch irgendwie Initialieren, außer der Baudrate?

Bitte helft mir

MFG Moritz

schnuppel
30.10.2004, 00:46
Hallo,


Also ich dachte, es wär so einfach, aber irgendwie werde ich da nicht schlau ruas, wie kann ich DAnte seriell einlesen, ich habe 2 AT90S2313 verbunden und der eine sendet ununterbrochen "a". Aber wie

meinst du eine Verbindung zweier ATMEL's mittel Software UART?
Ich versuche mal hier 2 Proggis einzufügen, meintest du dies?


' soll über Soft UART Befehle an BOT senden
Dim Befehl As Byte
Dim Wert As Byte
Dim I As Byte
Open "comd.2:19200,8,n,1" For Output As #1
Open "comb.2:19200,8,n,1" For Input As #2

Do
Input "Gib Befehl ein : " , Befehl , Wert
Print
Printbin #1 , 170
Waitms 100
Printbin #1 , Befehl ; Wert
Loop


"Bot" war in diesem Fall ein andere ATMEL.



Oder muss ich die Serielle Schnnittstelle noch irgendwie Initialieren, außer der Baudrate?

Ja, mit Soft UART auf jeden Fall.
Habe hier noch ein Sample:


' Gibt 10 mal "serial output" auf Port C.0 aus, danach Ende Programm
' Das zeigt sich an 10maligem Aufblitzen der LED
' KLAPPT!

Dim I As Byte
Waitms 100
Open "comc.0:19200,8,n,1" For Output As #1
For I = 1 To 10
Print #1 , "serial output"
Waitms 255
Next I
Close #1
End 'end program


Hatte damals irgendwie zwei 4433 verbunden und die sollten beide kommunizieren.
Hoffe, das hilft dir.

mfG schnuppel

Andy1988
30.10.2004, 02:07
Vielleicht hilft dir das hier noch weiter:

https://www.roboternetz.de/phpBB2/viewtopic.php?p=38205#38205

RCO
30.10.2004, 12:54
Also ich meinte das verbinden des Ein-/Ausgangs der seriellen Schnittstelle RXD/TXD, wo normlaerweise noch der MAX232 dahinterkommt, um mit dem PC o.ä. zu kommunizieren. Mein Problem hat sich mitlerweile aber auhc etwas verändert. Ich habe Jetzt einfach TX des einen Atmels an RX des anderen gehängt (Ein Kabel). DA beide an einer gemeinsamen Stromquelle hängen. Wenn ich mich nicht täusche, hat das mit dem UART nix zu tun, oder doch (verwirrt).

Hier meine beiden Codes:

Sender:

$baud = 1200

Do
Print "A"
Waitms 300
Print "B"
Waitms 300
loop

Empfänger:


$baud = 1200
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2 , E = Portb.3 , Rs = Portb.4 ' Natürlich so wie es wirklich angeschlossen ist (4-Bit-Modus)
Config Lcd = 16 * 2
Initlcd
Display On
Cursor Off
Dim Rein As Byte

Cls
Do
Home
Input Rein
Waitms 300
Lcd "Input: " ; Rein
Loop
End

Lasse ich die Baudanweisung (auch wenn sie in Bascom so eingestellt ist) weg, dann erhalte ich auf dem LCD:


Input: 0

Andernfalls erhalte ich garnix, also hängt der AVR beim INput.

MFG Moritz

Andy1988
30.10.2004, 13:01
Ist doch logisch!

Es kann niemals passieren, dass die Daten genau dann am AVR ankommen, wenn du sie abfragst! Am besten ist, du nimmst meine Routine oben. Dann hast du solche Probleme nicht mehr. Diese schaut einfach immer, ob was im Eingang liegt und wenn ja, dann wirds zusammengesetzt.
Anschließend kannst du noch ne Sub aufrufen, die dir das dann ausgibt!

RCO
30.10.2004, 13:32
Also irgendwie liefert dein "Ucsra.rxc = 1" immer ne Felhermeldung!
"Invalid Datatype[0]"

Außerdem dachte ich, dass mindestens ein zeichen gepuffert werden würde, also irgendwas anliegen muss, also A oder B, aber nciht 0!

MFG Moritz

RCO
30.10.2004, 13:53
Hm, also aus Input bin ich jetzt nciht schaluer geworden, aber mit:

A = Waitkey()

klappts, das reicht dann erstmal.

Danke für eure Mühen

MFG Moritz

Andy1988
30.10.2004, 14:40
Komisch! Die Meldung kann ich mir nicht erklären.

Und der Puffer ist nit ucsra.rxc, sondern udr! An ucsra.rxc liegt nur eine 1 an, wenn sich Zeichen im Puffer befinden!

RCO
30.10.2004, 16:11
Naja, es läuft erstmal so, werde vermutlich später nochmal fragen.
Ich wollte ne kleine Funkverbindung bauen, mit billig-modulen von ELV, die schon eine geraume Zeit hier rumligen, da musste erstmal die einfach Ferbindung klappen, bevor ich mich an die Funkverbindung mache.
Jetzt läuft beides wunderbar.

Also nochmal vielen Dank

MFG Moritz