Ich glaube nicht das das Projekt zu groß ist. Ich habe nur leider noch
nicht mit der SPI gearbeitet, aber Unwissenheit ist keine Ausrede für
ein zu großes Projekt ;-)
Aber nun weiter zu meinem Problem. Ich habe mich weiterhin mit der SPI
beschäftigt, aber weiß nicht genau was du damit meinst, dass ich keine
SPI initialisiert habe. Ich habe lediglich keine libarys zur
initialisierung genutzt. Nachdem ich eine Adresse über die SPI sende
bekomme ich immer nur eine 0 zurück. Es scheint so, dass das SPDR gar
nicht gesetzt wird oder die Daten am CC2420 nicht ankommen.
Zur Eingrenzung des Problems werde ich einfach mal meine durchgeführten
Schritte posten:
1. Pin belegung zu Ordnen
1 | #define DD_CS PB0 //Selektiert den Master ??kontrollieren
|
2 | #define DD_SCK PB1 //Takt
|
3 | #define DD_MOSI PB2 //Master Out, Slave In
|
4 | #define DD_MISO PB3 //Master In, Slave Out
|
5 |
|
6 | #define CC_FIFO PE5
|
7 | #define CC_FIFOP PE6
|
8 | #define CC_CCA PD5
|
9 | #define CC_SFD PD4
|
10 | #define CC_RESET PB6
|
11 | #define CC_VREG_EN PB7 //VREG Enable
|
sollte selbsterklärend sein.
2. SPI initialisieren
1 | DDRB = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_CS); // Output Pins festgelegt
|
2 | PORTB = (0<<DD_MOSI)|(0<<DD_SCK)|(0<<DD_CS); // Pull Up disabled
|
3 |
|
4 | /* Enable SPI, Master, set clock rate fck/16 */
|
5 | SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
|
3. Register Adresse Senden über:
1 | /* Start transmission */
|
2 | SPDR = cData;
|
3 |
|
4 | /* Wait for transmission complete */
|
5 | while(!(SPSR & (1<<SPIF)));
|
Ist das soweit (von der Art wie ich es machen würde) richtig?