www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupts ausschalten bei LPC's


Autor: Jacob S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich einen Puffer, wo UART-Daten geschrieben werden, auslesen will, 
muss bei der LPC-Programmierung die Interrupts ausschalten wie bei den 
AVR's oder ist das nicht nötig?

Danke

Autor: Jacob S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine, muss man vorher den UART-Interrupt ausschalten und dann 
auslesen und danach wieder einschalten, damit auch nicht gleichzeitig 
gelesen und geschrieben wird oder ist das nicht nötig? wie ich das in 
einige LPC UART-Beispiel-Code gesehen habe.

Autor: Jacob S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leute, was ist denn los? also entweder ist meine Frage zu blöd oder zu 
kompleziert.
Weiss kein Mensch was darüber?

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du braucht den Interrupt nicht auszuschalten. Der UART arbeitet 
vollduplex.

MfG Mark

Autor: Frank N. (arm-fan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre ja mal ganz schön, wenn du erzählen würdest um welche µC-
Architektur es sich handelt. LPC 8051er oder LPC ARM?
Oder gar noch etwas ganz anderes?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an welchen Puffer du meinst: Den FIFO der UART selbst (wie 
Mark evtl. vermutete) oder einen Puffer im Speicher, der in einer 
Interrupt-Routine gefüllt wird.

Bei letzterem Fall wird es meist notwendig sein, kurzzeitig die 
Interrupts entweder insgesamt oder nur den UART-Interrupt abzuschalten. 
Es gibt wohl eine Methode, die ohne auskommt, aber einfacher wird's 
dadurch letztlich auch nicht.

Das zugrunde liegende Problem ist unabhängig von der 
Prozessorarchitektur.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Frank N.:
Sorry, das hätte ich noch angeben müssen, es geht um einen LPC2368 
ARM7TDMI

@Andreas Kaiser:
>Bei letzterem Fall wird es meist notwendig sein, kurzzeitig die
>Interrupts entweder insgesamt oder nur den UART-Interrupt abzuschalten
Ich meine in einem Puffer im Speicher der in einer Interrupt-Routine 
gefüllt wird.
Interrupts abschalten und starten so?
void ClrInt(unsigned int IntNumber)
{
 VICIntEnClr = 1 << IntNumber;
}

void StartInt(unsigned int IntNumber)
{
  VICIntEnable = 1 << IntNumber;
}

Oder muss man es anderes machen?
Danke

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So kann man es machen. Man sollte dabei allerdings das Zeitverhalten von 
CPU und Interrupt-Controller im Auge behalten. Denn es kann ein paar 
Takte dauern bis sich eine solche Maskierung durchgängig auswirkt, d.h. 
es kann bereits ein Interrupt im Anmarsch sein, der dann noch kurz nach 
dieser Maskierung aktiv wird. Und es wird dann von der Version von Core 
und Interrupt-Controller abhängen, ob dafür der UART- oder ein möglicher 
Default-Vector (spurious interrupt) greift.

Einfacher ist es folglich, wenn man den Interrupt in der CPU abschaltet.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Einfacher ist es folglich, wenn man den Interrupt in der CPU abschaltet.
Wie macht man das denn?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indem man die Doku der Library des Compilers seiner Wahl durchliest. 
Oder, wenn die nichts hergibt, in bischen auf www.gidf.de 
herumschnüffelt.

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.