Hallöchen,
da ich früher mit Keil gearbeitet habe und dort das testen von der
Seriellen schnittstelle nicht geklappt hat (da das write-register die
gleiche adresse wie das read-register hat) frage ich mich ob das bei
Atmelstudio mit SPI ähnlich ist?
Ich habe folgenden Code:
1 | int main(void)
|
2 | {
|
3 | //SPI konfigurieren
|
4 | SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPOL); //SPI ist master, MSB first, SCK is high wenn inaktiv
|
5 | DDRB |= 0x2C; //MISO, SCK, SS
|
6 | SPSR = (1<<SPI2X);
|
7 |
|
8 | // Global Interrupts aktivieren
|
9 | sei();
|
10 |
|
11 | while(1)
|
12 | {
|
13 | if(PORTB & (1<<PORTB1))
|
14 | {
|
15 | Ringlauf();
|
16 | }
|
17 |
|
18 | for(push = 0; push <= 12; push++)
|
19 | {
|
20 | SPDR = gr[push];
|
21 |
|
22 | while (!(SPSR & (1<<SPIF)));
|
23 |
|
24 | (void)SPDR;
|
25 | }
|
26 |
|
27 | }
|
28 | }
|
Der Code ist nun nur auszugsweise. In der Funktion werden die Arrays
gr[] mit Daten gefüllt. Diese sollen dann eben der Reihe nach
rausgeschickt werden (auf 12 Schieberegister 74HC595).
Hab ich nen Fehler in der Denkweise oder liegt es an Atmel Studio?
LG
Sören