- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 32

Thema: TWi Problem =>Multimaster RN-Wissen

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Anzeige

    Powerstation Test
    Nun das war`d nur mal eine Frage. Muss mich irgend wann mal damit beschäftigen, habe einige GLCD`s aus unserem Industrie Schrott gefischt.

    Oki, einen schönen Sonntag noch!

    MAT

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Hallo PicNick

    jetzt hab ich noch eine Frage.
    Das Vorhergehende war nur zum probieren. Im grunde genommen will ich folgendes machen:
    1. Byte ist ein Befehl für ein anderen Slave(Master) =>nur lesen oder in eine Sub springen
    2. Byte ist ein Infobyte das besagt was es für Daten sind
    3. Byte soll dann die Daten beinhalten => und hier ist das Problem: die Daten sind kein Byte sondern ein Single!

    Kann ich dieses genauso senden oder muss ich es erst mit overlay in einzelne Byte zerlegen?

    MAT

  3. #13
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Du mußt deine Messag z.B so aufbauen, wenn du als Daten Bytes, Words, singles oder doubles senden willst. Die genau sende-Länge mußt du allerdings selbst ausrechnen

    Beispiel:

    Code:
    DIM Befehl  AS BYTE
    DIM Info     AS BYTE
    DIM Datenbyte  AS BYTE
    DIM Datenword  AS BYTE AT Datenbyte OVERLAY
    DIM Datenlong  AS BYTE AT Datenbyte OVERLAY
    DIM Datensingle  AS BYTE AT Datenbyte OVERLAY
    DIM Datendouble  AS BYTE AT Datenbyte OVERLAY
    
               Twi_mt_data = Varptr(Befehl)  ' ist immer gleich
                Befehl = nnn                         ' was du magst
                Info = 1
    '-------------------------------------------
               Datenbyte = 255                       ' z.b
                Info = 1
               Twi_mt_cntr = 3                       ' Befehl + Info + 1 Byte
               gosub  Run_wait_master       
    '-------------------------------------------
               Datenword = 32768                       ' z.b
                Info = 2
               Twi_mt_cntr = 4                       ' Befehl + Info + word 
               gosub  Run_wait_master       
    '-------------------------------------------
               Datenlong = 41000000                       ' z.b
                Info = 3
               Twi_mt_cntr = 6                       ' Befehl + Info + long
               gosub  Run_wait_master       
    '-------------------------------------------
               Datensingle = 3.14                        ' z.b
                Info = 4
               Twi_mt_cntr = 6                       ' Befehl + Info + single
               gosub  Run_wait_master       
    '-------------------------------------------
               Datendouble = 3.1487967499      ' z.b
                Info = 5
               Twi_mt_cntr = 10                       ' Befehl + Info + double
               gosub  Run_wait_master
    Dabei ist WORD und INTEGER ggf. natürlich das Gleiche

    Beim Slave das Gegenstück
    Code:
        twi_sr_data = VARPTR(Befehl) 
    ---etc-etc---- 
         If Twi_slv_flag = &H60 Then 
             select case Info 
             case   1:   print Datenbyte
             case   2:   print Datenword
             case   3:   print Datenlong
             case   4:   print Datensingle
             case   5:   print Datendouble
    Bei Dir könnte der Empfänger den Datentype eigentlich auch aus der Länge der Message entnehmen, die gibt ja weitgehend Aufschluss, was es ist
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Hallo Robert,

    nun habe ich mir eine weiter Platine mit einer TWI Funktion gebaut und habe versucht diese beiden mit unterschiedlicher Adresse anzusprechen. Leider meldet sich nur einer auf einen Befehl.
    Ich seh langsam nicht mehr durch....
    Wie erkennt der Controller das die Information für ihn bestimmt ist? Ausgehend ddavon ist doch so, dass alle Controller am bus mithören und wenn ihre Adresse kommt auch er dann antwortet.
    Nun ich sehe in dem Code aber nicht die Funktion, nur die Case &H60 Funktion. Dem nach würde ich darauf schließen das alle Controller oder der erste an dem die Info geschickt wird dem Master zurückschickt, dass sie eine Info bekommen haben, auch wenn sie nicht für sich bestimmt war? Oder schickt nur der jenige ein Ack zu dem die Adresse gehört?
    Vom Code her hatte ich zwei Slave mit der gleichen Software beschrieben (siehe oben) nur mit unterschiedlichen Adressen, dabei konnte ich aber nur einen Controller ansprechen...

    Kannst Du dies einwenig näher beschreiben oder was mache ich falsch?

    Danke und Gruß MAT

  5. #15
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Die Adress-Erkennung und das ACK, wenn es passt, macht schon die TWI-Hardware
    nur der kriegt twi-slv-flag &H60. diese Zahl kommt auch von der Hardware und ist eindeutig, da können wir beide nix falsch machen.

    Dein Effekt ist seltsam. Du mußt feststellen, ob das auch oder nur dann auftritt, wenn mehrere angeschlossen sind.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Dann werd ich mich noch einmal hinsetzen müssen und meinen Code überprüfen sowie die Hardware.
    Ist die Variable "Twi_mst_addr" das TWI Register vom Controller? Oder durch welche Variable wird wo in Deinem Programm die TWI Adresse festgelegt?
    Parallel werd ich mir noch mal das Datenblatt zum M8 zur Hand nehmen.

    Werde mich jetzt in den Zug setzen....Die Arbeit ruft

    Schönen Sontag Dir noch!

  7. #17
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    https://www.roboternetz.de/wissen/in...etup_als_Slave
    Das eigentliche Hardware-Adress-Register heisst "TWAR"


    "Twi_mst_addr" ist die Ziel-Adresse, wenn man als Master was wegschickt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Ich habe gelesen das 128 mögliche Slaves adressiert werden kann. Von wo bis wohin, oder besser wie kann ich Adressen für einen Slave vergeben?

  9. #19
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    alle geraden Zahlen von &H02 - &HFE

    Meist muss man aber den anderen Geräten ausweichen, die man sonst noch dranhängen hat.
    Kommt also darauf an, was du alles verwenden willst.

    https://www.roboternetz.de/wissen/in...iger_I2C_Chips
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #20
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Hallo Robert,

    nun sitze ich schon wieder den halben Tag... Inzwischen kann ich beide Slaves ansprechen und sie senden auch. Besser einer schickt seine Info an den Slave, der zweite schickt auch seine Info (lt. RS232 Ausgabe sagt er mir: Master sent: 6C 1F) aber leider kommt immer nur eine 0!?
    Ich habe den identischen Code für die 2 Slaves, woran kann das liegen?

    Slave Nr.2 bei dem es nicht funst:
    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    
    $include "MyTWI.bas"                                        'dafür wird noch die MyTWI.lib benötigt
    
    $baud = 19200
    
    $hwstack = 80
    $swstack = 80
    $framesize = 80
    
    
    
    
    '------------------------------------------------------------------------------- Configuration DS1820
    Config 1wire = Portd.4
    
    Dim Ar1(2) As Byte
    
    Dim Temp1 As Byte
    
    
    
    
    
    '------------------------------------------------------------------------------- Timer0 aktivieren
    
    
    
    '------------------------------------------------------------------------------- lokale I2C Adresse   (als Slave)
    Const Mn1_adr = &H6C
    '------------------------------------------------------------------------------- fremde I2C Adresse   (als Master)
    Const Mn2_adr = &H6A
    
    Dim Twi_mst_buff(24) As Byte                                'Buffer für Masterfunktionen
    Dim Twi_slv_buff(24) As Byte                                'Buffer für Slavefunktionen
    
    
    '------------------------------------------------------------------------------- TWI Variablen
    
    
    Dim Temp As Byte , Temp3 As Byte
    Dim Temp2 As Byte
    
          Twi_slv_addr = Mn1_adr                                'lokale I2C-Adresse
          Twi_sr_data = Varptr(twi_slv_buff(1))                 'datenbuffer empfang
          Twi_st_data = Varptr(twi_slv_buff(1))                 'datenbuffer senden
    
          Twar = Twi_slv_addr + 1                               'I2C Adress Mega32 + GCA
          Config Twi = 100000                                   'I2C Speed
          On Twi Twi_mst_slv_isr , Nosave                       'ISR f. TWI
    
          Gosub Twi_sense                                       'Aktivieren Slave-Funktion
           Enable Timer2                                         'Timer
          Enable Interrupts                                     'Generell
    
    '******************************************************************************* Hauptprogramm
       Do
    
    
    '******************************************************************************* Sensor 1
    
    1wreset                                                     'reset
    1wwrite &HCC                                                ' read internal RAM
    1wwrite &HBE                                                ' read 9 data bytest                            '300                                                  'warten bis convert T fertig ist
    Ar1(1) = 1wread(2)
    1wreset
    
    
    
      Temp1 = Makeint(ar1(1) , Ar1(2))
          Temp1 = Temp1 / 2                                     'Ar(1)
    
      Temp2 = Temp1
    
    
    '******************************************************************************* TWI Betrieb
    'praktisches Beispiel zu Anzeige der Daten, werden im Prog nicht benötigt bis auf die Flagabfrage
    'Twi_slv_flag =
     '   * 0 Keine Slave Aktion hat stattgefunden
     '   * &H60 Daten wurden empfangen. Sie stehen im Buffer mit der Länge Twi_sr_cntr
     '   * &HA8 Daten wurden gesendet. Sie stehen im Buffer mit der Länge Twi_st_cntr
     '   * &H70 Gca -daten Wurden Empfangen.
     If Twi_slv_flag <> 0 Then
     Select Case Twi_slv_flag
             Case &H60 : Print Spc(30) ; "als SLAVE receivd:" ; 'es ist was empfangen worden
                      Print Hex(twi_slv_addr) ; " ";
                      For Temp = 1 To Twi_sr_cntr
                         Print Twi_slv_buff(temp)
                         Temp3 = Twi_slv_buff(temp)             ' Hex(twi_slv_buff(temp));         'print der Daten
                          Print "temp1" ; Temp1
                      Next
             Case &HA8 : Print Spc(30) ; "als SLAVE transmit:" ;       'es ist was abgeholt worden
                      Print Hex(twi_slv_addr) ; " ";
                      For Temp = 1 To Twi_st_cntr
                         Print Twi_slv_buff(temp)               'Hex(twi_slv_buff(temp));         'print der Daten
                      Next
             Case &H70 : Print Spc(30) ; "SLAVE GCA :" ;        'ein General Call ist gekommen
                      Print Hex(twi_slv_addr) ; " ";
                      For Temp = 1 To Twi_sr_cntr
                         Print Hex(twi_slv_buff(temp));         'print der Daten
                      Next
             Case Else:
                      Print Chr(7) ;                            'Irgendein Fehler
    
             End Select
             Print
             Twi_slv_flag = 0                                   'löschen marker
             Twi_slv_stat = 0                                   'löschen marker
             Gosub Twi_sense                                    'alles wieder enablen
                                       'und Bus freigeben
          End If
    
    
    
                        ' Print "DatenM" ; Twi_slv_buff(temp)
                         'Print Spc(30) ; Temp3
    '******************************************************************************* nach Datenempfang als Slave umschalten auf Master und Daten senden
    
    
      If Temp3 = 26 Then
      Print "empfange komando"                                  'ist Masteranforderung 25 dann schicke Temperatur1
            Gosub Master_transmit                               'Senden in einer SUB
                 Temp3 = 0
                 Twi_sr_cntr = 0                                'ja
    '
          End If
    
       1wwrite &HCC : 1wwrite &H44                              ' start measure
       Loop
    End
    
    
    '############################################################################### 1 mS Ticker =>Timerroutine wird in der .Lib benötigt
    
    
    '###############################################################################
    
    
    Run_wait_master:
    Print "versuche zu senden"
          Gosub Mst_start                                       'aufruf
          Select Case Twi_mst_flag                              'ergebnis ?
          Case Twi_m_sent:                                      'gesendet
                   Print "<<<<<<MASTER sent:" ;
                   Print Hex(twi_mst_addr) ; " ";
                   For Temp = 1 To Twi_mt_cntr
                         Print Hex(twi_mst_buff(temp1));
                   Next
                   Print
                   Twi_mst_flag = 0
          Case Twi_m_recv:                                      'geholt
                    Print ">>>>>>MASTER read:" ;
                   Print Hex(twi_mst_addr) ; " ";
                   For Temp = 1 To Twi_mr_cntr
                         Print Twi_mst_buff(temp1);             'Hex(twi_mst_buff(temp));
                   Next
                   Print
                   Twi_mst_flag = 0
          Case Else:                                            'irgendein Problem
                    Print Chr(7) ; Hex(twi_mst_addr) ; " ";
    
          End Select
       Return
    
    '############################################################################### Sendesub
    '   Beispiel 8 byte senden,
    '     dann mit Rep.Start von gleicher adresse 3 Byte empfangen
    'Nur senden
    
       'Twi_mst_addr = Mn2_adr                                   'I2C adresse ZIEL
       'Twi_mt_cntr = 8                                          '  8 Byte senden
       'Twi_mt_data = Varptr(twi_mst_buff(1))                    ' Daten
       'Twi_mr_cntr = 0
    'Nur abholen
    
       'Twi_mst_addr = Mn2_adr + 1                               'I2C adresse ZIEL (+R)
       'Twi_mr_cntr = nn                                         ' wieviele Byte
       'Twi_mr_data = Varptr(twi_mst_buff(1))                    ' empfangsbuffer
    
    
    
    Master_transmit:
    ' sende buffer (mit testdaten) füllen
     'For Temp = 1 To 1
       Twi_mst_buff(temp1) = Temp1                              'Temperatur Sensor1
     ' Next
    
       Twi_mst_addr = Mn2_adr                                   'I2C adresse
       Twi_mt_cntr = 1                                          '8                                          ' erstmal 8 Byte senden
       Twi_mt_data = Varptr(twi_mst_buff(1))                    ' adresse Daten
       Twi_mr_cntr = 0
    
       'Twi_mr_cntr = 1                                          ' dann 3 Byte empfangen
       'Twi_mr_data = Varptr(twi_mst_buff(1))                    ' empfangsbuffer
    
       Gosub Run_wait_master                                    ' auf gehts
    
       Return
    und Slave1:
    Code:
    $regfile = "m8def.dat"
    $crystal = 14318181
    
    $include "MyTWI.bas"                                        'dafür wird noch die MyTWI.lib benötigt
    
    $baud = 9600
    
    $hwstack = 80
    $swstack = 80
    $framesize = 80
    
    
    
    
    '-----------------2x20 LCD Display an Port c =>Conector -------------------------------------------------------------------------------------------------
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portb.2 , Rs = Portb.0       ' Pinbelegung "LCD-Port)"
    '                SV2          1                2               3              4              6              8           ' Pinbelegung SV9 Board
    
    
    Config Lcd = 20 * 4
    Config Lcdbus = 4
    Initlcd
    Cursor Off
    Cls
    '------------------------------------------------------------------------------- Configuration DS1820
    Config 1wire = Portb.1
    Dim Id1(8) As Byte
    Dim Id2(8) As Byte
    Dim Ar1(2) As Byte
    Dim Ar2(2) As Byte
    Dim Temp1 As Byte
    Dim Temp2 As Byte
    
    
    Id1(1) = 1wsearchfirst()
    Id2(1) = 1wsearchnext()
    '------------------------------------------------------------------------------- Timer0 aktivieren
    
    
    
    '------------------------------------------------------------------------------- lokale I2C Adresse   (als Slave)
    Const Mn1_adr = &H6E
    '------------------------------------------------------------------------------- fremde I2C Adresse   (als Master)
    Const Mn2_adr = &H6A
    
    Dim Twi_mst_buff(24) As Byte                                'Buffer für Masterfunktionen
    Dim Twi_slv_buff(24) As Byte                                'Buffer für Slavefunktionen
    
    
    '------------------------------------------------------------------------------- TWI Variablen
    
    
    Dim Temp As Byte , Temp3 As Byte
    
    
          Twi_slv_addr = Mn1_adr                                'lokale I2C-Adresse
          Twi_sr_data = Varptr(twi_slv_buff(1))                 'datenbuffer empfang
          Twi_st_data = Varptr(twi_slv_buff(1))                 'datenbuffer senden
    
          Twar = Twi_slv_addr + 1                               'I2C Adress Mega32 + GCA
          Config Twi = 400000                                   'I2C Speed
          On Twi Twi_mst_slv_isr , Nosave                       'ISR f. TWI
    
          Gosub Twi_sense                                       'Aktivieren Slave-Funktion
           Enable Timer2                                         'Timer
          Enable Interrupts                                     'Generell
    
    '******************************************************************************* Hauptprogramm
       Do
    
    
    '******************************************************************************* Sensor 1
    
    1wreset                                                     'reset
    1wwrite &H55                                                'Match Rom command
    1wwrite Id1(1) , 8                                          'Id von Sensor 1
    1wwrite &H44                                                'Convert T
                                                      '300                                                  'warten bis convert T fertig ist
    1wreset                                                     'reset
    1wwrite &H55                                                'match rom command
    1wwrite Id1(1) , 8                                          'id von sensor 1
    1wwrite &HBE
    
    Locate 1 , 14
     Ar1(1) = 1wread(2)
      Temp1 = Makeint(ar1(1) , Ar1(2))
          Temp1 = Temp1 / 2                                     'Ar(1)
      Lcd "Out1:" ; Temp1
    
    
    '******************************************************************************* Sensor2
    
    1wreset                                                     'reset
    1wwrite &H55                                                'Match Rom command
    1wwrite Id2(1) , 8                                          'Id von Sensor 2
    1wwrite &H44                                                'Convert T
                                                      ' 300                                                  'warten bis convert T fertig ist
    1wreset                                                     'reset
    1wwrite &H55                                                'match rom command
    1wwrite Id2(1) , 8                                          'id von sensor 2
    1wwrite &HBE                                                'scratchpad lesen
    
    
    Locate 2 , 14
     Ar2(1) = 1wread(2)
      Temp2 = Makeint(ar2(1) , Ar2(2))
          Temp2 = Temp2 / 2
      Lcd "Out2:" ; Temp2
    '******************************************************************************* TWI Betrieb
    'praktisches Beispiel zu Anzeige der Daten, werden im Prog nicht benötigt bis auf die Flagabfrage
    'Twi_slv_flag =
     '   * 0 Keine Slave Aktion hat stattgefunden
     '   * &H60 Daten wurden empfangen. Sie stehen im Buffer mit der Länge Twi_sr_cntr
     '   * &HA8 Daten wurden gesendet. Sie stehen im Buffer mit der Länge Twi_st_cntr
     '   * &H70 Gca -daten Wurden Empfangen.
    
    If Twi_slv_flag <> 0 Then                                   'ständige Abfrage ob als Slave Daten anliegen  =>Vorsicht, der Bus ist solange blockiert
    
             Select Case Twi_slv_flag
             Case &H60 :
                      Locate 1 , 1
                      Lcd ; "SLVrecv" ;                         'es ist was empfangen worden
                      Locate 1 , 9
                      Lcd Hex(twi_slv_addr) ; " ";              'von Adresse in Hex
                      For Temp = 1 To Twi_sr_cntr               'Daten aus Twi_sr_cntr in den puffer schreiben
                         Locate 1 , 11
                         Lcd Hex(twi_slv_buff(temp));           'print der Daten
                         Temp3 = Twi_slv_buff(temp)
                      Next
             Case &HA8 :
                      Locate 2 , 1
                      Lcd ; "SLVtran" ;                         'es ist was abgeholt worden  Spc(30)
                      Locate 2 , 9
                      Lcd Hex(twi_slv_addr) ; " ";
                      For Temp = 1 To Twi_st_cntr
                      Locate 2 , 11
                         Lcd Twi_slv_buff(temp);                'print der Daten Hex(twi_slv_buff(temp));
                      Next
    
    
    
             End Select
             Locate 4 , 1
             Lcd Twi_mst_flag
             Print
             Twi_slv_flag = 0                                   'löschen marker
             Twi_slv_stat = 0                                   'löschen marker
             Gosub Twi_sense                                    'alles wieder enablen
                                       'und Bus freigeben
          End If
    
    
                Locate 4 , 6
                         Lcd "DatenM" ; Twi_slv_buff(temp)
    
    '******************************************************************************* nach Datenempfang als Slave umschalten auf Master und Daten senden
     Locate 4 , 19
     Lcd Temp3
      If Temp3 = 25 Then                                        'ist Masteranforderung 25 dann schicke Temperatur1
            Gosub Master_transmit                               'Senden in einer SUB
                 Temp3 = 0
                 Twi_sr_cntr = 0                                'ja
    '
          End If
       Loop
    End
    
    
    '############################################################################### 1 mS Ticker =>Timerroutine wird in der .Lib benötigt
    
    
    '###############################################################################
    
    
    Run_wait_master:
          Gosub Mst_start                                       'aufruf
    '( Select Case Twi_mst_flag                              'ergebnis ?
          Case Twi_m_sent:
                   Locate 3 , 1                                 'gesendet
                   Lcd "<<MASTsent:" ; Hex(twi_mst_addr) ; " ";
                   Print
                   For Temp = 1 To Twi_mt_cntr
                   Locate 3 , 14
                         Lcd Twi_mst_buff(temp);
                   Next
                   Print
                   Twi_mst_flag = 0
    
         Case Twi_m_recv:
                   Locate 4 , 1                                 'geholt
                    Lcd ">>MASTread:" ; Hex(twi_mst_addr) ; " ";
                   Print
                   For Temp = 1 To Twi_mr_cntr
                   Locate 4 , 14
                    Lcd Twi_mst_buff(temp);                     'Hex(twi_mst_buff(temp))
                   Next
                   Print
                   Twi_mst_flag = 0
          'Case Else:                                            'irgendein Problem
                    'Print Chr(7) ; Hex(twi_mst_addr) ; " ";
                    'Call Twi_show_state(twi_mst_flag)
          End Select
    ')
       Return
    
    '############################################################################### Sendesub
    '   Beispiel 8 byte senden,
    '     dann mit Rep.Start von gleicher adresse 3 Byte empfangen
    'Nur senden
    
       'Twi_mst_addr = Mn2_adr                                   'I2C adresse ZIEL
       'Twi_mt_cntr = 8                                          '  8 Byte senden
       'Twi_mt_data = Varptr(twi_mst_buff(1))                    ' Daten
       'Twi_mr_cntr = 0
    'Nur abholen
    
       'Twi_mst_addr = Mn2_adr + 1                               'I2C adresse ZIEL (+R)
       'Twi_mr_cntr = nn                                         ' wieviele Byte
       'Twi_mr_data = Varptr(twi_mst_buff(1))                    ' empfangsbuffer
    
    
    
    Master_transmit:
    ' sende buffer (mit testdaten) füllen
       For Temp = 1 To 1
       Twi_mst_buff(temp1) = Temp1                              'Temperatur Sensor1
      Next
    
       Twi_mst_addr = Mn2_adr                                   'I2C adresse
       Twi_mt_cntr = 1                                          '8                                          ' erstmal 8 Byte senden
       Twi_mt_data = Varptr(twi_mst_buff(1))                    ' adresse Daten
       Twi_mr_cntr = 0
    
       'Twi_mr_cntr = 1                                          ' dann 3 Byte empfangen
       'Twi_mr_data = Varptr(twi_mst_buff(1))                    ' empfangsbuffer
    
       Gosub Run_wait_master                                    ' auf gehts
    
       Return

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test