mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Status vom I2C-Bus


Autor: Denny S. (nightstorm99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wie kann man (am besten in Bascom) den Status vom I2C-Bus abfragen?
Will wissen ob der Bus belegt ist oder nicht.
Es läuft zwar auch so, aber nach einigen Stunden hängt sich dann 
irgendwas auf.

Habe 2 Atmega, ein Ds1307, ein Ultraschallsensor SRF02 und 2 Eeproms 
dran
zu hängen. Beide Atmega soll hin und wieder vom DS lesen und beide 
sollen aus
den Eeproms lesen und schreiben können. Quasi als Multi-Mastersystem.


Gruss

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Denny Sandner (nightstorm99)

>Habe 2 Atmega, ein Ds1307, ein Ultraschallsensor SRF02 und 2 Eeproms
>dran
>zu hängen. Beide Atmega soll hin und wieder vom DS lesen und beide
>sollen aus
>den Eeproms lesen und schreiben können. Quasi als Multi-Mastersystem.

Warum beide? Brauchst du für deine Sache WIRKLICH zwei AVRs, die BEIDE 
auf den Bus als Master zugreifen? Wenn BASCOM den Multimasterbetrieb 
nicht direkt unterstützt muss man da vorsichtig sein.

MFG
Falk

Autor: Denny S. (nightstorm99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
> @ Denny Sandner (nightstorm99)
>
>>Habe 2 Atmega, ein Ds1307, ein Ultraschallsensor SRF02 und 2 Eeproms
>>dran
>>zu hängen. Beide Atmega soll hin und wieder vom DS lesen und beide
>>sollen aus
>>den Eeproms lesen und schreiben können. Quasi als Multi-Mastersystem.
>
> Warum beide? Brauchst du für deine Sache WIRKLICH zwei AVRs, die BEIDE
> auf den Bus als Master zugreifen? Wenn BASCOM den Multimasterbetrieb
> nicht direkt unterstützt muss man da vorsichtig sein.
>
> MFG
> Falk


Beide sind in unterschiedlichen Zimmer platziert.
Sollen dann mal über 2 Repeater verbunden werden.
Will quasi nur ne Abfrage machen, ob der Bus frei ist oder nicht, das 
sollte reichen.
Wie gesagt es läuft ja ne weile und dann hängt irgendwas.

Gruss

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Denny Sandner (nightstorm99)

>Will quasi nur ne Abfrage machen, ob der Bus frei ist oder nicht, das
>sollte reichen.

So einfach ist das nicht. Denn da hängt auch ein relatv knappes Timing 
dahinter. Klar kann man für ein paar us prüfen, ob SCL und SDA auf HIGH 
liegen. ABER! Wenn dann losgelegt wird mit schreiben muss der I2C Master 
nochmal prüfen, ob nicht jemand dazwischen funkt. Und das muss in den 
BASCOM-I2C Routinen eingebaut sein, damit es SICHER funktioniert. Wenn 
nicht, kannst du Multimaster vergessen oder die I2C Routinen neu 
schreiben.

Workaround. Nur EIN AVR ist Master. Der zweite ist Slave und bekommt vom 
ersten eine Kopie der DS1307 Daten.

MfG
Falk

Autor: Denny S. (nightstorm99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das mit der Slave Sache ist ganz schön, nur leider muss man bei 
Bascom dafür extra zahlen.
Und die anderen Sachen die ich im Netz gefunden habe, damit komme ich 
noch nicht
ganz klar.

Habe mal grob gerechnet und im Moment werde ca 20 Abfragen in der 
Sekunden auf den I2C-Bus gemacht.

MfG

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Denny Sandner (nightstorm99)

>Ja das mit der Slave Sache ist ganz schön, nur leider muss man bei
>Bascom dafür extra zahlen.

There is no such thing as free lunch.

>Habe mal grob gerechnet und im Moment werde ca 20 Abfragen in der
>Sekunden auf den I2C-Bus gemacht.

Und? Das spielt keine Rolle. Wenn sich das Ding verklemmt, dann klemmt 
es. Wobei eine gute I2C Routine ein Timeout generiert, den Bus wieder 
frei gibt und einen Fehler zurückmeldet.

MfG
Falk

Autor: Michael P. (desilva)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ATMEL ist sehr undeutlich in der Feature-Beschreibung. Auf den Seiten 
191 ff. des ATmega 8 Manuals findet man etwas über Multimaster-Betrieb, 
was allerdings auch nach zweimaligem Lesen für mich nicht völlig 
schlüssig klingt.

Das Sicherste wäre zwischen allen potenziellen Mastern eine Art "token 
passing" Protokoll auf Software-Ebene aufzubauen. Blöde ist da immer die 
time-out Behandlung, wenn einer der Master abgeschaltet, kaputt oder 
anderweitig beschäftigt ist...

Aber auch das erfordert die - Geld kostende :-) - 
Slave-Implementierung...

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.