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