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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.