www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt Benutzung


Autor: biggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
bin ganz neu in diesem bereich! Möchte uart kommunikation durch
interrupt kontrollieren! könnt Ihr mir bitte ein paar Ideen geben?!
Danke

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Nichts gegen Anfänger und deren Fragen, aber das ist jetzt wieder genau
so ein Beispiel, über das man sich im Forum so aufregt. Einerseits weiss
niemand, was du jetzt willst und andererseits sieht es so ein bisschen
nach "Ich habe keine Ahnung, präsentiert mir mal eine Lösung".

Wenn du ein Problem hast, auch ein simples, dann poste es ruhig. Aber
bitte formuliere klar, WAS das Problem ist und WAS du jetzt haben
möchtest.

Gruss

Michael

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und vorher das Tutorial lesen. Da stehen nämlich eigentlich alle
benötigten Infos drin!

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Worum gehts denn genauer:
RS232-Verbindung Mikrocontroller - PC ?
welcher Controller, AVR oder PIC?
woher kommen die Daten, wohin sollen sie gehen, nur eine
Datenrichtung?
wie schnell muß es sein, Baudrate?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Weg dahin wäre:

Das Datenblatt des Controllers nehmen und nachschaun, welche Register
für UART zur Verfügung stehen und was man da reinschreiben muss, damit
UART aktiviert und initialisiert wird.
Dann nachschaun, welche Interrupts es gibt und wie sie aufgerufen
werden. In ASM wäre das über die Interrupt-Sprungtabelle, mit
Hochsprachen kenne ich mich nicht aus.
Dann (in ASM) den jeweiligen Int aktivieren (USRT-Steuer-Register) und
Interrupts global einschalten.
Bei UART über Interrupt sollte man sich auch noch Ringbuffer für RX und
TX im SRAM anlegen, auf die das Hauptprogramm dann zugreifen kann. Somit
kann UART über Interrupts völlig im Hintergrund laufen, während das
Hauptprogramm Daten in den TX-Ringbuffer schiebt, wenn sie anfallen und
in regelmäßigen Abständen den RX-Ringbuffer ausliest, bis er leer ist.

Ich hoffe ich konnte dir helfen, auch wenn du nicht genannt hast, in
welcher Programmiersprache auf welchem Mikrocontroller du das
realisieren willst.

...

Autor: biggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ALso, ich programmiere einen ATmega32 mit C_Sprache, die Daten sollen in
beide Richtungen laufen(senden und empfangen)! Die Daten sollen dann von
Atmega32 gesendet werden!
Die uart initialisierung....habe ich schon nur das Prinzip mit dem
Interrupt kapiere ich noch nicht soooo ganz: wann soll es ausgelöst
werden.....

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Interrupt wird von einem "externen Ereignis" ausgelöst. Im Falle
von UART stehen 3 Interrupts bereit, siehe Datenblatt Mega32 Tabelle 18
auf Seite 42.

14 $01A USART, RXC USART, Rx Complete
15 $01C USART, UDRE USART Data Register Empty
16 $01E USART, TXC USART, Tx Complete

Die genaue Erklärung findest du auf Seite 156 (Transmitter Flags and
Interrupts) für das Senden und auf Seite 150 (Receive Compete Flag and
Interrupt) für das Empfangen.

Die Interrupts sagen dir, dass ein Zeichen angekommen ist (RXC) und (in
den RX-Ringbuffer) gesichert werden muss bzw. dass UDR beim Senden leer
ist (UDRE) und ein weiteres Zeichen (aus dem TX-Ringbuffer)
nachgeschoben werden darf. TXC sagt dir, dass alle Bits gesendet wurden
und UART-TX deaktiviert werden kann, falls keine weiteren Daten zum
Senden anstehen.

...

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.