Forum: Mikrocontroller und Digitale Elektronik Terminalprogramme nehmen keine Zeichen an, warum?


von Maunel (Gast)


Lesenswert?

Hallo,

ich stehe gerade vor einem kleinen Problem.

Ich habe meinen AVR (Mega16) mit einem alten Notebook verbunden. Das hat 
noch eine "richtige" serielle Schnitstelle.

Wenn ich mir jetzt von meinem AVR Hallo Welt ausgeben lasse, zeigt es 
mir das auch an.

Allerdings kann ich in mein Terminalprogramm nichts eingeben.

Habe Hyperterminal und putty versucht, aber nichts passiert.

Weiss jemand woran das liegen könnte?
Bin echt ratlos.

Empfangen klappt wunderbar, aber mehr auch nicht :(

von Berdb (Gast)


Lesenswert?

Hi,

Schalte mal im Terminal das ECHO an.

gruß bernd

von Chris L. (kingkernel)


Lesenswert?

Wie sieht denn dein Aufbau aus. Hast du Rx und Tx verbunden. Wie merkst 
du, das das Programm der Fehler ist und nicht etwa die Software im AVR 
oder dien Aufbau?
Schließe Rx und Tx mal Kurz und sende das was vom PC, dann müsstest du 
das angezeigt bekommen, was du gesendet hast (Was im normalfall nicht 
der Fall ist, da wird still im hintergrund gesendet, und was angezeigt 
wird ist nur das, was empfangen wurde)

von Robert N. (robert_n)


Lesenswert?

Hallo,

dein Terminalprogramm zeigt Zeichen an, die es empfängt.
Wenn du Zeichen über die Tastatur eingibst, werden die zwar (sofern die 
Technik funktioniert) verschickt, aber nicht angezeigt. Du kannst sie 
höchstens anzeigen lassen, indem du z.B. mit einem Loopback-Stecker dein 
eigenes Signal zurück zum PC schickst.

LG

von Freddi (Gast)


Lesenswert?


von Eumel (Gast)


Lesenswert?

Maunel schrieb:
> Habe Hyperterminal

Einfach Echo einschalten und alles ist gut.

von Karl H. (kbuchegg)


Lesenswert?

Maunel schrieb:

> Habe Hyperterminal und putty versucht, aber nichts passiert.
>
> Weiss jemand woran das liegen könnte?

Hast du das Handshake abgeschaltet?
Wenn da Hardware Handshake (heißt im Hyperterminal glaub ich 
"Flusskontrolle") eingeschaltet ist, dann gibt der AVR dem PC kein OK 
zum Senden.

Echo würde ich ausgeschaltet lassen und stattdessen lieber den AVR das 
Echo übernehmen lassen. Dann ist die optische Kontrolle besser, ob die 
Verbindung auch wirlich steht, bzw. was der AVR tatsächlich gekriegt 
hat.

von Maunel (Gast)


Lesenswert?

Hallo,

danke für die zahlreichen Antworten.

Ich habe das Echo eingeschaltet. Die Zeichen werden mir jetzt angezeigt, 
wenn ich was eingebe.

Aber mehr passiert nicht. Der AVR kann zwar weiterhin senden, aber er 
reagiert nicht auf Eingaben.

Mein Programm ist sehr simpel

$regfile = "M16def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 4800

Dim Empfangen As String * 20

Do
   Empfangen = ""

   Input Empfangen

   Select Case Empfangen
   Case "0"
   Print "0 empfangen"
   Case "1"
   Print "1 empfangen"
   End Select

Loop

End

Nur leider passiert nichts wenn ich eine 1 oder eine 0 sende.

Verkabelt habe ich das ganze nach diesem Schema

http://halvar.at/elektronik/kleiner_bascom_avr_kurs/max232_1zu1kabel/

Verkabelung habe ich grade nochmal überprüft, die ist genau wie auf dem 
Schaltplan.

Hat noch jemand eine Idee?

von Karl H. (kbuchegg)


Lesenswert?

Maunel schrieb:

> Mein Programm ist sehr simpel

UNd trotzdem schon zu kompliziert.

Für den ersten Test: kein if, kein gar nichts.
Der AVR sendet zurück, was er kriegt. Und wenn er Blödsinn kriegt, dann 
sendet er eben Blödsinn zurück.

Und für deine ersten Tests nimmst du auch nicht INPUT sondern WAITKEY 
oder INPUTBIN.
Denn das hat weniger Annahmen darüber, was die Gegenstelle senden muss.

WEITKEY gibt dir alles, so wie es reinkommt. INPUT muss ein Carrage 
Return sehen, damit es weitergeht. Wenn nie eines kommt ... aus welchen 
Gründen auch immer, dann wartet INPUT bis zum St. Nimmerleinstag und du 
fragst dich (und uns) was da faul ist.

Immer mit dem einfachst möglichen Test anfangen, den du dir vorstellen 
kannst!

> Verkabelung habe ich grade nochmal überprüft, die ist genau wie auf dem
> Schaltplan.

Schön.
Hast du die Handshake-Einstellung überprüft?

von Maunel (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Hast du die Handshake-Einstellung überprüft?

Ja, ist ausgeschaltet.

Hier ist mein aktueller Code, aber er gibt nix zurück :(

Dim A As Byte

Do

A = Waitkey()                                               'wait for a 
key

Print Chr(a)
Loop


End

von Karl H. (kbuchegg)


Lesenswert?

Dann nimm mal den µC aus dem Sockel und stecke ein Stückchen Draht in 
den Sockel, und zwar so, dass du die µC-Anschlüsse Tx und Rx miteinander 
verbindest.

Wenn du dann am Terminal klimperst, dann musst du ein ECHO bekommen.
Gegentest: Drahtbrücke raus und das Echo muss aufhören.
Wenn das nicht klappt, dann hast du irgendwo ein Hardware-Problem:
Kabel unterbrochen, irgendwo einen Anschluss vergessen etc. etc.

von Maunel (Gast)


Lesenswert?

Es klappt nicht!
Also muss ich wohl nochmal ran.
Wie kritisch sind denn die Kondensatoren an dem MAX232?

Habe erst 100nF Kerkos dran gehabt und jetzt habe ich getausch auf 100µF 
Elkos.

Was anderes ist gerade nicht vorrätig

von da1l6 (Gast)


Lesenswert?

Hallo

Der MAX232 braucht 1µF! 100nF ist zu wenig, 100µF deutlich zu viel.
Der MAX3232 würde mit 100nF auskommen.

da1l6

von troll (Gast)


Lesenswert?

Maunel schrieb:
> Habe erst 100nF Kerkos dran gehabt und jetzt habe ich getausch auf 100µF
> Elkos.
Datenblatt sagt soll=1µF. Aber du kannst ja mit einem Multimeter leicht 
testen ob der MAX tut was er soll.

von troll (Gast)


Lesenswert?

OK, das passiert wenn man zwischendurch was anderes macht...

von Maunel (Gast)


Lesenswert?

Hallo,

ich habe mir jetzt dsa Pollin Board besorgt, welches ich noch rumliegen 
hatte.

Darauf ist ja ein MAX232N mit entsprechenden Elkos.

Also, dass Empfangen klappt wunderbar.


Print "A"
wait 1
Print "B"
wait 1

macht genau dass, was es machen soll.


Wenn ich jetzt aber RX und TX auf der µC Seite verbinde und etwas ins 
Terminal eingebe, passiert absolut nix.

Ich bin ratlos, so schwer kann das doch nich sein :(


RX an Pin 3 der seriellen Schnittstelle, TX an Pin 2, GND an Pin 5.
Flusskontrolle Aus, Baudrate stimmt, keine Parität, 8 Daten und ein 
Stoppbit. Kein Kabelbruch oder sonstiges mit Multimeter feststellbar.

von Karl H. (kbuchegg)


Lesenswert?

Maunel schrieb:

> RX an Pin 3 der seriellen Schnittstelle, TX an Pin 2, GND an Pin 5.
> Flusskontrolle Aus, Baudrate stimmt, keine Parität, 8 Daten und ein
> Stoppbit. Kein Kabelbruch oder sonstiges mit Multimeter feststellbar.

Irgendwo muss aber eine Unterbrechung sein.
Nimm dir eine LED und verkable sie mit 220Ohm nach Masse. Dann gehst du 
beginnend mit der Seriellen am PC den kompletten Signalweg durch. Dazu 
legst du am besten erst mal einen Stein auf die PC-Tastatur, sagen wir 
mal aufs 'A'. Bei 9600 Baud (besser 4800 Baud) siehst du die LED 
wunderbar flackern. Fang PC_seitig an und verfolge das Flackern durch 
die komplette Kette. Irgendwo wird es verschwinden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.