SPI an Atmega8

OP #597064
Lesenswert?
• ▲
▼
Hallo,

ich versuche die Hardware SPI am Atmega8 zu benutzen, aber komme 
irgendwie nicht weiter.
Ja ich habe schan das Datenblatt gelesen und weiß wie die SPI vom 
Prinzip her funktionieren soll...
Aber schon bei der Simulation am PC klappt es nicht... die simulation 
bleibt immer an der Zeile "while(!(SPSR & (1<<SPIF)))" hängen, als ob 
diese bedingung nie erfüllt wird...
wie kann das sein? mache ich da was falsch?

Danke Mike

-----------code----------------------

void SPI_MasterInit(void)
{
/* Set MOSI and SCK output, all others input */
DDRB = (1<<PB3)|(1<<PB5);
/* Enable SPI, Master, set clock rate fck/16 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
}

int main (void) {

  SPI_MasterInit();
  sei ();

  for (;;){

SPI_MasterTransmit(0b11111111);
_delay_ms(20);

SPI_MasterTransmit(0b00000000);
_delay_ms(20);

}
  return 0;
}
#597113
Lesenswert?
• ▲
▼
Benedikt K. wrote:
> ...schaltet ein High Pegel an diesem das SPI Interface in den Slave Mode.
Nur zur Vermeidung von Missverständnissen: /SS ist Low-aktiv. Ein 
Low-Pegel sorgt für einen Wechsel in den Slave-Betrieb.

Ansonsten aber völlig korrekt: Nur wenn /SS als Ausgang konfiguriert 
ist, dann ist man vor bösen Überraschungen sicher.
#597547
Lesenswert?
• ▲
▼
> Naja, nicht unbedingt darauf reingefallen. Aber etwas komisch kam es mir
> beim ersten mal im Datenblatt lesen schon vor... ;)

Mir käme eine Select-Leitung komisch vor, die mit high level aktiv ist. 
Weil solche Signale seit Urzeiten weit überwiegend active low sind. Das 
ist eine althergebrachte Konvention, die möglicherweise mit der 
asymmetrischen Charakteristik von Logikbausteinen in bipolarer Technik 
zu tun hat.
Persönliche Seite #597548
Lesenswert?
• ▲
▼
Andreas Kaiser wrote:
>> Naja, nicht unbedingt darauf reingefallen. Aber etwas komisch kam es mir
>> beim ersten mal im Datenblatt lesen schon vor... ;)
>
> Mir käme eine Select-Leitung komisch vor, die mit high level aktiv ist.
> Weil solche Signale seit Urzeiten weit überwiegend active low sind. Das
> ist eine althergebrachte Konvention, die möglicherweise mit der
> asymmetrischen Charakteristik von Logikbausteinen in bipolarer Technik
> zu tun hat.

Das meinte ich eigentlich auch nicht. Du hast natürlich Recht, das 
wundert mich nicht.

Mich wundert(e) viel eher, dass man für den MASTER Betrieb (Wofür es ja 
eigentlich schon ein Bit im Control-Register gibt) SS als Ausgang setzen 
muss.

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.