Schau dir mal das NOSS = 1/0 an und im Datasheet die Paragraphen über den SS-Pin. Der Pin kann dir ev. in die Suppe spucken.
Hallo zusammen,
ich arbeite mit einem AtMega8l und mit der Bascom Software zur
Programmierung. Ich möchte nun über das implementierte SPI Protokoll
die Register von dem Agilent Chip auslesen. Mit dem vorhandene Befehl
spimove() und manupulationen des SPCR Registers sollte das
funktionieren. Ich bekomme auch ein akzeptabeles Signal am
Mikrocontroller heraus. Nur zum Einlesen der Informationen über den
MISO gibt der Controller kein Taktsignal heraus und ich kann die
Informationen auch nicht weiterverarbeiten. Vielleicht hat jemand eine
Idee oder ein Seite mit ausführlichen Informationen über die SPI
Befehle bei BASCOM
Schau dir mal das NOSS = 1/0 an und im Datasheet die Paragraphen über den SS-Pin. Der Pin kann dir ev. in die Suppe spucken.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Erstmal danke für die Antwort,
die Eintellungen für den SS-Pin habe ich entsprechent dem Datenblatt vorgenommen und der Oszilloskop bestätigt es. Der Agilent Chip reagiert auch, der Mikrocontroller kann die Daten aber nicht verwenden.
Was meinst Du mit NOSS, habe dieses Register nicht gefunden.
Viele Grüße
Nils
NOSS ist ein parameter vom Bascom "CONFIG SPI"
Aufpassen auch mit polarity und phase, aber das ist beim Senden und Empfangen eigentlich gleich
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ich verwende bei Bascom den Software SPI und da gibt es diese Option nicht. Außerdem wenn ich es richtig verstanden habe, kann man damit nur den Takt komplett ausschalten. Der Sensor braucht aber einen Takt.
Ah so, andere Baustelle.
An dem Pin für "CLOCK" tut sich bei SPIIN nix ?
SPIINIT hast du verwendet ?
Kannst du dein "CONFIG SPI=SOFT ...." und dein SPIIN() mal herzeigen ?
Du sagst, Senden geht tadellos ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ja das Senden funktioniert tadellos. Ich habe es auch schon mit spiin und spiout probiert. Wobei spiin kein ergebnis liefert.
mfg
Nils
Wird dich nicht interessieren, aber der SPIMOVE sieht eigentlich koscher aus. Er bewegt die richtigen Pins (datenübernahme mit der fallenden Flanke) und sollte auch eine Clock ausgeben.
Da muß es was mit den Pins haben, SPIINIT setzt sie richtig .Code:SPIMOVE: LDI r16,0x08 L_0x0136: (Loop) LSL r24 Sende/Empfangs Datenbyte BRCC L_0x013E SBI PORTC,PC3 Daten Out pin 1 RJMP L_0x0142 L_0x013E: CBI PORTC,PC3 Daten Out pin 0 NOP L_0x0142: SBI PORTC,PC2 CLock High SUBI r16,0x80 L_0x0146: SUBI r16,0xE0 BRLO L_0x0146 CBI PORTC,PC2 CLock Low SUBI r16,0x80 L_0x014E: SUBI r16,0xE0 BRLO L_0x014E SBIC PINC,PINC1 Lesen DIN INC r24 DEC r16 zählen 8 Bit BRNE L_0x0136 Loop RET fertig (r24 = Input)
Vielleicht ist das ganze auch zu schnell für das Gerät ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo quadratfluss,
ich hatte so ein ähnliches Problem. Es hat sich gezeigt, dass man besser das Hardware- Spi nehmen sollte (meine Meinung). Mit dem kannst man Master oder auch Slave werden. Soweit ich weiss, ist das Software- SPI immer nur Slave in Bascom.
Am besten ist, wenn du das SPCR Register selbst beschreibst (Spcr= 86). Im Dateblatt von Atmega is das noch mal genauer beschrieben. Dann müsste es mit dem Senden und Empfangen klappen. Du musst nur aufpassen, dass der SS Pin auch beim Senden (Master) "High" ist.
Ich hoffe ich hab Dir ein wenig geholfen.
Alex
Lesezeichen