Gast
#1215357
Hallo, ich benutze einen Mica2dot Mote von Crossbow, der mit dem Atmega 128L bestückt ist. Der Prozessor wird mit 4MHz getaktet. Als Programmierplattform nehme ich tinyOS. Ich möchte eine Frequenzmessung eines Rechtecksignals vornehmen, das am INT0 angeschlossen ist und bei jeder aufsteigender Flanke einen HardwareInterrupt auslöst. Die aufsteigenden Flanken sollen jeweils 15ms lang gezählt werden (ich brauche das resultat nicht in Hz). Die Zählwerte werden zunächst im Speicher gehalten und am Ende gemeinsam über UART ausgegeben. Das Problem, das ich habe, ist, dass das Ganze nur bis ~30kHz funktioniert, ich möchte aber bis 100kHz messen. Laut Datenblatt können die I/O-Pins des ATmegas Impulse mit bis zu 50ns Dauer detektieren, daher nehme ich an, dass rein physikalisch 2MHz die Grenzfrequenz für den Hardwareintzerrupt wäre. Liege ich mit der Überlegung richtig oder habe ich da noch einen denkfehler gemacht ? Kann mir jemand sagen, ob ich den Chip überfordere? Oder liegt es daran, dass ich tinyOS verwende und ich käme mit Assembler hin? ... Hier ist der Sourcecode in nesC:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
Vielen Dank schon mal für sachdienliche Hinweise