Schleife/SPI Konfig/Taktfreq

Gast #349078
Lesenswert?

Hallo!

Ich möchte gern eine PWM Ausgabe über ein Schieberegister realisieren.
Zunächst reicht es mir aus, wenn alle 8 Ausgänge mit dem gleichen PWM
Signal angesteuert werden. Dazu verwende ich zwei Makros zum Ausgeben
der Zustände ON und OFF über das SPI Interface, die ich über Schleifen
entsprechend zeitlich einstellen will.

Bei folgender Schleife zur Zeitverzögerung habe ich ein Problem,
da nicht nach 3 Durchläufen, wenn das Z Bit eigentlich gesetzt
werden würde, aus der Schleife herrausgesprungen wird.
Hat dafür vielleicht jemand eine Erklärung?

CLR R17
zaehl1:
  LDI R17, 0b00000011
  ON
  DEC R17
  BRNE zaehl1

Mit den folgenden Zeilen möchte ich das SPI Interface meines ATMega16
konfigurieren:

LDI mp, 0b01110000 ;
OUT SPCR, mp ;SPI Control Register
LDI mp, 0b00000001
OUT SPSR, mp ; SPI Status Register

Was ich nicht ganz nachvollziehen kann, ist das bereits nach der
Ausführung der 4. Zeile davon der Data Ausgang des SPI Interface
(PB5) auf High geht... Im SPI Status Register möchte lediglich Bit 0
setzen um die maximale SCK Frequenz von fsck=fosc/2 einzustellen.

Ich habe noch eine weitere Frage zum AtMega16 in Verbindung mit
einem STK500. Kann ich auch irgendwie eine höhere Oszillatorfrequenz
als 3.868MHz einstellen? Denn in den Board Options ist dies die höchste
vorgegebene einstellbare Freuqenz...

Vielen Dank,

Gruß Matze
Angehängte Dateien:
Gast #349079
Lesenswert?

>Kann ich auch irgendwie eine höhere Oszillatorfrequenz als 3.868MHz
>einstellen?

Nur mit einem externen Quarz (-Oszillator).

Zum Programmproblem kann ich nichts sagen (keine Ahnung von ASM...).

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