mikrocontroller.net

Forum: Compiler & IDEs Einlesen über SPI


Autor: loki81 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

Ich habe eine Hausarbeit bekommen und bin hier am verzweifeln! 
Warscheinlich ist es garnicht so kompliziert, aber wenn man einfach 
gesagt bekommt "mach mal" und das ohne Einführung in potentielle 
Programme dann GUDE NACHT!!

Also ich soll mit einem AT90S8583 über SPI die gewandelten Daten eines 
MAXIM 147 einlesen und über RS232 ausgeben. Dies soll in einem 
Zeitintervall von 100ms erfolgen.
Ich habe mich schon so weit vorgekämpft, dass ich einen String über 
RS232 in 100 ms ausgeben kann. (siehe Code)
Was ich jetzt nicht schaffe ist die Daten vom Maxim 147 in das SPI 
Datenregister zu lesen.
Ich habe versucht den /SS auf low zu ziehen aber da passiert nix! Bin 
mir nicht ganz sicher wie ich das Statusregister einstellen muss und 
welches Protokoll? ich verwenden soll.
Ich hab also einfach mal den SPI so eingestellt das der MCU der Master 
ist und den Interrupt feigeschaltet. Dann hab ich das ganze versucht in 
AVRStudio zu simulieren, aber es will net so sie es soll!!

Ich bitte um entschuldigung, denn ich bin ein absoluter Anfänger und hab 
mir das ganze Zeug irgendwo zusammengelesen!
Ich hoffe jedoch trotzdem, dass mir da einer (oder viel) helfen können.

Danke
Loki

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich habe versucht den /SS auf low zu ziehen aber da passiert nix!

Logisch, das sagt ja dem SPI-Slave auch nur, dass jetzt mit einer
Datenübertragung zu rechnen ist.  Danach muss der Master aber seine
8 Taktimpulse aussenden.  Woher weiß der Master nun aber, ob du die
Daten lesen oder schreiben willst?

Er weiß es gar nicht: SPI muss immer zugleich lesen und schreiben.
Du musst also einen Wert aufs SPDR *aus*geben (der wahrscheinlich
vom Slave ignoriert wird, also gibt man in der Regel einfach eine 0
aus), dann die 8 SPI-Takte warten (bis SPIF gesetzt ist), danach
kannst du das auf der Rückleitung gelesene Byte aus SPDR abholen.

Autor: loki81 (Gast)
Datum:

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

Hab jetzt das SPDR beschrieben und man glaubt es kaum aber er macht 
was!!

Muss das Ding beschreiben bevor oder nach dem ich den /ss auf 0 setzte?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachdem du den slave selektiert hast, sonst weiß er ja nicht, dass er
gemeint ist.  (SPI kann mehrere slaves parallel treiben.)

Autor: loki81 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg
Also erst mal vielen vielen Dank........

Ich war wirklich überrascht, dass man hier so schnell eine Antwort 
bekommt!! RESPEKT

@ALLE DIE ES INTERESSIER

Also ich hab jetzt rausgefunden, wie das Ding funst! Man muss wie Jörg 
das schon geschrieben hat ein Byte zum übertragenin das SPDR schreiben 
NACH dem man den /SS auf 0 gesetzt hat. Jetzt hat dieser ADW allerdings 
8 Kanäle und 12 Bit.
Das vom Master übertragene Bit ist demnach kein "Nonsense" Sondern damit 
wählt der Master Den Kanal, die Clock usw aus. danach kommen 2 Cycles 
(je 8Cl Impulse) in denen die Daten des ADWs übertragen werden.
Das macht alles Sinn finde ich und ist wenn man mal dahinter gestiegen 
ist so schön logisch!!

Danke noch mal für die Hilfe
loki

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieder einer etwas gelernt ;-)

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.