Hallo Forum, Ich versuche mithilfe des Timer1 vom Atmega8535 einen Sekundentakt hinzubekommen.Der Systemtakt ist von meinem STK500 generiert und beträgt 1,8432Mhz (wegen RS232).Der Timer soll im Compare Modus laufen;dafür habe ich so den Wert ausgerechnet: 1843200Hz\256(Prescaler)-1=7199 Wenn ich es so auf den Chip schicke erhalte ich jedoch einen viel langsameren Takt(Code im Anhang).Kann mir jemand sagen woran das liegt? Danke im Vorraus Jonathan
Und warum muss man den 20-Zeiler in ein Zip-File einbetten? Es war schwer zu schreiben, als soll es auch für potentielle Helfer schwer zu lesen sein?
1 | $regfile = "m8535.dat" |
2 | $crystal = 1000000 |
3 | $hwstack = 40 |
4 | $swstack = 16 |
5 | $framesize = 32 |
6 | |
7 | Config Portb.2 = Output |
8 | Dim A As Byte |
9 | |
10 | A = 0 |
11 | |
12 | On Compare1a Sekunde |
13 | Enable Timer1 |
14 | Enable Interrupts |
15 | Enable Compare1a |
16 | |
17 | Ocr1a = 7199 |
18 | Config Timer1 = Timer , Prescale = 256 , Compare A = Disconnect , Clear Timer = 0 |
19 | |
20 | Do |
21 | |
22 | Portb.2 = 1 |
23 | |
24 | Loop |
25 | |
26 | |
27 | Sekunde: |
28 | |
29 | Portb.2 = 0 |
30 | |
31 | Return |
Ich mag mich irren (so gut kenn ich BASCOM dann auch wieder nicht). ABer sollte bei einem CTC nicht eigentlich
1 | Config Timer1 = Timer , Prescale = 256 , Compare A = Disconnect , Clear Timer = 0 |
Clear Timer auf 1 stehen? Oder anders ausgedrückt: Was in dieser Konfiguration macht dich glauben, damit den CTC Modus aktiviert zu haben?
Hallo Karl Heinz Buchegger schrieb: > als soll es auch für potentielle Helfer > schwer zu lesen sein? Nein,Entschuldigung:-) Karl Heinz Buchegger schrieb: > Clear Timer auf 1 stehen? Ich habe es auch schon mit 1 probiert,allerdings dann statt 7199 7200 geschrieben.Alles war gleich,jetzt habe ich nur die 0 zu ner 1 geändert und siehe da,es wird schneller(ca.3 mal so schnell wie vorher!?) Allerdings ist es immer noch ein bisschen zu langsam. Karl Heinz Buchegger schrieb: > Was in dieser Konfiguration macht dich glauben, > damit den CTC Modus aktiviert zu haben? Das war alles was ich über Config...CTC gefunden habe (sowohl in Bascom als auch im Internet) MfG Jonathan
< Der Systemtakt ist von meinem STK500 generiert und beträgt > 1,8432Mhz Die 1.8Mhz sind über jeden Zweifel erhaben? d.h. du bist absolut sicher, dass dieser Takt auch benutzt wird? ?? > $crystal = 1000000
Karl Heinz Buchegger schrieb: > Die 1.8Mhz sind über jeden Zweifel erhaben? ?? Karl Heinz Buchegger schrieb: > ?? >> $crystal = 1000000 Der "Schönheit halber hätte ich 1843200 schreiben können,das ändert aber nichts am Ergebnis. Jonathan
Jonathan M. schrieb: > Karl Heinz Buchegger schrieb: >> Die 1.8Mhz sind über jeden Zweifel erhaben? > > ?? Läuft der µC mit 1.8Mhz? Hast du das kontrolliert? > Karl Heinz Buchegger schrieb: >> ?? >>> $crystal = 1000000 > > Der "Schönheit halber hätte ich 1843200 schreiben können,das ändert aber > nichts am Ergebnis. Das schöne an solchen Sachen ist, dass man solche Auffälligkeiten im Code ganz leicht vermeiden kann. Erfahrungsgemäss sind aber diejenigen, denen solche Dinge egal sind auch sonst nicht unbedingt bei den 'exakt arbeitenden' anzusiedeln.
Hallo, Ich habe jetzt das Programm auf 1Mhz angepasst und es läuft jetzt! Karl Heinz Buchegger schrieb: > Läuft der µC mit 1.8Mhz? > Hast du das kontrolliert? Ich habe eine andere Frequenz eingestellt beim STK500 und dann mein RS232 probiert...läuft. Wenn ich mich jetzt an den Beitrag mit dem Rs232 Müll erinnere,dann fällt auf das es "plötzlich" egal ist auf welche FRequenz ich mein STK500 stelle!? Ich blick da jetzt nicht mehr durch.Hilfe:-) MfG Jonathan
Jonathan M. schrieb: > Ich blick da jetzt nicht mehr durch.Hilfe:-) Zumindest DIESER Mega ist auf 1Mhz interne Taktfrequenz gefused. Wenn er den Takt vom STK benutzen soll, musst du die Fuses entsprechend umstellen.
Aber wieso funktioniert dann auf einmal RS232 mit int. Oszillator? (Gleicher Mega)ganz sicher MfG Jonathan
Jonathan M. schrieb: > Aber wieso funktioniert dann auf einmal RS232 mit int. Oszillator? > (Gleicher Mega)ganz sicher Sagt je keiner, dass es überhaupt nicht geht. Wenn die interne Taktrate nahe genug an 1Mhz ist, dann reicht das ja. Woher der µC den Takt für die RS232 bezieht, spielt ja erst mal keine Rolle. Der Takt muss nur stabil genug sein und nahe genug und der Frequenz mit der die Teilerfaktoren errechnet wurden. Die Empfehlung für eine externe Taktquelle beruht auf 2 Umständen * bei einem Quarz ist die tatsächliche Taktfrequenz auf jeden Fall nahe genug an der aufgedruckten, so dass man diesen Unterschied erst mal unter den Tisch fallen lassen kann. (Ein 1.8432 Mhz Quarz macht nicht exakt 1843200 Schwingungen in der Sekunde. Das können auch 100 mehr oder weniger sein.) * die tatsächliche Taktfrequenz verändert sich bei einem Quarz bei Temperaturänderungen eher wenig im Vergleich zu einem RC-Glied. D.h. mit einem Quarz ist man auf Anhieb genau genug an einer stabilen, genau genug bekannten Frequenz. Ob das mit dem internen Takt auch so ist, ist hingegen eine ganz andere Geschichte. Was aber nicht heißt, das es nicht ebenfalls möglich ist, dass die eingestellte Frequenz auch tatsächlich genau genug eingehalten wird.
Aha ok also praktisch sehr zufällig... Danke für die Tipps!Ich werde nächstes Mal an den Quellcode denken;) MfG Jonathan
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.