mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt service rountine für LPC


Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir wer weiterhelfen?
krieg das mit den Interrupts nicht hin...

kann mir irgendwer ein kleines Codebeispiel für ne 
Interruptservice-Routine geben, damit ich mich ein wenig dran 
orientieren kann?

Gruß und DANKE

Roman

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schön wärs wenn du ein bischen Code zur Verfügung stellst und dein 
Problem beschreibst.

C ?, ASM ? welcher Interrupt ?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Plattform?

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tschuldigung für meine knappe Ausdrucksweise.

Ich programmiere in C mit der Entwicklungsumgebung Hitop, kenn mich aber 
auch mit uVision ein wenig aus.
Bei meiner Entwicklungsumgebung ist ein kleines Programm dabei 
(StartEasy) mit dem man sich die ganzen Einstellungen für Ports, 
Baudrates, Interrupts usw. generieren lassen kann. Bisher bin ich 
relativ gut damit zu recht gekommen, allerdings bei den Interrupts 
versteh ich nur Bahnhof.
Hab gedacht jemand von euch hat schon mal so was gemacht und kann mir 
ein bereits geschriebenes Programmchen schicken.

was StartEasy so ausspuckt:

/* defines for interrupt handlers */

/* unasigned interrupts:  */
void isr_Default ( void ) _attribute_ ((interrupt ("IRQ")));



/* interrupt handler IRQ and FIQ interrupts */
/* interrupt handler for Default interrupt vector */
void isr_Default ( void )
{
    SWITCH_IRQ_TO_SYS;

    IOPIN1 = 0x0000FF00;

    SWITCH_SYS_TO_IRQ;
    /* clear interrupt in VIC */
    VICVectAddr=0;
}





    /* configuration of channel 0
IRQ channel is assigned to an interrupt
channel but not enabled for IRQ. */

    /* configuration of default interrupt vector */
    VICDefVectAddr = (unsigned int)isr_Default;

    /* enable selected interrupts */
    VICIntEnable = VIC_SOURCE_EINT1;
    /* Select enabled interrupts which are configured as FIQ */
    VICIntSelect = VIC_SOURCE_EINT1;
}

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne HITOP nicht aber der Code sieht für mich nach einem leeren 
Template aus.

Interrupts sehen in etwa so aus:
void timer_0_isr (void) interrupt 1

wobei "interrupt 1" ein keyword ist welches dem Compiler mitteilt das es 
sich hierbei um den Timer 0 Interrupt handelt. Der Code wird somit an 
die ISR Einsprungadresse für Timer 0 gesetzt.

TMOD = 0x01;          // Timer 0 Modus 1 = 16 BIT Timer
ET0 = 1;              // Enable Timer 0 Interrupt
EA = 1;               // Enable All BIT = 1
TR0 = 1;              // Timer 0 starten

Diese Anweisungen stellen nun Timer 0 in Modus 1 und bei Überlauf wird 
der Interrupt ausgelöst.

void timer_0_isr (void) interrupt 1 {
// mach was
}

Alles klar ?

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube das Beispiel für den 8051er hilft hier nicht wirklich...
Mit LPC ist wohl eher ein ARM gemeint.

Hab aber auch leider grad nix parat.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ooooh, sorry Ich hatte die Namensgleichen 8x51 LPC's im Kopf ;-((

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ARM-Fan wrote:
> Ich glaube das Beispiel für den 8051er hilft hier nicht wirklich...
> Mit LPC ist wohl eher ein ARM gemeint.


Komisch, daß sich manche lieber ein Bein ausreißen, ehe sie die genaue 
CPU-Bezeichnung rausrücken.

Das sollte eigentlich immer die allererste Angabe sein, wenn man Fragen 
hat.


@Roman

Also um welchen Chip geht es hier ?


Peter

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter, du sprichst mir aus der Seele, so langsam habe ich keine Lust 
mehr jemandem zu helfen. Mittlerweile sind doch einige nicht mehr in der 
Lage eine Frage vernünftig zu formulieren.

Bin eigentlich auch ein Geduldsesel aber im Moment hab ich die Faxen 
dicke ;-))

Autor: Robert Teufel (robert_teufel_nxp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme einfach mal an es handelt sich um einen Typen der LPC2000 
Familie.

Fuer die Grundinitialisierung ist diese Application Note waermstens 
empfohlen:
http://www.standardics.nxp.com/support/documents/m...
Ein schoenes Beispiel fuer Interrupts gibts hier:
"Nesting of interrupts in the LPC2000" auch wenn es keine "Nested" 
interrupts sind
http://www.standardics.nxp.com/support/documents/m...

Hoffe das hilft mal weiter, Robert

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss mich an dieser Stelle entschuldigen, meine unpräzisen Angaben 
haben für etwas Aufregung gesorgt.
Aber vielen Dank für Eure Beiträge, habs mit diesen Hilfestellungen nun 
doch hingekriegt...

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.