-
        
+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Problem mit dem PC-I2C-Bus VB Demo

  1. #1
    Neuer Benutzer
    Registriert seit
    13.11.2004
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    2

    Problem mit dem PC-I2C-Bus VB Demo

    Hallo,
    habe mir gerade das Beispielprogramm für den I2C-Bus nach PC Adapter runtergeladen.
    Leider kommt die GUI nicht hoch, die Prozessorlast steht bei 100% und ich werde das Programm nur noch mit Ctrl+Alt+Entf wieder los.
    Öffnen mit VisualStudio .NET geht auch nicht, da für das MSCOMM.OCX keine Lizenz beiliegt.
    Bin ich der einzige mit diesem Problem?
    Für Lösungsvorschläge wäre ich echt dankbar.

  2. #2
    Neuer Benutzer
    Registriert seit
    13.11.2004
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    2
    Achja, da war noch was...
    ich nutze WinXP Pro mit SP2. Auf einem durchnitts PIV.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.10.2004
    Beiträge
    7
    Hy,

    ist bei mir auch so ähnlich.
    mache follgendes:

    RS232 -> I2C Adapter anschliessen.

    I2C Pin 1,3 sind SCL, SDA
    2,4,... GND
    5,7 5V

    schließ GND und 5V an (und kein SCL, SDA ), dann kommt die GUI hoch.

    gruß

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    12.10.2004
    Beiträge
    7
    Aber da wir schon dabei sind ... brauche auch Hilfe damit

    Versuche mit dem ATmega64 zu kommunizieren.
    Er als Master, PC als Slave.

    Master muß kennen:
    // General TWI Master staus codes
    #define TWI_START 0x08 // START has been transmitted
    #define TWI_REP_START 0x10 // Repeated START has been transmitted
    #define TWI_ARB_LOST 0x38 // Arbitration lost

    // TWI Master Transmitter staus codes
    #define TWI_MTX_ADR_ACK 0x18 // SLA+W has been tramsmitted and ACK received
    #define TWI_MTX_ADR_NACK 0x20 // SLA+W has been tramsmitted and NACK received
    #define TWI_MTX_DATA_ACK 0x28 // Data byte has been tramsmitted and ACK received
    #define TWI_MTX_DATA_NACK 0x30 // Data byte has been tramsmitted and NACK received

    // TWI Master Receiver staus codes
    #define TWI_MRX_ADR_ACK 0x40 // SLA+R has been tramsmitted and ACK received
    #define TWI_MRX_ADR_NACK 0x48 // SLA+R has been tramsmitted and NACK received
    #define TWI_MRX_DATA_ACK 0x50 // Data byte has been received and ACK tramsmitted
    #define TWI_MRX_DATA_NACK 0x58 // Data byte has been received and NACK tramsmitted

    /////////////////////// TWI ////////////////////////////////////
    // Setze Baudrate ??? Baud bei 8 MHz
    // Berechnet sich aus: Baudrate = CLK / ( 16+2*(TWBR)*4^(TWPS) )
    TWBR = 145; // Bit Rate Register
    // Control Register
    TWCR |= (1<<TWEN); // Aktiviere TWI
    TWCR |= (1<<TWIE); // aktiviere den TWI-Interrupt
    TWCR |= (1<<TWINT);
    // TWI Status (Bit 7..3) und Prescaler (Bit(1..0)
    TWSR = 0x02; // TWPS = 0

    und dann aus dem handbuch:

    TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); // Send START Cond
    while ( !(TWCR&(1<<TWINT) ) ); // Wait TWINT Flag set

    // Check Bus Status : 0x08 // START has been transmitted
    if ( (TWSR & 0xF != TWI_START )
    TWI_ERROR();

    TWDR = ( (113 << 1) & 0xFE ); // SLA_W // Load Slave Adress
    TWCR = (1<<TWINT) | (1<<TWEN); // Transmit Adress
    while ( !(TWCR&(1<<TWINT) ) ); // Wait TWINT Flag set

    // Check Bus Status : 0x18 // SLA+W has been tramsmitted and ACK received
    // 0x20 // SLA+W has been tramsmitted and NACK
    received
    if ( (TWSR & 0xF != TWI_MTX_ADR_ACK )
    TWI_ERROR();

    Bekomme an diese Stelle keine Antwort von der PC Applikation, d.h. der TWSR status ist 0x20 !!!!

    irgend welche ideen ?

    danke im voraus

  5. #5
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    hast du denn dafür auch eine PC-Slave Software geschrieben? Das mitgelieferte Demo ist nur für den Masterbetrieb gedacht. Eine Slave-Software müsstest du selbst schreiben. Da VB für SLave-Software ein wenig langsam ist, wäre Assembler oder C beim PC in diesem Fall günstiger

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    12.10.2004
    Beiträge
    7
    Tja, hab's zuerst falsch interpretiert...
    Empfangen heißt ja im master mode abfragen.

    Versuche jetzt den ATmega64 so zu konfigurieren das er als Slave antwortet. Habe dazu eine Atmel Applikation gefunden: AVR312 (Slave) und AVR315 (Master).

    dann ... selbst schreiben ... na ja ...
    Diese SW-Komponente ist MSCOMM32.OCX ?

    Wie groß ist eigentlich die SCL der PC Bsp.-Applikation?
    ~2KHz (2400 Baud) ?

    gruß

  7. #7
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    MSCOMM32.OCX ist die normale VB6 Komponente um den COM Port zu nutzen!
    Wie hoch die Geschwindigkeit bei dem Visal Basic Demo ist weiss ich nicht, ich habs nicht überprüft. Wenn PC Master ist, ist geschwindigkeit ja oft nebensächlich (je nachdem was man steuert). Man kann die natürlich erhöhen indem man den COM-Port direkt anspricht bzw. das in C oder Assembler umsetzt. Da gibts auch schon DLL´s und Code im Netz, ich glaub die Webadresse hatte ich im Schaltplan in der Doku irgendwo angegeben.
    Aber zum testen ist das VB-Programm immer am übersichtlichsten, find ich.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    12.10.2004
    Beiträge
    7
    O.K. PC-Test als Master, AVR als Slave tut.
    Cool , danke .

    Anmerkung:
    Die Slave-ID der GUI ist eigentlich der SLA+W bzw. SLA+R Byte, d.h. SlaveAdresse * 2 + Read_not_Write.

    Problem:
    http://home.welfen-netz.de/IngoGerla...c_seriell.html
    ist zur zeit nicht erreichbar. Ich denke das ist der link, den du meinst.

    Hat jemand i2c-01.zip bzw. i2c-01_nt.zip vorher runtergeladen ?

    gruß

+ Antworten

Berechtigungen

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