Gast
#4364370
Hallo, Ich habe hier ein Projekt, bei welchem ich zu definiertem Zeitpunkt einen 2 ms langen Puls auslösen will. Dazu verwende ich den Timer0 mit Prescaler 1024 und lasse ihn 30 Tics laufen, bis er in den Compare Interrupt läuft. Dort wird der Puls beendet und der Interrupt deaktiviert. Bei Start des nächsten Pulses (getriggert durch die fallende Flanke des FGs) wird der Timer auf 0 gesetzt und der Interrupt wieder aktiviert. Das Lustige ist, dass es nur manchmal funktioniert. In ca 70% der Fälle kommt ein nur ca 7 ns langer Puls durch. In den anderen 30% funktioniert es wie gedacht. Nach einigen Resets des Controllers ändert sich das Verhalten, es springt wenn man oft genug resettet beliebig hin und her. Ich verwenden einen AT90CAN128 auf dem AVR-CAN Board von Olimex, AVRstudio 4.18 mit WinAVR toolchain und den Olimex USB-JTAG ( Wobei das Jtag-Debugging nicht ganzfunktioniert, warum auch immer... ) unter Win10 Im Anhang die Oszi-Screenshots, nichts am Programm oder der Umgebung geändert, nur resettet. Code:
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 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |


