AVR UART im SPI Mode

Gast #2428738
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
Gast #2428757
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
Gast #2428773
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.

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