mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik getc() oder alternative


Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tobias hofer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die komunikation läuft jetzt mit interrupts.
vieleicht interrsierts ja noch jemand anders, deshalb habe ich
das programm mal angehängt.

gruss
tobias

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.