alx144
December 4, 2023, 2:58pm
1
kann ich mit einem Arduino Uno einen SSI( Synchron Serial Interface) - Master Simulieren
also das der Arduino mir clock daten und data daten (24msb + 1lsb) vorgibt.
Hat da wer erfahrung damit ?
MB5U - iC-Haus GmbH (ichaus.de) ----> Das ist ein SSI-Master zum Beispiel
Was ist ein
alx144:
SSI-Master
???
Das hier wahrscheinlich nicht.
Du bist doch schon ein Weilchen beim Arduino-Forum
Hast du das mal gelesen?
Bitte lies die Hinweise zur Benutzung dieses Forums, um Tipps zum Verfassen von Forumsbeiträgen zu erhalten und dieses Forum optimal zu nutzen. Vielen Dank! Das Arduino Forum Team .
Dies ist eine Übersetzung von How to get the best from this forum von Perry Bebbinton .
Hallo,
Willkommen im Arduino Forum.
Dieser Leitfaden erklärt, wie Sie dieses Forum am besten nutzen können. Bitte lesen und befolgen Sie die folgenden Anweisungen.
Wenn Sie neu hier sin…
ansonsten
vgs
Hallo alx144
Ja, das ist möglich, da die synchrone serielle Schnittstelle über zwei Portpins simuliert werden kann. Dazu ist ein Timer erforderlich, der die Datenrate erzeugt.
Rintin
December 4, 2023, 7:04pm
4
Wie gehts deinem Encoder mit A/B Takt?
Was versuchst du jetzt? Einen Sensor mit SSI Protokoll über den Arduino auszulesen?
uwefed
December 4, 2023, 10:23pm
5
SPI mit RS422 Adapter?
Grüße Uwe
Etwas mehr:
The open source BiSS interface (bidirectional/serial/synchronous) is based on a protocol which implements a real time interface. It enables a secure serial digital communication between controller, sensor and actuator. The BiSS protocol is designed in B mode and C mode (continuous mode). It is used in industrial applications which require transfer rates, safety, flexibility and a minimized implementation effort. The BiSS interface has roots in SSI and a simplified INTERBUS. The proprietary stan...
Edit: Da gibt es auch die AN zu den Implementationen in C fürs Protokol
https://biss-interface.com/c/downloads/
alx144
December 11, 2023, 10:58am
7
void setup() //generation of 80 kHz PWM signal using TCNT1
{
Serial.begin(9600);
pinMode(9, OUTPUT); //DPin-9 will deliver PWM signal for Ch-A
TCCR1A = 0b11100010; //COM1A1 COM1A0 COM1B1 COM1B0 b4 b3 b2 WGM11 WGM10; Mode-10 PWM; inverting
TCCR1B = 0b00010001; //b7 b6 b5 WGM13 WGM12 CS12 CS11 CS10; Mode-10 PWM; division factor = 1; clkTC1 = clkSYS/1
ICR1 = 100; //foc1A = 80 kHz;
//fDSPWM = (clkSYS/N)/(2*ICR1) = clkSYS/(2*N*ICR1) = clkSYS/(2*N*TOP)
// 80*1000 = 16000000/(2*1*ICR1); ICR1 = 1600/16 = 100
TCNT1 = 0x0000; //initial count
}
void loop() //changing the duty cycle (ON-period) manually
{
if (bitRead(TIFR1, OCF1A) == HIGH)//if TCNT1 matches with OCR1A;change duty cycle
{
bitSet(TIFR1, OCF1A); //clear flag
OCR1A = map(analogRead(A0), 0, 1023, 0, 95);//95 < ICR1 = 100 new value for new duty cycle
Serial.println(OCR1A, DEC); //shows the value written into OCR1 register
delay(1000); //test interval
}
}
Mit dem code bekomme ich eine Taktfrequenz von 80khz hin (clock)
Sovbald ich aber mit einer schleife 24 msb takte + 1lsb (data) simulieren möchte funktioniert es nicht
Rintin
December 11, 2023, 6:55pm
8
Kannst du mal schauen, was der Code ausgibt, wenn du den Sensor an MISO und SCK anschließt?
#include <SPI.h>
SPISettings settings(100000, LSBFIRST, SPI_MODE2);
void setup() {
Serial.begin(9600);
SPI.begin();
}
void loop() {
SPI.beginTransaction(settings);
delay(1);
uint8_t data[4];
for(unsigned int x = 0; x<sizeof(data);x++){
data[x] = SPI.transfer(0);
}
SPI.endTransaction();
for(int x = 0; x<30; x++){
bool b = bitRead(data[x/8], x%8);
Serial.print(b, BIN);
}
Serial.println();
delay(1000);
}
system
Closed
June 8, 2024, 6:56pm
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.