Forum: Mikrocontroller und Digitale Elektronik Bekomme Programm mit i2C Portexpander nicht zum laufen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christoph M. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe folgende Hardware (von myAVR):

- mySmartUSB MK2 (Atmega328 mit 20MHz Quarz)
- mySmartUSB (USB programmer)
- myTWI PortExpander mit PCA9555

- Bascom Compiler v2.0.8.0

Das Programm von Stefan Hoffmann bekomme ich nicht zum laufen.

- Die I2C-Pins SDA und SCL sind mit PortC.4 und 5 verbunden.
- Adresse des Expanderboards ist 000
- Pullup-Widerstände (10k) an SDA und SCL-Pins sind gegen + gesetzt.

Mache ich hier einen Fehler...?

Besten Dank für Hilfe !

von Linus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph M. schrieb:
> Das Programm von Stefan Hoffmann bekomme ich nicht zum laufen.
Wer ist Stefan Hoffmann?

> - Adresse des Expanderboards ist 000
Im Programm werden aber 0x40 und 0x41 verwendet.

> - Pullup-Widerstände (10k) an SDA und SCL-Pins sind gegen + gesetzt.
Kleinere wie 4,7k helfen manchmal.


> Mache ich hier einen Fehler...?
Nimm dein eigenes Programm.

von Paul B. (paul_baumann)


Bewertung
0 lesenswert
nicht lesenswert
Christoph M. schrieb:
> mySmartUSB MK2 (Atmega328 mit 20MHz Quarz)

Dann mußt Du im Quelltext auch diese Werte eintragen. Da steht noch ein 
Atmega8 mit 1MHz drin.

Linus schrieb:
>> Das Programm von Stefan Hoffmann bekomme ich nicht zum laufen.
> Wer ist Stefan Hoffmann?

Schwierig...
Wer könnte das sein, wenn sein Name im Quelltext steht?
;)

MfG Paul

von Linus (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Paul B. schrieb:
> Linus schrieb:
>>> Das Programm von Stefan Hoffmann bekomme ich nicht zum laufen.
>> Wer ist Stefan Hoffmann?
>
> Schwierig...
> Wer könnte das sein, wenn sein Name im Quelltext steht?
> ;)

Danke. Eine Antwort von Paul Baumann.

von Christoph M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

zunächst einmal Danke für die Anregungen.

Der Name: s. Hoffmann ist Autor des Buches "Einfacher Einstieg in die 
Elektronik mit ATMEL AVR Mikrocontrollern"
ISBN: 9783839184301

Ich hatte ein Beispiel aus diesem Buch genommen, um das I2C-Thema besser 
zu verstehen.
Prinzipiell hast Du Recht damit besser ein eigenes Programm zu nutzen.
Aber zum ersten Probieren kann man auch mal abgucken ;-)

Ich werde jetzt mal Deine Hinweise beachten und dann schauen wir mal....

Besten Dank noch einmal !

von Christoph M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Adressen sind aus meiner Sicht richtig.
Hatte mich aber falsch ausgedrückt.

Adressen sind   Schreibadresse &B01000000 = &H40
                Leseadresse.   &B01000001 = &H41

Der Controllertyp war fälschlicherweise noch im Text drin.
Habe diesen jedoch im Quelltext als  m328pdef.dat mit 20MHz drin.

von Gerhard O. (gerhard_)


Bewertung
0 lesenswert
nicht lesenswert
Vornewegs, ich habe mit BASCOM keine praktische Erfahrung. Ich nehme 
aber an, daß Dein Test Programm lauffähig ist.

Vielleicht ist der BASCOM Compiler TWI Bibliothek nicht imstande einen 
328 uC richtig  zu initialisieren und die TWI Treiber passen nicht.

Mit den Erfahrungen die ich sonst mit TWI habe, schlage ich Folgendes 
vor:

1) Reduziere die Pullups auf 3.3 KOhm; 10K sind zu hoch.

2) wenn Du einen Oszi hast, monitor die SCL und SDA Leitungen.

3) am SCL müßte man nun 9 von Hoch auf nieder gehende Impulse sehen ( 
Ist im Datenblatt schematisch gezeigt.)

Wenn sich überhaupt nichts tut, dann stimmt irgendetwas mit dem Program, 
bzw. der uC Initialisierung nicht. Kann Dir aber nicht damit helfen weil 
ich mit BASCOM noch nie gearbeitet habe.

Sollte SCL und SDA aktiv sein, dann mußt Du nun untersuchen ob vom 
PCA9555 ein ACK Antwort im Bereich des 9. clock Impuls kommt. Wenn 
nicht, reagiert der PCA9555 aus einem noch unbekannten Grund nicht. 
(auch wenn das jetzt blöd klingt, messe mit dem DMM nach ob die Logik 
Pegel der A0-2 Anschlüße tatsächlich auf Null gesetzt sind. ) es gilt 
hier wie immer "Trau, schau, wem". Nimm nichts als gegeben hin. Es gibt 
DIP Schalter die machen je nach Beschaltung nicht unbedingt "0/1". Null 
ist manchmal Vdd Pegel.

Normalerweise, solange die TWI Treiber und uC Initialisierung stimmt, 
funktionieren, macht TWI wenig Ärger. Den PCA955x habe ich schon oft in 
der Arbeit verwendet und haben immer auf Anhieb funktioniert.

Hoffe, dass es möglicherweise hilfreich war,
Gerhard

P.s. Auf welchem uC lief Hoffmanns Schaltung?

: Bearbeitet durch User
von Christoph M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen herzlichen Dank für die umfassende Antwort !

Zum letzten Satz: Hoffmanns schaltung lief auf der gleichen Hardware, 
allerdings mit einem Atmega 8 mit 1MHz.

Ich probiere jetzt erst einmal Deine Ratschlge aus.

Danke + Gruss

Christoph

von Gerhard O. (gerhard_)


Bewertung
0 lesenswert
nicht lesenswert
Christoph M. schrieb:
> Vielen herzlichen Dank für die umfassende Antwort !
>
> Zum letzten Satz: Hoffmanns schaltung lief auf der gleichen Hardware,
> allerdings mit einem Atmega 8 mit 1MHz.
>
> Ich probiere jetzt erst einmal Deine Ratschlge aus.
>
> Danke + Gruss
>
> Christoph

Viel Glück bei der Fehlersuche!

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]
  • [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.