SPI , Problem

OP #3215544
Lesenswert?
• ▲
▼
Ich wollte 2 µC(ATmega 8, Atmega 328P) über SPI verbinden. Jedoch 
funktioniert es nicht so richtig. Da der Slave (ATmega 8) auf einem 
Myavr mk2 Board sitzt konnte ich in mit dem Mysmartusb debuggen. Wenn 
ich in aber mit dem Master verbinde funktioniert nichts mehr.

Hier die dafür verwendeten Funktionen:
1
void Masterinit( void )
2
{
3
  DDRB = (1<<PB5)|(1<<PB4)|(1<<PB2);//Set MOSI and SCK output all others are INPUT
4
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);//Enable SPI, Master, set clock rate fcl/16
5
}
6
void transmit( char data )
7
{
8
  PORTB = PORTB & 0xfe;
9
  SPDR = data; 
10
  while(!(SPSR & (1<<SPIF))); //Wait for transmission is complete
11
  PORTB = (1<<PB2);
12
}
#3215554
Lesenswert?
• ▲
▼
spess53 schrieb:
> Hi
>
>>  PORTB = PORTB & 0xfe;
>>  .....
>>  PORTB = (1<<PB2);
>
> Was soll das bezwecken?

Ich schätze mal, der Hinweis war etwas zu subtil.

0xFE ist NICHT der Pin PB2. (SS der SPI)

SChreibs halt so

   PORTB &= ~( 1 << PB2 );

dann passiert dir so ein Scheiss nicht. Immer diese unangebrachten 
brachial Binär und Hex Schreibweisen. Man handelt sich damit mehr Fehler 
ein als einem lieb ist.

Und wenn du es so machst
1
#define MASTER_SS  PB2
2

3
...
4
  PORTB &= ~( 1 << MASTER_SS );
5
  ...
6
  PORTB |= (1 << MASTER_SS );
7
...

dann kann es dir nicht mal mehr passieren, dass du im 0-Setzen und 
1-Setzen der SS-Leitung verschiedene Pins erwischt. Plus: man kann dann 
sogar im Code sehen und ablesen, dass es um die SS Leitung geht.

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.