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


von Roman (Gast)


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

von Joe (Gast)


Lesenswert?

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

C ?, ASM ? welcher Interrupt ?

von A.K. (Gast)


Lesenswert?

Welche Plattform?

von Roman (Gast)


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;
}

von Joe (Gast)


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 ?

von ARM-Fan (Gast)


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.

von Joe (Gast)


Lesenswert?

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

von Peter D. (peda)


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

von Joe (Gast)


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 ;-))

von Robert T. (robert_teufel_nxp)


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/microcontrollers/pdf/an10404.pdf
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/microcontrollers/pdf/an10381.pdf

Hoffe das hilft mal weiter, Robert

von Roman (Gast)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.