Jojo12
27.10.2008, 15:59
Hallo,
ich versuch zwischen zwei Pics (beide Pic16F627A, 4Mhz) ein I2C-Bus per Software zu programmieren. Als Vorbild hab ich mir den Code von Microchip genommen. Leider stecken in dem Code einige Fehler drin. :-k Das ist aber nicht das Problem. Ich versuch nun erstmal ein Startbit zu realisieren, das klappt auch schon gut - solange ich den Display nicht an dem einem Pic dranhängen habe. Ist er dran, hängt der Pic sich an diesem Code auf:
bsf STATUS,RP0
bcf _SDA ;_SDA = TRISB,0
bcf STATUS,RP0
Ich hab mal ein bisschen herumprobiert und wenn man das ganze so schreibt klappt das wieder auch mit dem Display an dem Pic dran. Leider ist das für mich nutzlos, weil das zu lange dauert:
bsf STATUS,RP0
bcf _SCL ;_SCL = TRISB,3
bcf _SDA ;_SDA = TRISB,0
bcf STATUS,RP0
call Delay47uSec
bsf STATUS,RP0
bsf _SCL
bcf _SDA
bcf STATUS,RP0
Woran kann das liegen? Es hat auf jeden Fall etwas mit dem Display zu tun. Im Anhang ist der Schaltplan, der obere Pic ist der Master, der untere der Slave.
ich versuch zwischen zwei Pics (beide Pic16F627A, 4Mhz) ein I2C-Bus per Software zu programmieren. Als Vorbild hab ich mir den Code von Microchip genommen. Leider stecken in dem Code einige Fehler drin. :-k Das ist aber nicht das Problem. Ich versuch nun erstmal ein Startbit zu realisieren, das klappt auch schon gut - solange ich den Display nicht an dem einem Pic dranhängen habe. Ist er dran, hängt der Pic sich an diesem Code auf:
bsf STATUS,RP0
bcf _SDA ;_SDA = TRISB,0
bcf STATUS,RP0
Ich hab mal ein bisschen herumprobiert und wenn man das ganze so schreibt klappt das wieder auch mit dem Display an dem Pic dran. Leider ist das für mich nutzlos, weil das zu lange dauert:
bsf STATUS,RP0
bcf _SCL ;_SCL = TRISB,3
bcf _SDA ;_SDA = TRISB,0
bcf STATUS,RP0
call Delay47uSec
bsf STATUS,RP0
bsf _SCL
bcf _SDA
bcf STATUS,RP0
Woran kann das liegen? Es hat auf jeden Fall etwas mit dem Display zu tun. Im Anhang ist der Schaltplan, der obere Pic ist der Master, der untere der Slave.