Forum: Mikrocontroller und Digitale Elektronik AVR UART im SPI Mode


von Steffen (Gast)


Lesenswert?

Hallo zusammen,

ich versuche gerade den UART eines AVR als SPI zu konfigrieren. Ich 
nutze dazu einen Beispielcode, um mich in das Ganze einzuarbeiten.

Ich komme bei der Einstellung der Baudrate noch nicht ganz durch.

Allgemein wird eine externe Clock verwendet (20MHz)

In dem Beispielcode steht nun folgendes:

UBRR1= 3;  // Freq_SPI = Freq_CPU / (2 * UBBR1) - 1 --> 2MHz

Ich komme somit auf  Freq_SPI 3.3e6 Hz. Ich komme dann mit dem Kommentar 
2MHz nicht so ganz klar.

Bei UBRR1 = 3; habe ich doch eine SPI Baud von 250KHz richtig? Da gilt 
doch die Formel aus dem Datenblatt:

UBRR= f_OSC / (2*BAUD) - 1


Oder bin ich da total auf dem Holzweg?

Grüße

Steffen
von holger (Gast)


Lesenswert?

Also bei 16MHz sieht das so aus (gemessen)

 UCSR1A = (1<<U2X1);
// UBRR1 = 0x0000;   // 8Mbps       @16Mhz F_CPU
// UBRR1 = 0x0001;   // 4Mbps
// UBRR1 = 0x0002;   // 2.66Mbps
// UBRR1 = 0x0003;   // 2Mbps
 UBRR1 = 0x0007;   // 1Mbps
von Steffen (Gast)


Lesenswert?

Hallo,

vielen Dank!


Die "UBRR1 = 0x0003;   // 2Mbps dürften" dann ja zum Kommentar passen... 
oder versteh ich das jetzt falsch?

Steffen
von holger (Gast)


Lesenswert?

Nachtrag:

Hab gerade gesehen das das hier beim USART als SPI nichts bringt:

 UCSR1A = (1<<U2X1);

>UBRR1= 3;  // Freq_SPI = Freq_CPU / (2 * UBBR1) - 1 --> 2MHz

Im Datenblatt steht aber:

Freq_SPI = Freq_CPU / (2 * (UBBR1 + 1))

Und so kommt das auch hin.
von Steffen (Gast)


Lesenswert?

Hallo,

vielen Dank! Jezt wäre nur noch die Frage, warum man mit 16MHz rechnet, 
wenn man eine externe 20MHz Quelle hat?

Steffen
von holger (Gast)


Lesenswert?

>vielen Dank! Jezt wäre nur noch die Frage, warum man mit 16MHz rechnet,
>wenn man eine externe 20MHz Quelle hat?

Tut man ja nicht. Bei 20MHz und UBRR1= 3 haste halt 2,5Mbps.
von Steffen (Gast)


Lesenswert?

Ah ok, ja....falsch gerechnet ;)

Vielen Dank!

Steffen
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.