Forum: Mikrocontroller und Digitale Elektronik USART im SPI Mode, keinen Takt


von Hans (Gast)


Lesenswert?

Hallo alle zusammen,
nach reichlichem Lesen hier im Forum komme ich jedoch alleine nicht 
weiter und hoffe hier Hilfe zu bekommen.
Und zwar möchte ich bei einem ATMEGA168 die USART Schnittstelle im 
SPI-Mode betreiben. Jedoch kann ich mit meinem Oszilloskop keinen Takt 
messen, sprich in meinen Augen läuft die Kommunikation nicht und ich 
weiß leider nicht warum. Hier mein Code:
1
void SPI_USART_Init()
2
{
3
  UBRR0 = 0;
4
  // Setting the XCKn port pin as output, enables master mode. 
5
  DDRD |= _BV(PD4);
6
  // Set MSPI mode of operation and SPI data mode 
7
  UCSR0C = (1<<UMSEL01)|(1<<UMSEL00)|(1<<UCPHA0)|(1<<UCPOL0);
8
  // Enable receiver and transmitter. 
9
  UCSR0B = (1<<RXEN0)|(1<<TXEN0);
10
  // Set baud rate. 
11
  // IMPORTANT: The Baud Rate must be set after the transmitter is enabled 
12
  UBRR0 = 6;
13
}
14
15
unsigned int SPI2_MasterTransfer (unsigned int c1)
16
{
17
  while (!(UCSR0A & (1<<UDRE0))){ asm volatile("nop"); };
18
  
19
  UCSR0A |= (1 << TXC0);
20
 
21
  UDR0 = c1;
22
  
23
  while (!(UCSR0A & (1<<RXC0)));  
24
25
  return UDR0;
26
  _delay_ms(100);
27
}

Hab ich was vergessen in der Initialisierung? Oder hat jemand ein 
Beispiel welches funktioniert hat?

Dankeschön

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.