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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.