Atmega8 ISP - Hilfe

Gast #3696199
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 ;-)
Gast #3696245
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 ;-)
Gast #3696299
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.