2 Bytes übertragen

OP #481233
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
Gast
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.
Gast
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.
Gast
>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...
OP
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
Gast
>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.
Gast
@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
OP
> 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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.