www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI bei 3,3V funktioniert nicht


Autor: Lorenz Winkler (lolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich versuche die SPI Schnittstelle eines Atmega64 als Master in betrieb 
zu nehmen, aber ich scheitere schon daran, dass ich keine "transmission 
complete" bekomme (der Controller bleibt also in der while-Schleife in 
SPI_MasterTransmit hängen). Komischerweise funktioniert es, wenn ich den 
Controller mit 5V betreibe, nicht aber wenn ich ihn mit 3,3V betreibe.

Ich verwende den Code aus dem Datenblatt:
void SPI_MasterInit(void)
{
  /* Set MOSI and SCK output, all others input */
  DDRB = (1<<2)|(1<<1);
  /* 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)));
}
und main sieht so aus:
int main( void )
{
  SPI_MasterInit();

  SPI_MasterTransmit('A');
}

Hat jemand eine Ahnung was ich falsch mache?
Ich habe es auch noch einmal mit einem Atmega128 probiert, habe aber 
genau das gleiche Problem.

Vielen Dank im Voraus.

Lolle

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist mit SS? Sollte auch ein Ausgang sein.

Autor: Lorenz Winkler (lolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Joachim

Vielen Dank für die schnelle Antwort. Deine Vermutung war richtig, jetzt 
geht's.

Ich dachte ich bräuchte mich um SS nicht kümmern, da der Controller 
Master ist und ich sowieso noch keinen Slave angeschlossen hatte. Da hab 
ich mich wohl getäuscht.

Grüße

Lolle

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nicht nur denken, Datenblatt fragen. ;-))

Gruß aus Berlin
Michael

Autor: Christoph Budelmann (Firma: Budelmann Elektronik GmbH) (christophbudelmann) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lorenz Winkler schrieb:
> Ich dachte ich bräuchte mich um SS nicht kümmern, da der Controller
> Master ist und ich sowieso noch keinen Slave angeschlossen hatte. Da hab
> ich mich wohl getäuscht.

Da bist du aber nicht der einzige, wenn es dich beruhigt. Der Controller 
wechselt dann halt beim ersten Low-Impuls an SS in den Slave-Modus.

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.