-         

Ergebnis 1 bis 5 von 5

Thema: Asuro I2C Porterweiterung (abgespeckt)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.08.2011
    Beiträge
    27

    Asuro I2C Porterweiterung (abgespeckt)

    Anzeige

    Hallo an alle,

    heute möchte ich meine abgespeckte Version der I2C-Portexpander von Asuro-wiki vorstellen.
    (In der myasuro.h - Datei musste ich die sda und scl ports tauschen, weil in der einleitung der i2c.h und im code die ports für lcd irgendwie vertauscht waren.) aber danach hats funktioniert.
    ich habe aber noch ein paar fragen:

    1) sind 10kOhm pullupwiderstände an sda und scl angemessen?
    2) was für einen zweck erfüllen die INT0 oder INT1 Leitungen?
    3) welche genauen werte muss man beim write befehl eingeben, damit die einzelnen Ports geschaltet werden? (Ich habe nur port 3 und 6 mit dem wert "182" geschaltet bekommen.(wert aus einem anderen code))

    Was haltet ihr davon?

    http://www.youtube.com/watch?v=XaXya...jIkp8CkAdgF26S

    danke

    LG
    Mattze96

    Mein bisheriger code aus der c-Datei:
    Code:
    #include "asuro.h"
    #include "myasuro.h"
    #include "i2c.h"
    
    #define Dev8574   0x40      // Adresse PCF8574 alle auf Masse
    
    int main(void)
    {
    
    
     	Init();                 // initialisiere Asuro
      	InitI2C();				// initialisiere I2C-Interface
    
    	FrontLED(ON);
    	StatusLED(GREEN);
         
        StartI2C(Dev8574 + WRITE);
        WriteI2C(182);
        StopI2C();
          
      while (1);
      return 0;
    }

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    1) 10k ist schon ok. Normalerweise werden 2k bis 5k genommen, aber mit 10k sollte es auch gehen.

    2) die dienen dazu, dem µC zu signalisieren, dass sich ein Portzustandgeändert hat. Als wenn man die IOs der 8574 als Input nutzen möchte.

    3) 182 dezimal = 10110110 binär. Eigentlich entspricht ein bit in der 8Bit-Maske einem IO-Pin. Also deine Pins die du geschaltet hast sind in der Maske 0
    Grüße,
    Daniel

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.08.2011
    Beiträge
    27
    Hallo daniel,

    vielen dank für die schnelle antwort. Mit den Interupts muss ich mich noch ein bisschen genauer beschäftigen.

    gruß
    Matthias

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Also die sollten beim µC an einen iterruptfähigen Pin INTX oder bei neueren AVRs PCINTXX. Die Pins am PCF8574 wecheln dann ihren Zustand. Auf den kannst du dann in der ISR reagieren und den Portzustand per I²C abfragen.
    Grüße,
    Daniel

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    23.08.2011
    Beiträge
    27
    Hallo,

    danke bei mir funktioniert jetzt alles!


    Ich möchte nur meinen Ersten Fehler posten, welcher anderen möglicherweise auch Kopfzerbrechen verursacht hat.

    Es betrifft zwar nur die welche nicht das LCD nutzen, aber egal.

    Falls ich mich irre, bitte verbessern.


    Wenn man laut i2c.h Datei-"Einleitung" ADC2 für SCL und ADC3 für SDA nimmt muss man es in der myasuro.h Datei umändern, weil es als Standard vertauscht ist. Ich habe nach der "Einleitung" der i2c.h Datei verbunden und es mich 3 Stunden gekostet, weil ich immer den Fehler woanders gesucht habe.

    i2c.h Datei
    Code:
    \par I2C am ASURO
      Die Hardware TWI (I2C) Ports sind beim ASURO leider durch den Batterie Abfrage 
      A/D Port und dem Tastsensor A/D Port belegt. Um die I2C Schnittstelle ohne 
      Umbau des ASUROs zu realisieren, wird der I2C BUs mit Software emuliert. 
      Dabei werden füer den I2C Bus die Ports der ASURO Erweiterungsplatine verwendet. 
      Dies sind ADC2 fuer die I2C Taktleitung (SCL) und ADC3 fuer die I2C Datenleitung (SDA). 
      Leider geht dadurch die Funktion des Liniensensors verloren. 
      Da die beiden Fototransistoren ebenfalls die Ports ADC2 und ADC3 belegen. 
      Ausloeten braucht man die Fototransistoren zum Glueck nicht.
    myasuro.h Datei:
    Code:
    /* I2C Bus Definitionen */
    
    #define MY_I2C_SDA     PC3             /*jetzt ist es richtig, den ich habe es geändert, weil als Standard das LCD ausgewählt ist und es nicht mit der Einleitung der I2C Datei zusammenpasst.*/
    #define MY_I2C_SCL     PC2
    
    /* Fuer das LCD Modul aus dem Asuro Buch gilt folgende Pinbelegung */
    //#define MY_I2C_SDA     PC2
    //#define MY_I2C_SCL     PC3

    Grüße

    Matthias

Ähnliche Themen

  1. Asuro - I2C Porterweiterung
    Von m.a.r.v.i.n im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 28.05.2010, 19:40
  2. I2C Porterweiterung am ASURO
    Von falkenroby im Forum Asuro
    Antworten: 18
    Letzter Beitrag: 26.03.2007, 17:23
  3. asuro i2c porterweiterung
    Von srocke im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 25.02.2007, 18:09
  4. I2C Porterweiterung asuro
    Von srocke im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 18.04.2006, 21:27
  5. Asuro 16Bit Porterweiterung
    Von bart im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 15.11.2005, 10:57

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •