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
> 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.
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?
Nachdem du den slave selektiert hast, sonst weiß er ja nicht, dass er gemeint ist. (SPI kann mehrere slaves parallel treiben.)
@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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.