@PicNick
Das hab ich jetzt nicht verstanden, kannst du mir das mal erklären? Danke
@PicNick
Das hab ich jetzt nicht verstanden, kannst du mir das mal erklären? Danke
Ich würde ja gern die Welt verändern..., doch Gott gibt mir den Quellcode nicht!
Es kommt darauf an, welche I2C Peripherie ich habe und welchen Master.
Im Idealfall:
Wenn ich am Master einen Hardware-TWI habe, kann ich ihn ja auch als Slave definieren.
Und dann sendet die Peripherie ganz einfach an den Master, wenn was zu senden ist.
Geht natürlich NICHT bei z.B. den PCF Port-Expandern.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
wenn ich jetzt 2 Mega 32 über I2C verbinde und beide sollen jederzeit Daten senden und empfangen können brauch ich dann einen Master? Brauche ich INT2?
mfg Axi
DIe Mega32 sind die Master. Das Ganze heißt in deinem Fall dann "Multimaster"-System.
extra interrupt brauchst du da nicht.
Du kannst Dir da was runterladen.
http://www.oldformation.at/electronic/download/down.htm
Das Demo-Programm, das da "m32slave.bas" heißt, ist das, was du brauchst:
Master UND Slave
Schau mal rein und frag' dann, wenn du nicht zurechtkommst
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
..ich bin noch am planen der Platine(n) für die Mega32, bis ich zur Software komm dauerts noch. Aber danke, wenn ich soweit bin werde ich sicher noch viele Fragen haben.
mfg Axi
Ok, also nur festhalten: Für Atmega32 etc. mit HW-TWI brauchst du KEINE Int-Leitung vorzusehen.
Ich kenn NUR den PCF-Port-Expander, der theoretisch einen Interrupt auslösen kann, wenn sich beim Input was ändert.
Ich kenn aber keinen, der das verwendet hat.
Oder ???
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
So, ich wollt mich jetzt auch mal am I2C versuchen, bis jetzt leider noch ohne erfolg^^ . Aber vllt könnt ihr mir ja weiterhelfen. Hier mal meine codes:
Master:
Slave:Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Portc = Output Enable Interrupts Enable Int2 On Int2 Int2_isr Int2_isr: I2cstart I2cwbyte 255 Portc = 0 I2cstop Dim A As Byte Dim I As Byte Do ' Hier beginnt die schleife A = 1 'A = 1 (erste LED) For I = 63 To 1 Step -1 'Alles was zwischen For und NEXT steht wird so lange wiederholz bis I = 7 ist Portc = A ' A wird in Portc geladen Waitms 200 A = A + 1 ' A wird Verdoppelt sodass im nächsten durchgang A =2 ist im übernächsten 4 usw.. Next ' Springt wieder zu For! Wenn I = 7 ist gehts im Programm weiter Loop ' Spring wieder zu DO, alles beginnt von vorne, A wird wieder auf 1 gesetzt und durchläuft dann wieder die FOR NEXT schleife 7mal.. End Return
Ziel wäre, dass beim Slave nach der I2C kommunikation mit dem Master PD.7 auf 0 Stellt, was er aber bis jetzt nicht macht.Code:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Dim Val As Byte Config Portd = Output Portd.6 = 1 Portd.7 = 1 Wait 5 Portd.2 = 0 I2crbyte Val If Val = 255 Then Portd.7 = 0 Wait 1 Else Portd.7 = 1 End If
wo liegt der fehler, bzw. was mach ich falsch?
gruss
serge
Lesezeichen