Interrupt mit LPC1347

Gast #3934855
Lesenswert?

Hallo
Ich versuche nun schon ne ganze Weile eine LED zum blinken zu bekommen 
xD
Nun zum eigentlichen Problem, ich möchte auf meinem uC Board eine LED 
blinken lassen, die heartBeat LED, diese dient einfach dazu, dass man 
sieht, er läuft.
Dafür möchte ich den integrierten 48bit RI counter verwenden. Dieser 
soll mir einen Interrupt auslösen und in der ISR die LED toggeln.
Nun habe ich aber das Problem, dass der uC gar nicht in die ISR 
hineingeht. Ich finde aber keinen Fehler in meinem Code^^
Hier der Code meiner main.c, die LED wird hier durch die ISR nur 
ausgeschaltet, um zu sehen, ob die überhaupt einmal ausgeführt wird, was 
nicht der Fall ist.

Hat schon jm. erfahrungen mit diesem uC und kann mir da helfen?

DANKE

Gruss Nouda

Ich verwende diese Board: 
http://www.embeddedartists.com/products/lpcxpresso/lpc1347_xpr.php

Mit
1
HALConfigApp::s_heartBeat.setGPIO(GPIO::GPIO_STATE::OFF);
 wird die LED ausgeschaltet und
mit
1
HALConfigApp::s_heartBeat.setGPIO(GPIO::GPIO_STATE::ON);
 eingeschaltet.

1
#include "LPC13Uxx.h"
2

3
#include <stdio.h>
4
#include <cr_section_macros.h>
5
#include "HardwareSetup.h"
6
#include "GPIO.h"
7
#include "SystemClock.h"
8
#include "HALConfigApp.h"
9

10
int LED;
11

12
void OSTIMER_IRQHandler(void){
13

14
   // Clear interrupt
15
  LPC_RITIMER->CTRL |= (1<< 0);   // Write RITINT to clear
16

17
  HALConfigApp::s_heartBeat.setGPIO(GPIO::GPIO_STATE::OFF);
18

19
}
20

21
void RIT_IRQHandler(void) {
22
   // Clear interrupt
23
  LPC_RITIMER->CTRL |= (1<< 0);   // Write RITINT to clear
24

25
  HALConfigApp::s_heartBeat.setGPIO(GPIO::GPIO_STATE::OFF);
26
}
27

28
int main(void) {
29
  SystemCoreClockUpdate();
30

31
  __enable_irq();  
32
  __enable_fault_irq();
33

34
  //Stop RI Timer
35
  LPC_RITIMER->CTRL = 0;
36

37
  //Init RI Timer
38
  LPC_RITIMER->COMPVAL = 6000000;    //setting compare Value to 6kk -> 2Hz
39
  LPC_RITIMER->COMPVAL_H = 0;
40

41
  //Reset RI Timer
42
  LPC_RITIMER->COUNTER = 0;
43
  LPC_RITIMER->COUNTER_H = 0;
44

45
  //set RI Timer to clear on match, halt on debug, RITEN -> start
46
  LPC_RITIMER->CTRL = (1<< 1) | (1<< 2) | (1<< 3);
47

48
  //Enable RIT interrupt
49
  NVIC_EnableIRQ(RIT_IRQn);
50

51

52
  HALConfigApp::s_heartBeat.setGPIO(GPIO::GPIO_STATE::ON);
53
  //LED = 1;
54

55
  while(1){
56

57
  }
58

59
    return 0 ;
60
}
Gast #3934877
Lesenswert?

Wenn bei mir eine simple Sache auf dem ARM nicht läuft, habe ich 
meistens vergessen, die CLK für den entsprechenden Hardwareblock 
freizuschalten (Register SYSAHBCLKCTRL). Wie siehts damit bei dir aus? 
Werden die GPIOs überhaupt getaktet?

Der LPC-Link bietet übrigens die Möglichkeit zum Debuggen. Du kannst 
dich schrittweise durchs Programm hangeln, die Registerinhalte 
anschauen, ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren