getc() oder alternative

Gast #49863
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
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
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
Gast #49866
die komunikation läuft jetzt mit interrupts.
vieleicht interrsierts ja noch jemand anders, deshalb habe ich
das programm mal angehängt.

gruss
tobias
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.