Timer Interrupt LPC1768

Gast #1964359
Lesenswert?
• ▲
▼
Hallo,
ich versuche gerade ein Timer Interrupt mit dem LPC1768 zu erzeugen.
Meine CPU Frequenz beträgt 96MHz und die Peripheriefrequenz 24MHz.
Das Interrupt soll alle 0,000001s aufgerufen werden.
1
LPC_TIM0->MR0 = 24;
2
  LPC_TIM0->MCR = 3;    /* Interrupt and Reset on MR0 */
3

4
  NVIC_EnableIRQ(TIMER0_IRQn);
5
  LPC_TIM0->TCR = 1;
6
  LPC_TIM0->IR = 1;  
7

8
  while(1)
9
  {
10
      ...
11
  }
12
}
13
void TIMER0_IRQHandler (void) 
14
{
15
       counter++;
16
  if(counter >=0 && counter <= 2000)
17
  {
18
 
19
    LPC_GPIO1 -> FIOPIN |= XWR;
20

21
  }
22
  else if (counter >= 2001 && counter <= 2000)
23
  {
24
    LPC_GPIO1 -> FIOPIN &= ~XWR;
25
  }
26
  else if (counter >= 2001)
27
  {
28
    counter = 0;
29
  }}

Jedoch wird der Interrupt nicht sofort gestartet sondern erst wenn das 
TOTC-Register überläuft und wenn ich mir den Ausgang den ich im 
Interrupt jede Millisekunde setzen bzw Rücksetzen will, ist der Pegel 
nicht ganz eine Millisekunde low, jedoch nur ca. 700µs high.
Ich hoffe ich habe mich verständlich ausgedrückt und an alles gedacht, 
danke für die Hilfe
Gast #1964365
Lesenswert?
• ▲
▼
ah sorry fehler von mir das soll natürlich
1
if(counter >=0 && counter <= 1000)
2
  {
3
 
4
    LPC_GPIO1 -> FIOPIN |= XWR;
5

6
  }
7
  else if (counter >= 1001 && counter <= 2000)
8
  {
9
    LPC_GPIO1 -> FIOPIN &= ~XWR;
10
  }
11
  else if (counter >= 2001)
12
  {
13
    counter = 0;
14
  }

heißen

Warum sind 24MHz zu langsam?
Gast #1964380
Lesenswert?
• ▲
▼
hm okay das eigentliche Ziel des ganzen ist es jedoch, dass ich Daten 
haben, die mit eine rFrequenz von 1MHz in meinen Controller reinkommen, 
ich möchte diese dann an einem anderen Pin ausgeben, jedoch geht dies 
nur, wenn die beiden synchron arbeiten also der Mikrocontroller synchron 
zu den Daten ausgibt.
Da dachte ich wäre es am einfachsten ein Interrupt jede µs auslösen zu 
lassen und die daten dort zu verarbeiten, weißt du eine andere 
möglichkeit?

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.