Hallo, wie kann ich einen ATMega 8 mit Bascom dazu bringen, den Timer1 mit nem externen Takt hochzuzählen? Wie muß ich den Timer1 Konfigurieren?
Gast
#801039
"Clock Select" für Timer 1 auf "External Clock" (=> Datenblatt)
Dann den Takt an den entsprechenden Pin anlegen ("T1" heißt der mein
ich)
Danke für deine Antwort. mir geht es aber um die Register, wie ich die setzen muß. Ich probiere jetzt schon sein 4 Stunden und ich kriege den T1 nicht auf den Zähler durchgeschaltet. Wie müssen die Register TCCR1A, TCCR1B gesetzt werden? Muß ich weitere Register oder Bits setzen?
Gast
#801064
=> http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf TCCR1A = 0; TCCR1B = (1 << CS10) | (1 << CS11) | (1 << CS12); /* Wert 0x07, Extclock, rising edge */ (C-Syntax, weiß nicht wie das in Bascom aussehen muss...) Würd ich jetzt spontan sagen...
Gast
#801065
Ach ja: Seite 100 im verlinkten Datasheet Kann man hier irgendwie editieren?
Hi Sebastian, habe die Register geprüft. TCCR1A ist 0 gesetzt und TCCR1B ist (dezimal) 7. Der Simulator zeigt dies an. Trotzdem gehts nicht. Im Datenblatt (Seite 100) ist die Tabelle mit der Clock-Select-Description. Direkt darunder steht noch ein Satz, den ich nicht verstehe. Soll ich den Pin D5 (T1) wirklich als Ausgang schalten? Oder verstehe ich das falsch? Da steht Software-Control des Zählers. Was bedeutet dieser Satz? Hier mal der Quellcode von mir:
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 | |
81 | |
Hallo Leute,
vielen Dank für eure Hilfe.
Den Fehler konnte ich jetzt finden.
Es lag nicht an den Registern.
Sondern meine Output-Compare2 Interruptroutine war falsch.
Ich Dödel (ups) muß doch den Timer 1 zurücksetzen und auch diesen
auslesen!
' OC2-Interrupt von Timer 2
' wird alle 0,01 Sekunden aufgerufen
ISR_Zeitbasis:
incr ZeitBasisCount
if ZeitBasisCount = 50 then
Zaehlerstand = timer2
ZeitBasisCount = 0
Timer2 = 0
Flags.0 = 1
end if
Return
Jetzt funzt es! :)
Danke an alle!
Gruß Mitch
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.