Atmega8535 Bascom+CTC

#2810874
Lesenswert?

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
Angehängte Dateien:
#2810887
Lesenswert?

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
#2810900
Lesenswert?

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?
#2810920
Lesenswert?

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
#2810972
Lesenswert?

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.
#2810986
Lesenswert?

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
#2811003
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren