www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Bytes übertragen


Autor: Jürgen Berger (hicom)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jürgen Berger (hicom)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen Berger (hicom)
Datum:

Bewertung
0 lesenswert
nicht 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


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.