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
>gibt es beim LPC 2294 eigentlich einen intregierten Zähler
Schon mal das Datenblatt befragt?
Ja habe ich. Nur bin ich mir nicht ganz sicher ob das Count Control Register(CTCR) einfach ein Zähler ist denn ich extern beschalten kann, oder ob dieser nur in Verbindung mit dem Timer läuft. Deshalb meine allgemeine Frage! MFG Hotte
Der LPC2294 hat keinen externen Zaehleingang, der LPC2294/01 sollte aber einen haben, wenn ich mich richtig erinnere. Gruss, Robert
Hallo Robert, so etwas habe ich auch gelesen. Aber wie kann ich dem Chip entnehmen ob es ein LPC2294/01 ist oder ein LPC2294?
wie wärs mit dem auslösen eines externen Interuptes bei Flanke oder Pegel, damit dann einen Zähler bedienen oder so?
@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
@ 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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.