Hallo,
ich kriege SPI auf dem AtTiny 24 nicht zum laufen. Ich bin er st in der
Testphase und habe mir einen c- code aus dem Internet besorgt. Laut
Datenbankwelt hätte dies schon eine Chance zu funktionieren, geht aber
leider nicht.
Dachte mir wenn ich nun eine Brücke zwischen MOSI und MISO stecke dass
ich im result den Wert von data habe, bleibt aber auf 0.
Hat jemand einen Tip für mich was ich falsch mache?
Danke!
Ok, Problem gefunden:
Es liegt daran, dass
MOSI = DI auf PA6
MISO = DO auf PA5
liegt.
Das verstehe ich zwar nicht ganz, denn eingentlich ist ja
MasterOutSlaveIn der Ausgang des Masters, müsste also DataOut sein, ist
aber als DataIn verschaltet.
Komisch....
> Dachte mir wenn ich nun eine Brücke zwischen MOSI und MISO stecke dass> ich im result den Wert von data habe, bleibt aber auf 0.> Es liegt daran, dass> MOSI = DI auf PA6> MISO = DO auf PA5
Aber der Brücke ist doch die Signal-Richtung egal! Was war der wirkliche
Grund für die Fehlfunktion?
Ehrlich gesagt, ich habe es, entgegen meiner sonstigen Gewohnheit, nicht
ausprobiert. Aber im Datenblatt steht: "The code example assumes that
the DO and USCK pins have been enabled as outputs in DDRA."
Stefan U. schrieb:> Soweit ich von AVR's gewohnt bin, spielt das DDR Register keine Rolle,> sobald für einen I/O Pin eine Special-Function aktiviert ist.
Das ist längst nicht bei allen SpecialFunctions so. Das fängt schon bei
den OCR-Ausgängen der Timer an, die auch bei Aktivierung sehr wohl noch
der Kontrolle durch das DDR-Register unterliegen.
Und auch im Falle des USI der Tinys ist es nicht so, wie du schreibst,
ganz sicher jedenfalls nicht im Betrieb als TWI(I2C)-Interface. Der
Beweis dafür findet sich (wer hätte das gedacht...) im DB, und das auch
noch genau im zuständigen Abschnitt (was leider nicht immer so ist,
weswegen ich in diesen Fällen Verständnis für Nichtwissen aufbringe,
aber eben NUR in diesen Fällen, denn alles andere ist schlicht nur
eins: Faulheit)...
However: Zitat aus dem entsprechenden Abschnitt des DB für Tiny25..85:
"Note that the Data Direction Register bit must be set to one
for the output to be enabled". (Seite 133)
Danke für den Hinweis bezüglich I2C.
Für SPI Gilt das allerdings nicht. Ich zittiere aus dem Datenblatt des
ATtiny24 Kapitel 10.2.1:
"MISO: Master Data input, Slave Data output pin for SPI channel. When
the SPI is enabled as a Master, this pin is configured as an input
regardless of the setting of DDA5. When the SPI is enabled as a Slave,
the data direction of this pin is controlled by DDA5."
"MOSI: Master Data output, Slave Data input for SPI channel. When the
SPI is enabled as a Slave, this pin is configured as an input regardless
of the setting of DDA6. When the SPI is enabled as a Master, the data
direction of this pin is controlled by DDA6."
Meine Frage an Swen W, was denn nun der wirkliche Grund für den Fehler
war, ist noch offen. Es wäre nett, wenn sich der Swen mal dazu äußern
würde.
Man verschwindet nicht einfach so, sobald man keine Hilfe mehr braucht.
Zumindest nicht, wenn man demnächst nochmal Hilfe bekommen möchte.
Wir sollten ihm genug Zeit geben, zu antworten.
Der Thread ist zwar schon etwas älter aber ich hatte gerade auch einen
Moment der Verwirrung mit dem USI bzw. der Terminologie. Ich dachte
immer d
Stefanus F. schrieb:> "MISO: Master Data input, Slave Data output pin for SPI channel. [...]"
Allerdings steht im Datenblatt ganz klar, dass MISO der DO = Data Out
ist, sieht man auch im Schaubild. Daher frage ich mich, was "When the
SPI is enabled as a Master, this pin is configured as an input
regardless of the setting of DDA5." zu bedeuten hat. Das stimmt dann
halt einfach nicht, wenn man mal das Schaubild im Anhang betrachtet,
welches ich direkt aus dem USI-Kapitel des Datenblatts vom ATtiny24A
rausgesnapped habe.