dspic30f SSI-Schnittstelle

Gast #3236689
Hallo

Ich bin dabei, einen 12-Bit Drehgeber vom Typ ATD 07S A4 mithilfe eines 
dspic30f4011 auszuwerten. Nach Umwandlung des Differenzsignals und 
einlesen über die SPI-Schnittstelle habe ich versucht, die eingelesenen 
16-Bit-Werte direkt auszugeben, was mir jedoch leider nicht gelingen 
will.
Folgende zwei Probleme treten auf:
1. Die Ausgabewerte springen ständig zwischen zwei Werten.
2. Wenn ich dieses Signal dennoch um vier Stellen shifte (für 12 Bit) 
und in ein Binärsignal umwandel zählt er die Winkel nicht wie gewünscht 
von 0 - 4095 pro Umdrehung ständig hoch, sonder zählt bis 4095, dann 
rückwärts zurück zu null und wieder hoch in der doppelten 
Geschwindigkeit.

Anbei die Konfiguration meiner Schnittstelle und der Aufruf derselben:

OpenSPI1(
FRAME_ENABLE_OFF & FRAME_SYNC_OUTPUT & DISABLE_SDO_PIN & SPI_MODE16_ON & 
SPI_SMP_ON & SPI_CKE_ON & SLAVE_ENABLE_OFF & CLK_POL_ACTIVE_LOW &
MASTER_ENABLE_ON & SEC_PRESCAL_3_1 & PRI_PRESCAL_16_1, SPI_ENABLE & 
SPI_IDLE_STOP & SPI_RX_OVFLOW_CLR);

Der Aufruf der Schnittsteller erfolgt mit 15kHz über

S90EN = 0;
delay(6);
WriteSPI1(0x0000);
while (SPI1STATbits.SPIRBF == 0);
winkel = ReadSPI1();
winkel = winkel >> 4;
S90EN = 1;

Hierbei ist die Ausgabe schon fehlerhaft. Bin etwas ratlos.
Gast
Hi Leo,

bitte prüf mal folgendes :

a) Clockfrequenz
die SSI Schnittstelle muss mit mindestens 80kHz ausgelesen werden, 
zwischen zwei Auslesevorgängen muss eine Pause von mindestens 25us 
liegen.

b) Flanken
die SSI Data Signale wechseln mit steigender Flanke. Wenn man auf der 
falschen Flanke ausliest kommen oft erstmal plausible Ergebnisse raus, 
die allerdings um 1Bit verschoben sind, das könnte die "doppelte 
Geschwindigkeit" erklären.

eine Beschreibung zum der SSI Schnittstelle : 
http://www.posital.com/de/produkte/schnittstelle/ssi/ssi.php

eine ganz brauchbare Applikation note : 
http://www.posital.com/media/posital_media/documents/AbsoluteEncoders_Context_Technology_SSI_AppNote.pdf

Gruss

CWA

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.