SPI beim Atmega168

#1389350
Lesenswert?

Hallo Forum,

ich versuch heute schon den ganzen Tag, die SPI-Schnittstelle an meinem 
Atemga168 zum laufen zu bekommen. Leider bisher ohne Erfolg.

So sieht mein Programm aus:
1
#include "avr/io.h"
2

3
int main (void)
4
{
5
  //SPI-Init
6
  PORTB |= _BV(PB3);  //MOSI als Ausgang, Pegel High
7
  DDRB |= _BV(PB3);
8
  
9
  PORTB &= ~_BV(PB5);  //SCK als Ausgang, Pegel Low
10
  DDRB |= _BV(PB5);
11
  
12
  PORTB |= _BV(PB4);  //MISO als Eingang, Pull-Up an
13
  DDRB &= ~_BV(PB4);
14
 
15
  SPCR = _BV(MSTR) | _BV(SPE) | _BV(SPR0); //Master, SPI enable, 1.25MHz
16

17
  SPDR = 0xaa;         // send byte
18
  while (!(SPSR & _BV (SPIF)));
19
}

Doch leider passiert genau nix. Ich seh auf meinen Oszi weder bei MOSI 
noch bei SCK irgend etwas. Brauch ich noch irgend eine Außenbeschaltung? 
Irgend was, was ich übersehen habe?
Programmieren kann ich den µC, daher sollten die Pins ja in Ordnung 
sein.

Danke für eure Hilfe.

Gruß
Thomas
Gast #1389352
Lesenswert?

>ch seh auf meinen Oszi weder bei MOSI noch bei SCK irgend etwas.

Kannst du auch nicht.

Ich hab jetzt den Code nicht im Detail durchgelesen, aber falls der 
funktioniert, dann sendet der einmal 0xAA direkt nach dem Reset.

Danach läuft der aus dem main() heraus ins Nirwana....

=> Endlosschleife

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