SPI lässt sich nicht konfigurieren

OP #4560411
Lesenswert?

Hallo!

Atmega 8, interner Oszi 8Mhz.Atmel Studio 7. Zu Testzwecken folgendes 
geschrieben:

int main(void)
{
  DDRB=(1<<SS)|(1<<SCK)|(1<<MOSI);
  PORTB &=~(1<<SS);

  SPCR=(1<<SPE)|(1<<MSTR);
  SPSR=(1<<SPI2X);

    while (1)
    {
        PORTB=0xFF;
  _delay_ms(100);
    PORTB=0x00;
    _delay_ms(100);
    }
}

Die Schleife wird nur ausgeführt wenn ich "SPCR=(1<<SPE)|(1<<MSTR);" 
auskommentiere. Kann das an Studio 7 liegen? Ich habe so wie geschrieben 
schon zig mal SPI konfiguriert.

Danke!
OP #4560500
Lesenswert?

Wow! Danke Bastian! Ich hatte natürlich vor dem Port togglen erst mal 
versucht ein Byte zu senden. (So wie ich es schon zig mal mit meinem 
kopierten Code gemacht hatte.) Da sich da aber komischerweise nix auf 
dem Oszi bewegt hat , habe ich das Port togglen reingeschrieben. Und 
dann Zeile für Zeile auskommentiert. Wenn ich "SPCR=(1<<SPE)|(1<<MSTR);" 
auskommentiere, also das SPI quasi deaktiviere wird die Schleife 
erreicht. Sonst zeigt das Oszi 2 grade Linien. :-(
Gast #4560635
Lesenswert?

Ohne mir den Code usw angeguckt zu haben: Das oder etwas sehr ähnliches 
hatte ich vor ca. 5 Jahren mal mit einem Atmega644 von Pollin und damals 
auch hier im Forum gepostet.

Als ich das Enable SPI Transmit Bit gesetzt hatte ist der Controller 
einach hängen geblieben. Das SPI Senden musste ich dann per Software 
lösen. Das SPI Empfangen hat glücklicherweise funktioniert.
Gast #4560762
Lesenswert?

Attila C. schrieb:
> Wenn ich "SPCR=(1<<SPE)|(1<<MSTR);"
> auskommentiere, also das SPI quasi deaktiviere wird die Schleife
> erreicht.


Die Schleife wird natürlich immer ausgeführt, aber wenn du auf dem Rest 
von PORTB auch was sehen willst beim toggeln, musst du auch alle Pins 
auf Ausgang setzen.
Sobald das SPI die Kontrolle über die Pins hat, kannst du da manuell 
nicht mehr dran wackeln.
#4560816
Lesenswert?

Hi,

ich mal mit einem Atmega32 ( ich hab leider keinen Atmega8 da) das mehr 
oder weniger getestet.

Ich musste nur die SPI Frequenz runternehmen und auch den SPI Mode für 
mein EEPROM anpassen. Also mit dem Atmel Studio 7 und nem Atmega32 geht 
das ohne Probleme.

Ich hab erst die Zahlen 0 - 255 in die ersten 256 Bytes geschrieben und 
dann wieder ausgelesen.

Gruß JackFrost
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren