- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 8 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 78

Thema: I2C

  1. #31
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    E-Bike
    Der code sollte eigentlich verwendbar sein

    So würde ich es probieren, zusammengefasst auf das wesentliche:
    Code:
    $regfile = "m32def.dat"                                      ' the used chip 
    $crystal = 16000000                                         ' frequency used 
    
    Config Portd = Output       ' kompletter PortD als Ausgang 
    
    Dim Twi_control As Byte    ' Controlregister lokale kopie 
    Dim Twi_status As Byte 
    
        Twsr = 0                  ' status und Prescaler auf 0 
        Twar =  &H70           ' z.B. Slaveadresse PCF     
        Twcr = &B01000100  ' TWI aktivieren, ACK einschalten 
    
         Portd = 0                 ' alle LEDs auf grundstellung
    
    Do 
        Twi_control = Twcr And &H80
        If Twi_control = &H80 Then 
            Twi_status = Twsr And &HF8
            If Twi_status = &H80 Or Twi_status = &H88 Then 
                         Portd = Twdr                       ' Daten an das Port ausgeben
            End If 
            Twcr = &B11000100              ' TWINT löschen, erzeugt ACK 
        End If 
    Loop 
    
    End
    Anm: Bei der Slave Adresse ist nur wichtig, dass der Master die gleiche verwendet (logo)

    ---- OR Twi_status = &H88 kann eigentlich entfallen, da du ja immer ACK sendest.

    Versuchs mal
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #32
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Dominik, folgender Vorschlag:

    Du liest dir sorgfältig die Artikel durch, die im Artikelbereich zum Thema I2C und TWI stehen. Bei konkreten Fragen zu bestimmten Textpassagen kriegst du konkrete Antworten. Es ist UNBEDINGT erforderlich, daß du den Ablauf des I2C Protokolls kennst und kapierst, sonst helfen dir auch 100 Codeschnipsel nicht weiter.
    Danach erarbeiten wir hier Schritt für Schritt die Kommunikation.
    Wenn der Groschen gefallen ist, wirst du feststellen, daß du keine Codeschnipsel mehr brauchst.

    Günter

  3. #33
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    ok,ich habe halt bisehr immer einen fertigen code genommen und daran gearbeitet und rumprobiert.
    ich werdem mir die artikel nun mal durchlesen.

  4. #34
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    ich habe mal fragen:
    im artikel I2C steht folgender code:
    I2C Start
    I2C Send Write-Address
    I2C Send Argument
    I2C Start oder Repeated Start
    I2C Send Read-Address
    I2C Read Data
    ....
    I2C Stopp oder Release Bus

    das müsste dan doch wen ich nun verstehe so heißen wen ich was senden will:

    I2C start
    I2C 2 (adresse vom slave)
    I2C Send 128 (das was gesendet werden soll
    I2C stop

    aber weiter unten steht das so:
    i2c_init
    i2c_start
    i2c_sendebyte(slaveid)
    i2c_sendebyte(wert1)
    i2c_sendebyte(wert2)
    i2c_stop

    das müsste dan doch so heißen:
    i2c_init
    i2c_start
    i2c_sendebyte 2
    i2c_sendebyte 128
    i2c_stop

    was ist nun richtig??

  5. #35
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Beides! Das eine sind Bascom Highlevelbefehle (in Bascom schon eingebaut), das andere selbstgestrickte Funktionen.
    I2CSend = Befehl von Bascom
    i2c_sendebyte(slaveid) = Funktionsaufruf einer selbst gebauten Funktion!

    Die Funktion oder Sub i2c_sendebyte() müsste irgendwo im Code zu finden sein.

    Beachte auch die Unterschiede zwischen Hardware- und Software-I2C!

    Günter

  6. #36
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    was für unterschiede wo weren die erläutert??
    also ist das so korrekt:
    I2C start
    I2C 2 (adresse vom slave)
    I2C Send 128 (das was gesendet werden soll
    I2C stop

  7. #37
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    was für unterschiede wo weren die erläutert??
    http://www.rn-wissen.de/index.php/Bascom_I2C_Master
    also ist das so korrekt:
    I2C start
    Ja, hier startet der I2C-Master die Kommunikation
    I2C 2 (adresse vom slave)
    Fast, I2Csend 2!
    Hier schickt er die Meldung in den Bus, welcher Slave daß jetzt gefälligst zu antworten hat. Bei der Vergabe von Slaveadressen das folgende beachten:
    http://www.rn-wissen.de/index.php/I2...ierte_Adressen
    I2C Send 128 (das was gesendet werden soll
    I2C stop
    und schon hat der I2C-Master ein Byte verschickt.

    Günter[/url]

  8. #38
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.400
    so anbei. den code den du "gefunden" hast habe ich dir hier bereit gestellt. aber passt schon!!!

    passt zu dem was mir etliche thread vermitteln "kein bock etwas selbst zu erarbeiten"


    [OT]
    zu dem tipp problem ich kenn das zu gut man will zwar antworten aber das dann auch möglichst schnell abbacken. so passiert es mir sehr oft. ich tippe und tippe, das dann auchnoch zu schnell, und dann ist der text meist unlesbar. meistens kontrollier ich dann noch gegen. aber auf groß und kleinschreibung achte ich erlich gesagt auch kaum bis garnicht. bin ich ganz erlich zu bequem für und bin in rechtschreibung auch nicht der pro. ist eher vieles außwendig gelernt.
    [/OT]

  9. #39
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    ah ok thx.
    ich möchte es nun per software I2C machen.
    hier mal ein code:

    $regfile = "M32def.dat"
    $crystal = 16000000
    $baud = 9600

    Config Scl = Portb.0 (Port für Scl)
    Config Sda = Portb.1 (Port für Sda)

    ' Config I2cdelay = 10
    I2cinit


    Do
    wait 2
    I2C start
    I2C Send 2 (adresse vom slave)
    I2C Send 10 (das was gesendet werden soll)
    I2C stop

    wait 5

    I2C start
    I2C Send 2 (adresse vom slave)
    I2C Send 20 (das was gesendet werden soll)
    I2C stop

    Loop

    End


    ist der code korrect?
    das rot markierte habe ich irgenwo gelesen.
    kan man das weglassen?
    wen nein, wofür ist es gedacht?
    würde mich über weiter hilfe tips und infos freuen

    gruß
    Dominik

    P.S.:
    Mist ich habe schon wieder nicht auf meine Groß und Kleinschreibung geachtet
    Sorry [-o<

  10. #40
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    So Dominik,

    jetzt zum nächsten Schritt:

    Config hört sich doch schwer nach Bascom-Befehl an. Also schauen wir mal nach:
    http://avrhelp.mcselec.com/config_i2cdelay.htm

    Tatsächlich!
    By default a value of 5 is used. This will give a 200 kHZ clock.

    When you specify 10, 10 uS will be used resulting in a 100 KHz clock.
    Wie würdest du den Satz übersetzen?

    Dann weiter mit I2Cinit:

    http://avrhelp.mcselec.com/i2cinit.htm

    Was folgerst du aus den Anmerkungen zu dem Befehl?

    Du siehst, anhand der Bascomhilfe kannst du die Fragen selbst beantworten. Besser noch, du kannst dich überall darauf berufen! Wenn also jemand mal was anderes behauptet kannst du ihn mit einem Zitat aus der Bascomhilfe in die Knie zwingen. Das ist doch cool, oder?

    Genauso siehts bei der Hardware mit den Atmel-Datasheet des jeweiligen ATMegas aus. Was da steht ist Gesetz! Wer also der voll konkrete Checker sein will, guckt ins Datasheet!

    Gruß Günter

Seite 4 von 8 ErsteErste ... 23456 ... LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress