Hallo,
ich versuche den TWI-Code myTWI.lib von PicNick einzusetzten - leider nach einigen Stunden erfolglos.
Im ertsten Schritt soll einfach eine Multimasterumgebung eine Temperatursensor an Adresse 144 (&h90) auslesen.
In der klassischen Bascom-Variante sieht das so aus und funktioniert gut:
bei PicNick's routine geht es bei mir aber nichtCode:I2cstart 'repeated start I2cwbyte Commandbyte 'slave address (read) I2crbyte Hbyte , Ack 'read byte I2crbyte Lbyte , Ack I2cstop
Am Terminal bekomme ich nur die MeldungCode:$regfile = "m8def.dat" $crystal = 8000000 $include "MyTWI.bas" $baud = 38400 $hwstack = 64 $swstack = 64 $framesize = 64 Const Tmr_c_prescale = 64 Const Tmr_c_preload = 131 Const Tmr_c_divis = 250 Declare Sub Twi_show_state(byref State As Byte) '------------------------------------------------- ' fremde I2C Adresse (als Master) '------------------------------------------------- Const Mn2_adr = &H90 '144 Dim Slv_byte As Byte 'sende Byte (irgendwas) Dim Twi_mst_buff(24) As Byte 'Buffer für Masterfunktionen Dim Twi_slv_buff(24) As Byte 'Buffer für Slavefunktionen Waitms 500 Print : Print Print "Multimaster 1.0a" Print Version() Dim Temp As Byte Twi_st_data = Varptr(twi_slv_buff(1)) 'datenbuffer senden Twi_mst_addr = Mn2_adr + 1 'I2C adresse ZIEL (+R) Twi_mr_cntr = 2 ' wieviele Byte Twi_mr_data = Varptr(twi_mst_buff(1)) ' empfangsbuffer Gosub Run_wait_master ' auf gehts Wait 1 Loop End '---------------------------------------- $include "Twi_show_state.bas" '---------------------------------------- Run_wait_master: 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(temp)); 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 Hex(twi_mst_buff(temp)); Next Print Twi_mst_flag = 0 Case Else: 'irgendein Problem 'Print Chr(7) ; Print Hex(twi_mst_addr) ; " "; Call Twi_show_state(twi_mst_flag) End Select Return
91 03 M Timeout
Ich denke dass ich einen kleinen aber entscheidenden Fehler mache - aber welchen??
Danke und Gruß
TiRe







Zitieren

Lesezeichen