www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2138 EINT0 nur ein mal!


Autor: wast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hoffe, ihr könnt mir helfen, da ich ein Problem mit dem LPC2138 
habe.
Der LPC2138 soll bei JEDER negativen Flanke an GPIO0.16 (EINT0) einen 
Interrupt auslösen. Es war soweit kein Problem, alle Register 
entsprechend zu konfigurieren. Ein einzges mal funktioniert es ja.
Natürlich setzt ich das Interrupt-Flag in der ISR zurück, mittles:

EXTINT = 0x1;

Weiß jemand, warum dies nur ein mal funktioniert?

Schon mal DANKE!

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

Bewertung
0 lesenswert
nicht lesenswert
Bischen mehr vom Code wäre nützlich. Der VIC will nämlich auch noch 
gestreichelt werden.

Autor: wast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich dachte, das ich prinzipiell was vergessen hätte!

ISR:
====
void canIntHandler(void)
{
  EXTINT = 0x1;

  gpioToggle(GPIO_LED);
  canInterrputFlag = flagSet;

  VIC_VECTADDR = 0x00000000;  /* reset VIC */
}

Init-Teil:
==========

...
  /* register interrupt handler and enable the interrupt source */
  EXTINT = 0x1;
  vicSetIRQSlot(IRQ_SLOT_CAN, IRQ_SOURCE_CAN, canIntHandler);
  vicIntEnable(IRQ_SOURCE_CAN);

  EXTINT = 0x1;
  EXTMODE = 0x1;
  EXTPOLAR = 0x0;
  EXTINT = 0x1;

--> Die Funktionen mit vic... funktionieren in allen anderen Fällen 
(andere IRQs)
--> Bei einem Timer funktioniert alles wunderbar! Es muss also etwas mit 
dem EINT0 zu tun haben.

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

Bewertung
0 lesenswert
nicht lesenswert
Sind in deiner Umgebung Interrupt-Handler normale C-Funktionen?

Errata-Sheet gelesen? Es gibt irgendwelche LPCs, bei denen sich die 
Konfiguration externer Interrupts und irgendwelche Systemsteuerungen ins 
Gehege kommen.

Autor: wast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du mit: "Sind in deiner Umgebung Interrupt-Handler normale 
C-Funktionen?"
Ja, ich rufe C-Funktionen in der ISR auf. (Entfernen hat nichts 
gebracht)
Ja, die ISR steht mitten in einem C-File?!?

Hab dur das errata zum LPC2138 gelesen. Gibt es auch noch eins generell 
für LPCs`?

-> DANKE für die schnelle Hilfe!

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

Bewertung
0 lesenswert
nicht lesenswert
> Was meinst du mit: "Sind in deiner Umgebung Interrupt-Handler normale
> C-Funktionen?"

Je nach Library/HAL sind Interrupt-Handler normale C-Funktionen oder 
müssen speziell als Interrupt-Handler gekennzeichnet werden.

> Hab dur das errata zum LPC2138 gelesen.

Dieses meinte ich. Vorzugsweise das zu richtigen Version. Original und 
/01 sind zwei sehr verschiedene Hardware-Versionen.

Autor: wast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir beide errata sheets angeschaut, da steht nix drin, was relevant 
sein könnte.

Hat jemand am LPC2138 einen EINT0 verwendet, der funktioniert?

Autor: wast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, jetzt funktioniert es!

Folgender Tipp war wichtig: "Je nach Library/HAL sind Interrupt-Handler 
normale C-Funktionen oder
müssen speziell als Interrupt-Handler gekennzeichnet werden."

--> Also nochmal DANKE an Andreas Kaiser

Ich verwende winIDEA als IDE mit gcc-Compiler.

Die IRQ-Funktion muss folgendermaßen definiert sein:
void canIntHandler(void) __attribute__ ((interrupt("IRQ")))

Super Forum!

Autor: wast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich frage mich aber immer noch, warum es ansonsten immer funktioniert 
hat?!?

--> Wie dem auch sei, jetzt ist es Korrekt geschrieben und funktioniert 
dementsprechend auch!

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.