Forum: Mikrocontroller und Digitale Elektronik Atmega8 ISP - Hilfe


von Eistee (Gast)


Lesenswert?

Hi,

ich bastel/spiele nun seit ein paar Wochen mit einer Hand voll Atmega8
herrum und wollte nun als nächstes, mich einmal an die Kommunikation 
zweier dieser machen...

nachdem ich mich eine weile über verschiedene Arten informiert habe
wollte ich die Verbindung über die SPI Schnittstelle ausprobieren.

Dazu habe ich hier:

http://www.mikrocontroller.net/mc-project/Pages/AVR/Programme/Programme.html

recht weit unten die datei spi_bibliothek.h gefunden und daraus 
folgendes gebaut:


Master (Minimalprojekt - nur das nötigste):
1
int main(void)
2
{
3
  SPI_MasterInit();
4
5
  while(1)
6
  {
7
    SPI_MasterTransmit('A');
8
    _delay_ms(200);
9
    SPI_MasterTransmit('B');
10
    _delay_ms(200);
11
  }
12
}
und als Slave (Minimalprojekt - nur das nötigste):
1
int main(void)
2
{
3
  SPI_SlaveInit();
4
5
  char tmp ='0';
6
7
  while(1)
8
  {
9
    tmp = SPI_SlaveReceive();
10
    if(tmp == 'A'){
11
      //LED Anschalten...
12
    }
13
    if(tmp == 'B'){
14
      //LED Ausschalten...
15
    }
16
  }
17
}

zur Verkabelung:

sclk <-> sclk
mosi <-> mosi
miso <-> miso
ss   <-> ss

nur leider blieb der erfolgt ehr auf der Strecke liegen als das sich 
reaktionen am 2. Atmega bemerkbar machten...

es Kompiliert fehlerfrei und die Led's lassen sich auch sonnst 
fehlerfrei ansteuern.

Habe ich ggf. etwas vergessen / falsch gemacht ?

Gruß,
Eistee ;-)

von Eistee (Gast)


Lesenswert?

okay,

gemeint ist natürlich SPI im betreff...

es hat sich erledigt ;-)

SS beim master sollte natürlich auf Vcc liegen und
SS beim Slave auf Gnd...

manchmal sind es doch die kleinen dinge im Leben die großes bewirken...

Gruß,
Eistee ;-)

von holger (Gast)


Lesenswert?

>SS beim master sollte natürlich auf Vcc liegen und
>SS beim Slave auf Gnd...

Aus, aua, aua;)

SS beim master sollte natürlich ein Ausgang sein
und SS beim Slave ein Eingang. SS wird bei beiden verbunden.

Wenn der Master nichts sendet zieht er SS auf high.
Wenn der Master was zu senden hat zieht er vorher SS auf low.
Damit wird im Slave das SPI resettet und so die Übertragung
synchronisiert. Wenn der Master fertig ist mit senden
zieht er SS auf high.

Das wars eigentlich schon. Wenn du SS beim Slave fest auf
irgendeinen Pegel legst reicht die kleinste Störung und
der Slave empfängt nur noch Schrott.

von Eistee (Gast)


Lesenswert?

Hey,

danke für den hinweis :-)

Gruß,
Eistee

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.