Hallo,
ich habe ein Problem mit meinem ATmega324PA. Ich bekomme es einfach
nicht hin, dass die SPI Schnittstelle funktioniert. Ich habe ein
JTAGICE3 zum Debuggen und bin mittlerweile soweit, dass ich folgenden
Sachverhalt herausgefunden habe:
Meine SPI Initialisierungsroutine sieht wie folgt aus:
1 | DDRB |= (1<<5) | (1<<7);
|
2 |
|
3 | /* Enable SPI, Master */
|
4 | SPCR0 = (1<<SPE0) | (1<<MSTR0);
|
5 |
|
6 | /* Set Double SPI Speed Bit, SPI clock will be fck/2 */
|
7 | SPSR0 = (1<<SPI2X0);
|
Beim Debuggen ist es jedoch so, dass im Register SPCR0 nur das Bit 6
gesetzt ist (SPE0). Das Bit 4 (MSTR0) ist immer null! Ich kann es auch
nicht mit dem Debugger setzen. Wenn ich jedoch mit dem Debugger zunächst
das Bit SPE0 wieder lösche, kann ich das Bit MSTR0 setzen. Kein Problem.
Setze ich jedoch wieder das Bit SPE0, wird MSTR0 gelöscht. Warum ist das
so? Bei einem anderen Board mit einem ATmega324P geht es wunderbar und
läuft so wie es soll.
Ich sitze schon fast 2 Stunden an dem Problem und bin kurz davor das
Ding aus dem Fenster zu werfen :-)