www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom I2C Anfangsschwierigkeiten


Autor: Wolfgang Ruckert (woru)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich neu bin in der Materie, brauche ich Hilfestellung:
Ich möchte einen Baustein (PCF8574 oder PCF8583) über I2C ansprechen. 
Ich benutzt  das Atmel Starterkit von Pollin und ein Atmega16 mit 8 MHz. 
Die weiteren Bausteine sind auf einer Zusatzplatine, die über etwa  50 
cm FB-Leitung angeschlossen ist. Die Leitungen des I2C-Buses sind mit je 
4K7 abgeschlossen. Die Bausteine sind mit 100nF Abblockkonensatoren 
versehen. Das Bitmuster von SLC und SDA  ist am Baustein nachvollziehbar 
(Osci).
Bei der Software habe ich verschiedene Möglichkeiten ausprobiert:
I2cstart                 oder        I2cinit
I2cwbyte                             I2csend
I2cstop



Jedesmal wird beim Senden eines Bytes (I2cwbyte oder I2csend) die 
Variable "ERR" auf 1 gesetzt und der Baustein reagiert nicht.
Wahrscheinlich ist das nur eine kleine Sache, aber als Anfänger hat man 
so seine Schwierigkeiten.

Ich bedanke mich schon mal für die Hilfe
wolfgang

Autor: Metaller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne mich nicht mit Bascom aus, aber im Prinzip sieht die 
Vorgehensweise wie folgt aus (Ich gehe mal davon aus, dass Du die 
Bausteine richtig verdrahtet hast):

1. Initialisierung
2. Startbedingung senden
3. Slave-Lese- oder Slave-Schreibadresse senden, danach ACK abfragen
4. Daten versenden bzw. empfangen, danach ACK senden bzw. abfragen
5. entweder noch mehr Daten versenden bzw. empfangen oder weiter mit n.
n. Stopbedingung senden
...
(n+1.) bei Punkt 2 wieder einsteigen, wenn wieder ein Transfer 
stattfinden soll.

So sieht ein Datentransfer per I2C aus. Nun kannst Du es mal mit Deinem 
Programm vergleichen. Ich hoffe, dass es Dir einwenig weiter hilft.

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Bascom Start-Sequenz  I2CSTART ist aber mit Vorsicht zu behandeln,
ich hatte mal den Fall, das ein Baustein nicht wollte wegen dem
Befehl, weil Bascom intern ne Restart Sequenz generiert.
Andere Bausteine brauchten genau das zur Funktion ... ein Hoch der
Deutschen Industrienorm :o(

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ein Hoch dem Bascom :-)

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ein Hoch der Deutschen Industrienorm :o(

was hat die mit I²C zu tun?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marko wrote:
> ich hatte mal den Fall, das ein Baustein nicht wollte wegen dem
> Befehl, weil Bascom intern ne Restart Sequenz generiert.
> Andere Bausteine brauchten genau das zur Funktion ... ein Hoch der
> Deutschen Industrienorm :o(


Huch was solln das sein (Restart Sequenz), kann man das essen ?


Es gibt ein Repeat-Start, was z.B. EEPROMs zum Lesen brauchen, aber das 
entspricht voll und ganz der I2C-Norm.

Erzähl dochmal, welche ICs Deiner Meinung nach von der Norm abweichen 
sollen.

Mir sind bisher keine untergekommen.


Ich mache meinen Single-Master allerdings grundsätzlich in Software, das 
ist einfacher, weniger Code, universeller und funktioniert immer.


Peter

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bascom PCF8474 Beispiel siehe:
\BASCOM-AVR\SAMPLES\I2C.bas

Auszug :
'-------- now write to a PCF8474 I/O expander -------
I2csend &H40 , 255                             'all outputs high
I2creceive &H40 , B1                           'retrieve input
Print "Received data " ; B1                    'print it


Gruß HansHans

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.