Forum: Mikrocontroller und Digitale Elektronik Clock vom µC bestimmen


von Jan (Gast)


Angehängte Dateien:

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

von Christoph Kessler (db1uq) (Gast)


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

von Rolf Magnus (Gast)


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.

von Jan (Gast)


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.

von Jan (Gast)


Lesenswert?

Okay, danke das mit dem CLK hat sich erledeigt. Bin eben noch mal genau
die Fuses durchgegangen und habe gesehen, dass eine aktiviert war, die
meinen außen anliegenden Takt durch 8 teilt...

von Rolf Magnus (Gast)


Lesenswert?

Irgendwie fühle ich mich übergangen :-(

von Jan (Gast)


Lesenswert?

@Rolf: Jetzt steh ich ja doof da... Aber Deine Antworten wurden bei mir
noch nicht angezeigt als ich das geschrieben habe. Aber vielen Dank für
Deine Hilfe

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
Noch kein Account? Hier anmelden.