Forum: Mikrocontroller und Digitale Elektronik 2 Bytes übertragen


von Jürgen B. (hicom)


Lesenswert?

Hallo,
folgendes Problem: Ich muss periodisch 2 Byte von einem SPS System
an einen AVR senden. Hierzu stehen mir 4 Ausgänge an der SPS zur 
Verfügung.

Zur Zeit ist Ausgang 1 der Takt, Ausgang 2 /SS und Ausgänge 3 und 4
Byte 1 und Byte 2. Bei jeder Flanke am Taktausgang werden die an den
Ausgängen 3 und 4 anstehenden Signale in den AVR eingelesen, so dass 
nach
4 Takten beide Bytes eingelesen sind.
Mir fällt keine schnellere Methode ein die Bytes zu übertragen oder gibt
es noch einen besseren Weg?

Jürgen

von Oschi (Gast)


Lesenswert?

4 Takte ? Eher nicht. 8 Takte min.
Da wuerde sich das SPI anbieten. In nur einer Richtung mit : Clk, 
DataIn, CS. Da waeren 2 byte nach 16 takten gelesen. Mit 2 DataIn 
parallel waeren's noch 8 Takte.

O.

von Rahul, der Trollige (Gast)


Lesenswert?

Mit dem Takt an einem INT-Eingang sollte man das machen können. Beim AVR 
kann man (bei manchen) externen Interrupt-Eingängen die Flanke auf 
"egal" einstellen (beide Richtungen). Dann braucht man nur noch in der 
ISR die beiden Dateneingänge abfragen (und in das jeweilige Byte 
reinschieben). Eine Grenzfrequenz wird es aber auch hier geben...
Wenn der Controller nichts anderes macht, kann man den /SS-Eingang auch 
auf einen externen Interrupt-Eingang legen und den auf die fallende 
Flanke stellen.

von Rahul, der Trollige (Gast)


Lesenswert?

>4 Takte ? Eher nicht. 8 Takte min.

Jede Taktflanke... das sind 2 Signale pro Takt.

>Da wuerde sich das SPI anbieten.

Das ist ein SPI...

von Jürgen B. (hicom)


Lesenswert?

wie gesagt, z.Zt. lese ich mit jeder Flanke ein und habe die Daten
nach 4 Takten im AVR. Das funktioniert sehr gut. Da ich nicht schneller
als 5ms takten kann dauert der komplette Übertrag immerhin 35ms.
Aber mir fällt keine optimalere Lösung ein.

Jürgen

von Rahul, der Trollige (Gast)


Lesenswert?

>Da ich nicht schneller
>als 5ms takten kann dauert der komplette Übertrag immerhin 35ms.
Deine SPS kann nicht schneller?
Da hat der AVR ja Zeit ohne Ende...

>Aber mir fällt keine optimalere Lösung ein.
Höchstens noch, die Daten parallel statt seriell zu übertragen.
Wo ist denn das Problem bei dieser Übertragungsart? Sie ist relativ 
schnell und pinsparend. Eigentlich doch optimal.

von Falk (Gast)


Lesenswert?

@Jürgen Berger

>wie gesagt, z.Zt. lese ich mit jeder Flanke ein und habe die Daten
>nach 4 Takten im AVR. Das funktioniert sehr gut. Da ich nicht schneller
>als 5ms takten kann dauert der komplette Übertrag immerhin 35ms.

Naja, so ne SPS ist ja auch schnarchlangsam. Mach doch lieber RS232. 
Dann hast du weniger Befehle in der SPS. Allerdings brauchst du dann 
einen sauberen Timer. Daran wirds wohl scheitern.

>Aber mir fällt keine optimalere Lösung ein.

Schönes Unwort. ;-)
Entweder ist eswas optiomal oder nicht. Optimal kann man nciht steigern. 
Man kann nur etwas verbessern.
Der Dativ ist dem Genitiv sein Tod.

MfG
Falk

von Jürgen B. (hicom)


Lesenswert?

> Da hat der AVR ja Zeit ohne Ende...
das ist auch gut so, es läuft noch ein DMX Transmitter und ein
RC5 Empfänger "nebenbei"


> Wo ist denn das Problem bei dieser Übertragungsart? Sie ist relativ
> schnell und pinsparend. Eigentlich doch optimal.
Ja, ich denke auch, dass es optimal ist. Vielleicht kann ich auf der
SPS Seite noch etwas verbessern.

Jürgen


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.