mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zur Arbeitsweise von I2C und SPI


Autor: Barney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag

Ich habe die Aufgabe mit einem AVR einen Konoten zu machen mit dem 
Soll-Daten mit niedriger Priorität in einen Bus für Regeldaten mit hoher 
Priorität eingeschleust werden.

Dabei werden die Rergeldaten über I2C verarbeitet und die Solldaten 
kommen über SPI.
Da der Knotenprozessor einiges zu rechnen hat, würde es mich 
interessieren ob das Programm während dem Empfangen unterbrochen wird, 
oder ob das Byte einfach nur aus der Variable ausgelesen werden muß wenn 
gerade Zeit ist.

Weis da jemand etwas genaueres?
Ich konnte im Datenblatt leider nichts genaues darüber finden.

mfg Barney

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Barney (Gast)

>Dabei werden die Rergeldaten über I2C verarbeitet und die Solldaten
>kommen über SPI.

Warum zwei Busse? Das halte ich für wenig sinnvoll.

>Da der Knotenprozessor einiges zu rechnen hat, würde es mich
>interessieren ob das Programm während dem Empfangen unterbrochen wird,

Naja, für EIN Byte muss das Programm nicht unterbrochen werden, das kann 
die SPI puffern. Bei mehreren Bytes geht das logischerweise nicht.

MFG
Falk

Autor: Barney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag

>Warum zwei Busse? Das halte ich für wenig sinnvoll.

Weil nicht alle verwendeten Komponenten I2C unterstützen.
Außerdem will ich nicht dass diverse Dinge mit niedriger Priorität wie 
das Abspeichern von Sensor-/Aktorstatistiken, das Ansteuern des LCD,... 
dem Regelkreis dazwischenfunkt.

Am Regelbus hängen diverse Aktoren und Sensoren die mit absoluter 
Priorität arbeiten müssen.
Wenn da das falsche Signal zur falschen Zeit daherkommt bricht die 
gesammte Regelung zusammen.
(Außerdem hat der Bus nicht genug Ressourcen übrig um alle Daten zu 
verteilen.)

Da die kleinen AVR's selten 2 I2C oder 2 SPI haben, verwende ich also 2 
verschiedene Bus-Systeme.


>Naja, für EIN Byte muss das Programm nicht unterbrochen werden, das kann
>die SPI puffern. Bei mehreren Bytes geht das logischerweise nicht.
Danke für die Information.
Mehr braucht ja auch nicht übergeben werden.

mfg Barney

Autor: 2920 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das Timing dermassen kritisch ist, wuerd ich's nicht mit einem 
Controller machen, sondern mit einem FPGA oder einem CPLD

Autor: Barney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Timing ist nicht so kritisch.

Wenn diverse Teilnehmer die nicht der Regelung dienen die Daten über das 
gleiche Netz schicken können, kann ich nicht mehr sicher sein dass die 
Daten der Regelung rechzeitig durchkommen.

Und wenn die Daten der Regelung absolute Priorität haben, kann ich nicht 
sicher sein dass der Rest rechzeitig abgearbeitet wird.
Z.B. ist es nicht lustig wenn eine Haufen der Daten verloren gehen, 
Eingaben nicht beachtet werden oder das Display nicht aktualisiert wird.

Aus diesem Grund trenne ich das Ganze in 2 Prioritätsebenen auf.
Dadurch habe ich weniger Arbeit und habe es leichter bei der 
Fehlersuche.

mfg Barney

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und dann nimmst Du den langsamen I2C für die hochpriorisierten Dinge 
und den schnellen SPI für die nebenläufigen???

Autor: Barney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...und dann nimmst Du den langsamen I2C für die hochpriorisierten Dinge
>und den schnellen SPI für die nebenläufigen???

Weil ich Komponenten im Regler-Bussystem habe die nur I2C können.
Priorität hat übrigens wie Echtzeitfähigkeit nicht immer etwas mit 
Geschwindigkeit zu tun.
(Außerdem habe ich absolut keine Lust das Handhaben verschiedener 
Prioritätsstufen auf einem Bus softwaremäßig zu lösen.)

Mfg Barney

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.