mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI beim Atmega168


Autor: Thomas Weyhrauch (thomas100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich versuch heute schon den ganzen Tag, die SPI-Schnittstelle an meinem 
Atemga168 zum laufen zu bekommen. Leider bisher ohne Erfolg.

So sieht mein Programm aus:
#include "avr/io.h"

int main (void)
{
  //SPI-Init
  PORTB |= _BV(PB3);  //MOSI als Ausgang, Pegel High
  DDRB |= _BV(PB3);
  
  PORTB &= ~_BV(PB5);  //SCK als Ausgang, Pegel Low
  DDRB |= _BV(PB5);
  
  PORTB |= _BV(PB4);  //MISO als Eingang, Pull-Up an
  DDRB &= ~_BV(PB4);
 
  SPCR = _BV(MSTR) | _BV(SPE) | _BV(SPR0); //Master, SPI enable, 1.25MHz

  SPDR = 0xaa;         // send byte
  while (!(SPSR & _BV (SPIF)));
}

Doch leider passiert genau nix. Ich seh auf meinen Oszi weder bei MOSI 
noch bei SCK irgend etwas. Brauch ich noch irgend eine Außenbeschaltung? 
Irgend was, was ich übersehen habe?
Programmieren kann ich den µC, daher sollten die Pins ja in Ordnung 
sein.

Danke für eure Hilfe.

Gruß
Thomas

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ch seh auf meinen Oszi weder bei MOSI noch bei SCK irgend etwas.

Kannst du auch nicht.

Ich hab jetzt den Code nicht im Detail durchgelesen, aber falls der 
funktioniert, dann sendet der einmal 0xAA direkt nach dem Reset.

Danach läuft der aus dem main() heraus ins Nirwana....

=> Endlosschleife

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schalte den SS Pin auf Ausgang. Das ist wichtig!

Und mach mal ne Schleife. Sonst gibts nur ganz kurz was zu messen ;)

 while(1)
  {
   SPDR = 0xaa;         // send byte
   while (!(SPSR & _BV (SPIF)));
  }

Autor: Thomas Weyhrauch (thomas100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Matthias.
Genau, du hast recht. Er müsste ein einziges mal 0xaa senden. Aber das 
müsste ich sehen. Aber nix. Da wackelt nichts!

Ich hab das senden auch schon in eine Endlosschelife gesetzt. Hat auch 
nichts geändert :-(

Gruß
Thomas

Autor: Thomas Weyhrauch (thomas100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huchu!! Es geht!

@ holger:
Danke, der Tipp mit dem SS war genau der Hinweis. Es geht!!

Danke Euch!!

Gruß
Thomas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.