-         

Ergebnis 1 bis 9 von 9

Thema: Problem mit Bascom und SPI

  1. #1

    Problem mit Bascom und SPI

    Anzeige

    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

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  3. #3
    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

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  5. #5
    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.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  7. #7

    Programmcode

    Ja das Senden funktioniert tadellos. Ich habe es auch schon mit spiin und spiout probiert. Wobei spiin kein ergebnis liefert.

    mfg
    Nils
    Angehängte Dateien Angehängte Dateien

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

    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)
    Da muß es was mit den Pins haben, SPIINIT setzt sie richtig .

    Vielleicht ist das ganze auch zu schnell für das Gerät ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    27.02.2004
    Beiträge
    39
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •