Clock vom µC bestimmen

Gast #328014
Lesenswert?
• ▲
▼
.include "usb1287def.inc"

    ldi R16, $FF
    out DDRD, R16

loop:  cbi PORTD, 0
    sbi PORTD, 0
    cbi PORTD, 0
    sbi PORTD, 0
    cbi PORTD, 0
    sbi PORTD, 0
    cbi PORTD, 0
    sbi PORTD, 0
  rjmp loop

Hallo!
Da ich Probleme mit meiner UART habe:
Ich denke ich habe einen externen Quarz (8MHz) auf dem STK525 als CLK.
Doch wenn ich mit diesem Takt meine Baud Rate bestimme oder aus dem
Datenblatt entnehme sendet die UART nur Müll. Habe herausgefunden, dass
alles wunderbar funktioniert, wenn ich einen Takt von 1MHz zur
Berechnung der Baud Rate annehme.
Bei den Fuses ist folgende aktiviert:
Ext.Crystal Osc.; Frequency 8.0- MHz; Start-up time: 258 CK + 65ms;
[CKSEL=1110 SUT=01]

Deshalb möchte ich mit dem oben stehenden Code meine Taktfrequenz
ermittelnermitteln. Habe mit dem Oszilloskop für die Taktdauer und die
Taktpause jeweils 2µs gemessen. (Die Taktdauer bei der er die Schleife
aufruft ist 4µs)
Kann ich jetzt einfach annehmen, dass ein Assemblerschritt einem Takt
entspricht?
(Hab noch nie Assembler programmiert...Bin erst seit gestern dabei)

Vielen Dank für die Hilfe.

Anbei noch der Code mit dem ich über die UART ein hochlaufendes
Register senden möchte
Angehängte Dateien:
Gast #328015
Lesenswert?
• ▲
▼
je nach Befehl dauert es 1 oder 2 Takte, das steht im Datenblatt. Aber
die set/reset dürften nur einen Takt brauchen
bei Sprungbefehlen kommts darauf an, ob ein Sprung stattfindet, dann
dauerts einen TAkt länger. Der rjmp loop dürfte 2 Takte dauern
Gast #328016
Lesenswert?
• ▲
▼
> Ich denke ich habe einen externen Quarz (8MHz) auf dem STK525 als
> CLK.

Was genau heißt "Ich denke..."?

> Habe herausgefunden, dass alles wunderbar funktioniert, wenn ich
> einen Takt von 1MHz zur Berechnung der Baud Rate annehme.

Dann wird dein µC wohl mit 1 Mhz laufen.

> Bei den Fuses ist folgende aktiviert:
> Ext.Crystal Osc.; Frequency 8.0- MHz; Start-up time: 258 CK +
> 65ms;
> [CKSEL=1110 SUT=01]

CKDIV8-Fuse?

> Kann ich jetzt einfach annehmen, dass ein Assemblerschritt einem
> Takt entspricht?
 (Hab noch nie Assembler programmiert...Bin erst seit gestern dabei)

Kommt drauf an, was du mit "Assemblerschritt" meinst. Im Datenblatt
steht für jeden Befehl, wieviele Taktzyklen er braucht. sbi und cbi
benötigen beispielsweise jeweils zwei Taktzyklen. Also läuft dein µC
definitiv mit 1 Mhz.
Gast #328017
Lesenswert?
• ▲
▼
Hab in der Hilfe nachgeschaut. SBI benötigt 2 Takte. Damit komme ich
dann ja auch wieder auf meinen CLK von 1MHz.
Aber warum 1MHz? Ich habe doch bei den Fuses angegeben, dass er den
externen 8MHz Quarz nehmen soll. Habe den Quarz auch nachgemessen.
Genau 8MHz. Am Eingang XTAL1 vom AT90USB1287 liegen auch 8MHz.
Habe die Jumper die den CLK vom STK500 übernehmen würden offen. Andere
Jumper (für CLK) habe ich auf dem STK525 nicht gefunden.
Muss ich da noch irgendwas in den Fuses umstellen?
Bitte helft mir. Sitze da schon den ganzen Tag dran und verzweifle
bald.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.