PIC18F4520 a PORT D - použítí jako běžný I/O port

Dobrý večer,

mám nejasnost ohledně činnosti PORTu D u PIC18F4520.

Chtěl jsem jej použít jako běžný I/O port ve funkci výstupu.
Do registru LATCHD je možno zapsat bez problémů, ale na výstupních pinech se mi již zapsaná data neobjeví.
PORTD je možno použít i jako paralelní SLAVE port. Dle datasheetu má mít TRISD registr, ale v blokovém schématu na str. 120 tyto registry nejsou zakresleny. Místo toho jsou tam signálové cesty, vedoucí do výstupního hradla od pinů RD, CS a WR PORTu E.
Podle tohoto schématu se zdá, že je to jediný způsob, jak výstupní hradlo otevřít. Jakou funkci by tedy měl registr TRISD?
Zkoušel jsem i manipulovat s bitem PSPMODE (TRISE 4), ale bez výsledku.

Když se přepnu z režimu ICD-2 do simulačního režimu, data se na výstup portu D dostanou (dle náhledu v okně Watch).

Na PORTD nemám prozatím nic připojeno, není tedy ničím zatížen.

Inicializaci mám nastavenou takto:

    MOVLW 0x0F	;A/D = OFF
MOVWF	ADCON1
MOVLW	0x07	;komparátory = OFF
MOVWF	CMCON
MOVLW	b'11101111'	;RA0-3 = IN
MOVWF	TRISA
MOVLW	b'11111111'	;PORTB = IN
MOVWF	TRISB
MOVLW	b'11111111'	;PORTC = IN
MOVWF	TRISC
MOVLW	0x00			;PORTD = OUT
MOVWF	TRISD
MOVLW	b'11100111'	;PORTE = IN
MOVWF	TRISE

Nevíte, prosím, v čem by mohl být problém?

V příloze přikládám datasheet.

Děkuji,

Vl.

:arrow_right: administrator: přejmenováno z “PIC18F4520 a PORT D”
PIC18F4520.pdf (6.2 MB)

Už mi to nějak funguje, ale příliš moudrý z toho nejsem …

Při krokování v režimu ICD-2 těmito příkazy:

MOVLW 0x07
MOVWF PORTD
RETURN

se data (0x07) na portu D objeví až v okamžiku provedení instrukce RETURN.

Divné …

Vl.

Mám na portu D připojen LCD a funguje normálně, nic speciálního jsem nenastavoval,
jen trisd = 0.

Mně to začalo fungovat, až když jsem vynuloval bit PSPMODE :slight_smile:.

Vl.