Forum: Compiler & IDEs SPI falsche Frequenz


von Martin (Gast)


Lesenswert?

Hallo,

ich spiel zur Zeit ein bisschen mit dem SPI Bus meines 1284p rum. Leider 
liefert der nicht die gewünschte Frequenz. Mein Mikrocontroller taktet 
mit20Mhz, also müssten laut Datenblatt eine 0 an SPR0, SPR1 und SPI2X 
einen 5 Mhz Takt ergeben, tatsächlich hab ich aber irgendwie um die 150 
kHz laut meinem Oszilloskop. Hier mein Code?


1
void SPI_MasterInit(void)
2
{
3
/* Set MOSI and SCK output, all others input */
4
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK) | (1<<DD_SS) | (1<<DD_RCK);
5
6
/* Enable SPI, Master, set clock rate fck/4 */
7
SPCR = (1<<SPE)|(1<<MSTR)|(0<<SPR0) |(0<<SPR1) |(0<<SPI2X);
8
}

von Michael H. (michael_h45)


Lesenswert?

Martin schrieb:
> Mein Mikrocontroller taktet
> mit20Mhz
Sicher?
Hast du die verwendeten Defines DDR_SPI, DD_MOSI, usw. auch definiert?
Restliche Init?

SPI2X sitzt übrigens nicht in SPCR.

von holger (Gast)


Lesenswert?

>tatsächlich hab ich aber irgendwie um die 150
>kHz laut meinem Oszilloskop.

Wer viel misst misst Mist. Zeig den Rest von deinem Code.

>also müssten laut Datenblatt eine 0 an SPR0, SPR1 und SPI2X
>einen 5 Mhz Takt ergeben

Ja, passt schon bis auf das bereits erwähnte SPI2X.
Wirkt sich aber nicht aus.

Ich denke das was du da misst ist was ganz anderes
als du glaubst.

von holger (Gast)


Lesenswert?

Falls du die Fuses noch nicht auf Crystal OSC
umgestellt hast und CKDIV8 noch nen Haken hat dann
dann läuft dein uC mit 1Mhz. SPI dann mit 250kHz.

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.