www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MOSI immer auf high?


Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich verwende den AT90USB128 auf dem USBKEY. Nach dem initialisieren des 
SPI mit folgender Routine, bleibt meine MOSI Leitung immer auf High. 
Dieses Problem hatte ich zuvor noch nie gehabt. Nun habe ich es auf 
allen meinen drei USBKEY's d.h. es muss an der Software liegen. Im AVR 
Studio zeigt mir PINB2 (MOSI) high an, obwohl PORTB2 low hat. Hatte 
jemand diesen Effekt auch schon, oder kann mir jemand weiterhelfen?

Code:

void mcu_spi_master_init(void) {
  DDRB = 0x07;
  PORTB = 0x01;    // CS = 1
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);
}


Danke und Gruss
Knut

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> es muss an der Software liegen.

Richtig, ein Blick ins Datenblatt hilft vielleicht.

Autor: Bernhard K. (Firma: SSSA - CNR Pisa) (berny74)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe gerade eine funktionierende SW auf einen AT90USB1287 portiert. Auch 
ich habe das Problem, das die SPI-Schnittstelle am AT90USBxx nicht 
funktioniert und im Datenblatt keinen Hinweis gefunden woran es liegen 
könnte.
Hinweis @ Knut: wenn man den SPI im Master-Mode betreibt unbedingt auf 
den SS-Pin achten, wenn der als Input geschalten ist und low ist, gibt's 
Probleme (siehe Datenblatt).

Hast Du Dein Problem mit der SPI lösen können, bin für Hinweise dankbar!

mfg
Bernhard

Autor: Enrico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe das Problem ebenfalls mit einem Atmega16.
Immer wenn ich das SPI aktiviere geht der MOSI auf high, obwohl er 
vorher als Ausgang mit low-Pegel programmiert wurde.

Im Datenblatt habe ich eine Zeichnung gefunden, aus der hervorgeht, dass 
MOSI im idle-Zustand tatsächlich high sein soll, also low-aktiv ist. Es 
ist also kein Fehler.
Ein Prob ist es trotzdem, da an dem SPI ein max3100 hängt, der ein 
high-aktiven MOSI erwartet.

Hat irgendwer eine idee, wie ich das problem lösen kann?

MfG, Enrico

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
> Im Datenblatt habe ich eine Zeichnung gefunden, aus der hervorgeht, dass
> MOSI im idle-Zustand tatsächlich high sein soll, also low-aktiv ist.
Low-Aktiv bedeutet in der bekannten Interpretationsweise eine 
Aktivierung irgendeines Signals mit Pegel = '0'. Das gilt z.B. für 
Chip-Selects, wenn mit '0' ein Baustein aktiviert werden soll ('0'-aktiv 
= low-aktiv). Bei einer Datenleitung redet man von low-aktiv, wenn mit 
niedrigerem Pegel eine '1' übertragen wird (z.B. RS232).
SPI ist auf der Datenleitung High-Aktiv (high='1', low='0').

> Ein Prob ist es trotzdem, da an dem SPI ein max3100 hängt,
> der ein high-aktiven MOSI erwartet.
Sieh dir mal die Abbildung 1 im Datenblatt des MAX3100 an. Nur während 
der steigenden Flanke von SCLK muß DIN (MOSI) stabil sein. Sonst ist der 
Pegel beliebig. Ich würde sagen, du hast kein Problem mit MOSI, sondern 
mit der Taktzuordnung (SPI-Mode).

> Hat irgendwer eine idee, wie ich das problem lösen kann?
Den richtigen SPI-Mode verwenden?
CPOL = 0
CPHA = 0
Siehe auch http://www.totalphase.com/support/kb/10045/

Autor: Enrico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Hab inzwischen selbst herausgefunden, dass low-aktiv quatsch ist. Das 
war ein Trugschluß meinerseits.

MOSI ist tatsächlich nicht das Prob. CPHA, CPOL hatte ich auf 0. Das 
Prob war mein PCB-Layout. Der max3100 hat einen (diesmal wirklich) 
low-aktiven Pin für Hardware-Shutdown. Der war mit nichts verbunden -.- 
Außerdem hatte ich versehentlich das SPI des ATmega auf LSB first 
eingestellt, was dann zu den missverständlichen, bzw. unsinnigen 
Antworten des max3100 führte, sonst hätte ich auch früher gemerkt, dass 
der IC im StandBy ist.

Jetzt läuft es!

MfG

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.