Hallo,
ich will mit einem ATmega328P eine SD-Karte auslesen. Das hab ich in
einem anderen Projekt auch schon mal geschafft ;) Und die SPI
Schnittstelle bediene ich auch nicht zum ersten mal aber ich dreh
langsam am Rad.
Ich arbeite mit AVR Studio4 und WinAVR-20100110 ich kann die Ausgänge
mit PORTx ohne Probleme setzen und sehe das auch schön am Oszi das ganze
wurde mit 2 Controllern und auf 2 verschiedenen Platinen getestet. Aber
SPI(weder SCK noch MOSI) macht keinen Mux.
Hier mein Code:
1 | #include <avr/io.h>
|
2 |
|
3 | void SPI_MasterInit(void)
|
4 | {
|
5 | /* Set MOSI and SCK output, all others input */
|
6 | DDRB = (1<<PB3)|(1<<PB5);
|
7 | /* Enable SPI, Master, set clock rate fck/16 */
|
8 | SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
|
9 | }
|
10 | void SPI_MasterTransmit(char cData)
|
11 | {
|
12 | /* Start transmission */
|
13 | SPDR = cData;
|
14 | /* Wait for transmission complete */
|
15 | while(!(SPSR & (1<<SPIF)));
|
16 | }
|
17 |
|
18 | void main(void)
|
19 | {
|
20 | SPI_MasterInit();
|
21 | while(1)
|
22 | {
|
23 | SPI_MasterTransmit(0xAA);
|
24 | }
|
25 | }
|