Hallo zusammen,
versuche schon den ganzen Tag erfolglos mein 74HC595 vernünftig
anzusteuern. Habe einfach mal drauf los getestet und probiert aber denke
mal dass ich einfach Denkfehler oder Wissenslücken habe. Vielleicht kann
ja mal einer drüber schauen und Tipps geben
spi.h
1 | #ifndef SPIF
|
2 | #define SPIF 7
|
3 | #endif
|
4 |
|
5 | unsigned char spi(unsigned char data)
|
6 | {
|
7 | SPDR=data;
|
8 | while ((SPSR & (1<<SPIF))==0);
|
9 | return SPDR;
|
10 | }
|
main.c
1 | #ifndef F_CPU
|
2 | #warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
|
3 | #define F_CPU 16000000UL /* Quarz mit 3.6864 Mhz */
|
4 | #endif
|
5 |
|
6 |
|
7 | #include <avr\io.h>
|
8 | #include <util\delay.h>
|
9 | #include "spi.h"
|
10 |
|
11 |
|
12 | #define DD_MOSI PINB5
|
13 |
|
14 | #define DD_SCK PINB7
|
15 |
|
16 | #define DDR_SPI PORTB
|
17 |
|
18 | void SPI_MasterInit(void)
|
19 |
|
20 | {
|
21 |
|
22 | // Set MOSI and SCK output, all others input
|
23 |
|
24 | DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
|
25 |
|
26 | // Enable SPI, Master, set clock rate fck/16
|
27 |
|
28 | SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
|
29 |
|
30 | }
|
31 |
|
32 |
|
33 |
|
34 | int main(void) {
|
35 |
|
36 | SPI_MasterInit();
|
37 |
|
38 |
|
39 | while (1)
|
40 | {
|
41 | PORTB |= (1<<PB4);
|
42 | // Place your code here
|
43 | spi(0xff);
|
44 | _delay_ms(2000);
|
45 | spi(0);
|
46 | _delay_ms(2000);
|
47 | PORTB &= ~(1<<PB4);
|
48 |
|
49 | };
|
50 |
|
51 |
|
52 | }
|
Benutze einen atmega32 und ja ich weiss alles etwas wirsch aber wäre
trotzdem über Hilfe dankbar.
Gruß Snaper