getc() oder alternative

Gast #49863
Lesenswert?

hallo

ich bin nun schon eine weile daran die serielle schnittstelle meines
ds89c420 zu programieren. mit dem interrupt hat es nicht richtig
hingehauen. sobald ich mit printf() ein zeichen gesendet hatte ging
nichts mehr.
nun habe ich den byte empfang mit der getc() fkt gelöst. das
funktioniert soweit auch gut.
nun meine frage:

wenn bei der übertragung etwas schief geht, das heisst wenn keine
zeichen mehr bei meinem prozessor ankommen und das programm ist gerade
am lesen, wird der prozessor sich aufhängen. oder besser gesagt er
wartet bis er ein zeichen empfängt. aber es kommt ja keines.

wie würded ihr so eine komunikation über die serielle schnittstelle
lösen das sowas nicht passieren kann?
ich wäre sehr dankbar über ein paar tips oder evtl. ein bsp wie man das
mit dem interrupt lösen könnte.

der ds89c420 ist "8051" kompatibel.

gruss
tobias
Gast #49864
Lesenswert?

Ich programmiere meine Schnittstelle (zumindest) auf empfangsseite immer
über Interrupts. Also wenn ein Zeichen fertig empfangen im
Empfangsbuffer steht, dann wird der Interrupt ausgelöst. Die
Interruptfunktion holt dann das Zeichen und wertet es aus oder fügt es
einem Puffer hinzu.

Gruß, Florian
Gast #49865
Lesenswert?

hallo florian

ich habe das auch mal versucht und der empfang hat funktioniert.
aber wenn ich dann ein zeichen senden wollte mit printf() hat das ganze
nicht mehr hingehauen.
ich wäre sehr dankbar wenn mir jemand ein kleines bsp. geben kann
wie ich senden und empfangen mit interrupt lösen kann.

tobias

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren