Atmega8535 Bascom+CTC

OP #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:
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
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?
OP
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
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.
OP
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.