I2C komunikace na 16F84, 16F84 nepřepíná TRISA

Zdravim potřeboval bych poradit, snažim se o rozběhnutí i2c komunikace na 16f84 , ale narazil jsem na problem při zavolani podprogramu i2cstp se mi oba vstupy uzemní a netušim proč :cry:

diky za radu

S pozdravem Martin S

[code]blak
MAIN BTFSS OUT2
GOTO MAIN
call i2csta
GOTO MAIN

BTFSS	OUT3	
GOTO MAIN	
call	i2cstp
GOTO MAIN

;************************************************************
; Podprogram pro START sekvenci
;************************************************************
i2csta bsf STATUS,RP0
bcf SDA
nop
nop
nop
bsf SCL
bcf STATUS,RP0
return
;************************************************************
; Podprogram STOP sekvence
;************************************************************
i2cstp bsf STATUS,RP0
bsf SCL
bcf STATUS,RP0
i2csp1 btfss SCL
goto i2csp1
bsf STATUS,RP0
bsf SDA
bcf STATUS,RP0
return
;************************************************************[/code]

:arrow_right: administrator: přejmenováno z “16f84 nepřepinani trisA”
i2c test.asm (3.55 KB)

Mas tam Pull-upy ? a ten program je asi poupravovanej ze ? vysila to podminku Start dokola podle OUT2 , a jeste spatne , nejdriv Data a pak Hodiny do 0
jinak je tu na foru nekde funkcni rutina od “honza3”

Ta rutina je pro PIC, které mají I2C v sobě.

oo sry to my nedocvaklo :blush: ,nehledal sem to, vym ze sto tady hodnekrat resil …

Maltax:

Oprav si inicializaci TRISA

movlw b'00010111' ; portA4-0, 3*vstupy, 1*vystupy movwf TRISA

jj rutinu jsem nasel [forum.mcontrollers.com/t/16f628a-a-i2c-eeprom-24c08/608/1) diky za tip; odpory mam 4,7K cose tyče kodu je to jenom výřez komplet program ovládá po seriové lince 8 vystupu uz jeto hotové zařízení, ale tet je tam potřeba přidat 6 vstupu tak jsem to chtěl řešit 2 volnými porty s xpanderem PCF 8574ap
muj problem je že už při start a stop sekvenci se nechtěj měnit stavy měřeno pomocí multimetru RA0 a RA1

[code];************************************************************
; Podprogram pro START sekvenci
;SCL vystup, SDA vstup
;******************
i2csta
bcf SDA
bsf STATUS,RP0
bcf SDA
bcf STATUS,RP0
nop
nop
nop
bcf SCL

return [/code]

;************************************************************ ; Podprogram STOP sekvence ;SCL vystup, SDA vstup ;************************************************************ i2cstp bsf SCL nop nop nop bsf SDA bsf STATUS,RP0 bcf SDA bcf STATUS,RP0 return
skus to takle, predpojkladam ze provedes podminku Start ci Stop a pak nasleduje nekonecna smycka (nemenis stav SDA/SCL) a pak to meris multimetrem ?

díky za pomoc, bouhžel mi práce brání se věnovat tomuto projektu jak bych chtěl …

o víkendu se nato pořádně podívám

S pozdravem Martin S

Opět se ukazalo že problem byl mezi klavesnicí a židlí, použil jsem rutinu od Honza3 a vše funguje tímto děkuji :wink:

přikládám funkčni přiklad zapisu a čteni

S pozdravem Martin S
i2c test.asm (5.69 KB)