mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik i2c-problem mit bascom und Mega16


Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe ein Problem mit dem I2C beim Mega16 und Bascom.
SDA und SCL sind über je 5,6kOhm nach VCC gePullUpt.
Ich habe testweise ein LCD, das über 2 PCF8574 angesteuert wird
dranhängen. Das Problem: Den Avr verlässt kein einziges Signal.
Er zieht die Leitungen nicht runter, also keine Startbedingungen usw.
Ich hab's mit dem Oszi nachgemessen.

Mein Code:



'===CONFIGURATIONS===
   $baud = 9600
   $crystal = 16000000
   $regfile = "m16def.dat"

   Config Pinc.6 = Output                                   '595
Load-Leitung
   Config Pinc.7 = Output                                   '595 Takt

   Config Pina.1 = Output                                   '595 Daten


   Config Pina.0 = Input                                    '165 Daten

   Config Pinb.1 = Output                                   '165 Takt

   Config Pinb.0 = Output                                   '165 Load


   Config Scl = Portc.0                                     'I²C SDA
   Config Sda = Portc.1                                     'I²C SCL


'===ALIASE
   Beep Alias Portd.2

'===VARIABLEN===

   Dim A As Byte
   Dim B As Byte
   Dim D As Byte
   Dim E As Byte

   Dim F As Byte
   Dim S As Byte

'===PROGRAMMBEGINN===

Begin:

I2cinit

Sound Beep , 250 , 1000                                     'Ein
bisschen gepiepse zum Anfang...
Sound Beep , 250 , 900
Sound Beep , 250 , 800
Sound Beep , 500 , 500


Start:

Waitms 500                                                  'Watren


'====Eigentlicher PROGRAMMSTART====


Source:
'TESTPROGRAMM

B = &B01110001                                              'Addresse
des PCF8574 mit DB0-DB7 am Ausgang...
D = &B01110011                                              'Addresse
des PCF8574 mit RS, E und R/W am Ausgang...

I2cstart
   I2cwbyte D
   I2cwbyte &B00000000
I2cstop

Waitms 25

I2cstart
   I2cwbyte B
   I2cwbyte &B00001100
I2cstop

Waitms 25

I2cstart
   I2cwbyte D
   I2cwbyte &B10000000
I2cstop

Waitms 25

I2cstart
   I2cwbyte D
   I2cwbyte &B00000000
I2cstop

Waitms 25

I2cstart
   I2cwbyte B
   I2cwbyte 97
I2cstop

Waitms 25

I2cstart
   I2cwbyte D
   I2cwbyte &B10000000
I2cstop

Waitms 25

I2cstart
   I2cwbyte D
   I2cwbyte &B00000000
I2cstop

End



Was ich auch schon gestestet habe:



B = &B01110000                                              'Addresse
des PCF8574 mit DB0-DB7 am Ausgang...
D = &B01110010                                              'Addresse
des PCF8574 mit RS, E und R/W am Ausgang...

   I2csend D , &B00000000

Waitms 25

   I2csend B , &B00001100

Waitms 25

   I2csend D , &B10000000

Waitms 25

   I2csend D , &B00000000

Waitms 25

   I2csend B , 97

Waitms 25

   I2csend D , &B10000000

Waitms 25

   I2csend D , &B00000000

End



Alles ohne Erfolg.
Braucht man irgendwelche Libraries oder so? Was mache ich falsch?

Ich bedanke mich schonmal...

Liebe Grüße,
Tobi

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab zwar noch nie was mit i2c gemacht, aber ich sag trotzdem mal
was:

bist du sicher, dass die slave-adressen der controller stimmen?

bist du sicher, dass pull-ups notwendig sind? hast du es schonmal ohne
probiert?

muss man evt. interrupts oder sowas aktivieren?

misst du auch am richtigen port?

ich weiß, sind alles blöde fragen aber "nobodys perfect". also mal
schnell überprüfen!

mfg, anfänger.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI Anfänger!

Die Addressen, sind im Moment noch unwichtig. Die zählen erst, wenn was
zum I2C rauskommt.

PullUps sind auf jeden Fall nötig.

Sonst sollte alles stimmen...

Aber irgendwo muss ja der Fehler liegen...

Liebe Grüße,
Tobi

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast Du unter Options -> Compiler -> I2C die PINs eingestellt.

Ich habs mal mit meinen Versuchen verglichen:
Ich hatte die Definitionen nicht in den Code geschrieben, sondern nur
im genannten Menue eingestellt. Das lief problemlos (allerdings nicht
am Mega16).

Vielleicht gibts noch ein Problem mit dem Hardware TWI. (obwohl das
eigentlich nichts machen sollte)

Gruss
Andreas

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.