LPC2294 integrierter Zähler

OP #1069376
Hallo Leute,

gibt es beim LPC 2294 eigentlich einen intregierten Zähler der zum 
Beispiel eine steigende Flanke erkennt und diese dann zählt?
Ich möchte gerne von außen kommendes Signal zählen lassen und mit einer 
Start-Stop Funktion diesen Zähler starten und stoppen und später den 
Wert ausgeben.
Man kann nartürlich auch dieses per Handprogrammieren und in einer 
if-Anweisung auf high-Pegel abfragen. Aber lieber wäre mir eine Fuktion 
wie z.Beispiel der Timer nur halt als Zähler.
Danke schon mal für eure Mühe im voraus.

MFG
Hotte
Gast
@ARM-FAN

Ist ja schon gut. Habe nicht begriffen, dass die Zeile darunter erst 
aussagt um welchen es sich handelt. Musste erst wieder das Erratasheet 
suchen wo folgendes steht:

Identification
The typical LPC2294/01 devices have the following top-side marking:
LPC2294xxxxxx
/01
xxxxxxx
xxYYWW R
Gast
@ Robert

Beim LPC2294/01 habe ich zwar das Erratasheet gefunden, aber niergens 
ist von einem Zähler erwähnt. Wäre verdammt freundlich wenn du noch 
genau wüßtest wo ich die Anleitung dafür finden würde.

MFG
Hotte
Gast
Sieh dir mal das CTCR Register an. Da kann man zwischen Timer
und Counter Mode wählen. Im Counter Mode zählen die Timer je
nach Konfiguration bei steigender/fallender/beiden Flanken
eines externen Signals an den CAPxx Pins.
Dabei ist es egal ob /01 oder nicht.
Gast
Hallo Leute,

hab mir noch mal das Hardware-Manuel durchgelsen. Ich hab jetzt mit dem 
T0CTCR Register einen Counter aktiviert. Dieser zählt auch, aber nicht 
100% konstant. Ich habe eine geringe Abweichungen zwischen meinen 
Zählwerten. Zudem wollte ich gerne, dass er noch einen Interrupt 
auslöst. Dieses passiert allerdings auch nicht. Kann sich jemand den 
Code ansehen und mir sagen wo mein Fehler liegt?
1
#include <stdio.h>                  // standard I/O .h-file           
2
#include <LPC22XX.H>                // Header-Datei LPC2294 einbinden
3

4
long volatile zaehlwert;
5
long volatile zaehlreg;
6

7

8
__irq void tc0 (void) 
9
{
10
  zaehlwert = zaehlwert++;
11
  T0IR        = 1;                            
12
  VICVectAddr = 0;                            
13
  IOCLR0 =0x00000100 ; 
14
}
15

16
void init_timer (void) 
17
{
18
    PINSEL0 |=(1<<9);  //P0.4 auf CAP0 PIN9 auf eins - PIN8 auf Null
19
  PINSEL0 &=~(1<<8);
20
  zaehlwert = 0;
21
  
22
//  T0CCR = 1;
23
//   T0IR =  0x10;    // Interrupt wenn cap0 Ereignis erkennt
24
  T0TCR =2              
25
  T0CTCR = 5;  // Zähler für steigende Flanke 
26
  T0TCR = 1;  // Timer0 aktiviert
27
  
28
    VICVectAddr2 = (unsigned long)tc0; 
29
    VICVectCntl2 = 0x20 | 4;                 
30
    VICIntEnable = 0x00000010;                 
31
}
32

33
int main ()
34
{
35
  zaehlreg = 0;
36
  init_timer();
37
  IODIR0 = 0x00000100;        // LED Port 8 aktiviert
38
  IOSET0 =0x00000100 ; 
39
  
40
  while(1)
41
  {
42
    zaehlreg = T0TC;
43

44
  }
45
}

Schon mal vielen Dank im Vorraus. Könnte echt Hilfe gebrauchen.

MFG
Hotte

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.