Noch keiner Erfahrung?
Hi Leute,
hab heute mal die Soft TWI mit Bascom aus Wiki getestet.
Großes Lob an die Macher! Läuft super!
Jedoch stelle ich mir die Frage wie ich es lösen kann den
Kompass CMPS03 mit einzubinden.
Leider funktioniert die Bascom I2C ansteuerung dann ja nicht mehr.
Der obige Code stellt den Slave-Read dar...Code:' TWI-slave test ' zum simulieren eines PCF8574 $regfile = "m32def.dat" ' the used chip $crystal = 16000000 ' frequency used $baud = 9600 ' keine baud rate angeben ! 'LCD-Display Config '================== Config Lcdpin = Pin , Rs = Portc.3 , E = Portc.2 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Config Lcd = 16 * 4 Initlcd Cursor Off Cls Dim Twi_control As Byte ' Controlregister lokale kopie Dim Twi_status As Byte Dim Twi_data As Byte Dim Neuesbyte As Byte ' Bytemerker Dim Byte_counter As Byte Dim Test As Byte Declare Sub Twi_init_slave Twi_data = 0 Call Twi_init_slave ' TWI aktivieren ' Hauptschleife Do ' hier könnte ihr Code stehen Locate 1 , 1 Lcd "TWI-SLAVE-RX" '--------------------------------- '--------------------------------- 'Merker zurücksetzen Neuesbyte = 0 'schauen ob TWINT gesetzt ist Twi_control = Twcr And &H80 ' Bit7 von Controlregister If Twi_control = &H80 Then Twi_status = Twsr And &HF8 ' Status 'wurde ein Byte geschickt If Twi_status = &H80 Or Twi_status = &H88 Then Twi_data = Twdr ' neue Daten merken Neuesbyte = 1 ' merken das ein neues Byte da ist End If 'TWINT muss immer gelöscht werden, damit es auf dem Bus weiter geht Twcr = &B11000100 ' TWINT löschen, erzeugt ACK End If 'wenn ein neues Byte gekommen ist, dieses an PortD ausgeben If Neuesbyte <> 0 Then Locate 2 , 1 ' Daten auf LCD ausgeben Lcd "Data: " ;Twi_data ; " " End If Loop End '=============================================================================== ' Unterprogramme ' TWI als slave aktivieren Sub Twi_init_slave Twsr = 0 ' status und Prescaler auf 0 Twdr = &HFF ' default Twar = &H22 ' Slaveadresse setzen Twcr = &B01000100 ' TWI aktivieren, ACK einschalten End Sub
Wie kann ich nun noch den Kompass auslesen ?
Bye Ulli
Noch keiner Erfahrung?
Die Problematik ist die,
ich will vom Master einen Wert den Slave per I²C übergeben.
Leider braucht der Slave in seinen Programm den Kompass
Wie kann ich den Kompass vom Slave aus auslesen?
Die Soft TWI funktioniert 1A!
Bye Ulli
Naja, da muß der Slave kurz mal Master spielen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hi,
hast du mal nen Beispielcode?
Ich hab bissl rumgebastelt brings aber nicht hin...
Es ist auch mit Interrupts (wie ich es mache) einfacher als so.
Für den von dir genannten Funktionsumfang kann ich dir eine Library für Bascom anbieten, wenn du 2-3 Tage Geduld hast. (Ich muß das vom anderen PC rüberkopieren und zusammenzippen, leider wegen Urlaubs-ende aber etwas Streß)
Hilft das ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hi,
ja kein Problem würd mich freuen wenn du mich nicht vergisst
Spiel da jetzt noch bissl rum und sollt ich zu einen Ergebiss kommen Post ich das hier mal...
Danke schon mal im voraus!
Hallo,
wenn man unter Bascom einen I2C-Master bauen will, ist es einfacher man nimmt die funktionen, die Bascom schon dabei hat. (In der Hilfe mal nach I2C suchen)
Wenn man diese Hardware-twi-lib einbindet (mit $lib "i2c_twi.lbx"), wird auch das eingebaute TWI verwendet.
Man kann aber auch die anderen Beispiele (vom Wiki) von TWI-Master verwenden, ist dann aber für den Anfang etwas komplizierter.
Dann noch was, Du schreibst immer Soft-TWI, das ist aber genau andersrum, es ist Hardware-TWI, weil das im AVR eingabaute TWI (I2C) verwendet wird, deshalb ist es auch relativ einfach.
Hi,
ja ich schreibe Soft TWI wegen der in Wiki angegeben Soft TWI siehe Code oben. Ich benötige den einen MEGA32 als Slave aber diese muss zudem nich den Kompass auslesen.
Das heißt er muss vom Master ein Byte empfangen und selber muss der Slave noch den Kompass am gleichen Bus auslesen.
However, ich stell' da mal eine Zip rein, schau, ob du zurechtkommst
m32slave.bas 'demo/testprogramm
twi_show_state.bas 'Twi-Status printen
mytwi.bas 'includefile für die library
mytwi.lib 'Bascom library gehört ins Bascom LIB directory
Das Demo definiert sich als Slave und sendet oder empfängt was.
Jede Sekunde sendet er selbst als Master was weg und holt dann gleich auch daten von dort
Der Hauptschleifen-Aufbau muß schon so ausschauen wie in der Demo, du findest aber leicht die Plätze, wo du was einbauen kannst.
Das "show-state" braucht viel Platz (wegen der Texte), das kannst du aber auch auslassen und überspringen
Schau dir's mal an. Wenn was nicht klar ist, gib' Laut
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen