Zeroeightfifteen
06.01.2006, 16:32
Hallo
ich habe mir die I2Cslave Library in den Libraryordner kopiert. Doch wenn ich auf Compilieren drücke zeigt er mir den fehler 324 an. "Error : 324 Line : 5 Chip not supported by I2C slave library"
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config i2cslave = &H40 und bei diesem hier auch.
$regfile = "m32def.dat" ' Benutzter Chip
$crystal = 16000000 ' Quarz Frequenz
$baud = 9600 ' Baud rate
Cls
Cursor Off
Waitms 100
'-------------------------------------------------------------------------------
Config Twislave = &H40
Config Adc = Single , Prescaler = Auto
Dim Command As Byte
Dim Byte_nr As Byte
Dim Channel As Byte
Dim Misc As Byte
Dim Merker As Bit
Dim Value As Word At &H110
Dim Value_low As Byte At &H110 Overlay
Dim Value_high As Byte At &H111 Overlay
Reset Merker
Enable Interrupts
'-------------------------------------------------------------------------------
'Hauptprogramm (in diesem Fall einfach eine leere Schleife).
'Selbstverständlich können hier auch weitere Operationen ausgeführt werden,
'man sollte aber beachten, daß bei häufigem Zugriff des Masters nicht viel
'Zeit für die Abarbeitung der Hauptprogrammschleife bleibt.
Do
nop
Loop
End
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Die folgenden Labels werden von der Library aufgerufen:
Twi_stop_rstart_received:
'Print "Master hat ein Stop oder repeatet Start gesendet"
Return
'-------------------------------------------------------------------------------
Twi_addressed_goread:
'Print "Wir wurden adressiert und der Master wird Daten senden"
Return
'-------------------------------------------------------------------------------
'Dieses Label wird aufgerufen wenn der Master Daten sendet und der Slave das
'gesendete Byte in der Variable TWI vorhält.
Twi_gotdata:
If Merker = 0 Then 'Der "Merker" entscheidet darüber,
Command = Twi 'ob das empfangene Byte als
Set Merker 'Kommando oder "Universalbyte"
Else 'interpretiert wird.
Misc = Twi
Reset Merker
Locate 2 , 1 'spasseshalber wird hier das
Lcd Misc ; " " 'empfangene Universalbyte auf
End If 'dem LCD ausgegeben.
'Print "received : " ; Twi
Return
'-------------------------------------------------------------------------------
'Dieses Label wird aufgerufen, wenn der Master Daten empfangen will und ein
'Byte braucht. Twi ist die Variable, die gesendet wird.
'
'Die Variable twi_btr ist eine Byte Variable die den Index des benötigten Bytes
'enthält. Im Falle des Sendens mehrerer Bytes eines Arrays kann kann twi_btr
'entsprechend als Index genutzt werden.
Twi_master_needs_byte: 'Der Master braucht ein Byte.
Locate 1 , 1
Lcd "Slave - Modus" 'Nur zur Verdeutlichung.
Channel = Command And &H0F 'Hier wird entschieden, welcher ADC
If Channel = 0 Then Value = Getadc(0) 'Kanal gelesen werden soll. Das
If Channel = 1 Then Value = Getadc(1) 'niederwertige Nibble des Kommando-
If Channel = 2 Then Value = Getadc(2) 'byte enthält diese Information -
If Channel = 3 Then Value = Getadc(3) 'also von 0 bis 3.
'Da wir zwei Byte brauchen, wird im höherwetigen Nibble des Kommandobyte
'festgelegt, ob Low- oder Highbyte des Wandlungsergebnisses an den Master
'übertragen werden.
Byte_nr = Command And &HF0
If Byte_nr = &H10 Then Twi = Value_low
If Byte_nr = &H20 Then Twi = Value_high
Return
'-------------------------------------------------------------------------------
'Wenn der Master alle Bytes empfangen hat, wird dieses Label aufgerufen.
Twi_master_need_nomore_byte:
'Print "Der Master braucht keine Bytes mehr"
Return
an was liegt das? muss ich in Bascom noch etwas einstellen?
ich habe mir die I2Cslave Library in den Libraryordner kopiert. Doch wenn ich auf Compilieren drücke zeigt er mir den fehler 324 an. "Error : 324 Line : 5 Chip not supported by I2C slave library"
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config i2cslave = &H40 und bei diesem hier auch.
$regfile = "m32def.dat" ' Benutzter Chip
$crystal = 16000000 ' Quarz Frequenz
$baud = 9600 ' Baud rate
Cls
Cursor Off
Waitms 100
'-------------------------------------------------------------------------------
Config Twislave = &H40
Config Adc = Single , Prescaler = Auto
Dim Command As Byte
Dim Byte_nr As Byte
Dim Channel As Byte
Dim Misc As Byte
Dim Merker As Bit
Dim Value As Word At &H110
Dim Value_low As Byte At &H110 Overlay
Dim Value_high As Byte At &H111 Overlay
Reset Merker
Enable Interrupts
'-------------------------------------------------------------------------------
'Hauptprogramm (in diesem Fall einfach eine leere Schleife).
'Selbstverständlich können hier auch weitere Operationen ausgeführt werden,
'man sollte aber beachten, daß bei häufigem Zugriff des Masters nicht viel
'Zeit für die Abarbeitung der Hauptprogrammschleife bleibt.
Do
nop
Loop
End
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Die folgenden Labels werden von der Library aufgerufen:
Twi_stop_rstart_received:
'Print "Master hat ein Stop oder repeatet Start gesendet"
Return
'-------------------------------------------------------------------------------
Twi_addressed_goread:
'Print "Wir wurden adressiert und der Master wird Daten senden"
Return
'-------------------------------------------------------------------------------
'Dieses Label wird aufgerufen wenn der Master Daten sendet und der Slave das
'gesendete Byte in der Variable TWI vorhält.
Twi_gotdata:
If Merker = 0 Then 'Der "Merker" entscheidet darüber,
Command = Twi 'ob das empfangene Byte als
Set Merker 'Kommando oder "Universalbyte"
Else 'interpretiert wird.
Misc = Twi
Reset Merker
Locate 2 , 1 'spasseshalber wird hier das
Lcd Misc ; " " 'empfangene Universalbyte auf
End If 'dem LCD ausgegeben.
'Print "received : " ; Twi
Return
'-------------------------------------------------------------------------------
'Dieses Label wird aufgerufen, wenn der Master Daten empfangen will und ein
'Byte braucht. Twi ist die Variable, die gesendet wird.
'
'Die Variable twi_btr ist eine Byte Variable die den Index des benötigten Bytes
'enthält. Im Falle des Sendens mehrerer Bytes eines Arrays kann kann twi_btr
'entsprechend als Index genutzt werden.
Twi_master_needs_byte: 'Der Master braucht ein Byte.
Locate 1 , 1
Lcd "Slave - Modus" 'Nur zur Verdeutlichung.
Channel = Command And &H0F 'Hier wird entschieden, welcher ADC
If Channel = 0 Then Value = Getadc(0) 'Kanal gelesen werden soll. Das
If Channel = 1 Then Value = Getadc(1) 'niederwertige Nibble des Kommando-
If Channel = 2 Then Value = Getadc(2) 'byte enthält diese Information -
If Channel = 3 Then Value = Getadc(3) 'also von 0 bis 3.
'Da wir zwei Byte brauchen, wird im höherwetigen Nibble des Kommandobyte
'festgelegt, ob Low- oder Highbyte des Wandlungsergebnisses an den Master
'übertragen werden.
Byte_nr = Command And &HF0
If Byte_nr = &H10 Then Twi = Value_low
If Byte_nr = &H20 Then Twi = Value_high
Return
'-------------------------------------------------------------------------------
'Wenn der Master alle Bytes empfangen hat, wird dieses Label aufgerufen.
Twi_master_need_nomore_byte:
'Print "Der Master braucht keine Bytes mehr"
Return
an was liegt das? muss ich in Bascom noch etwas einstellen?