Nove PIC16 a PIC18 - Porty

Jindrich Fucik FULDA na seznam.cz
Pondělí Červen 24 12:53:11 CEST 2024


Ahoj,

Problém je se čtením.
Tedy pokud máš na daném portu něco, co je citlivé na čtení, tak zápis do PORT* ti provede čtení/modifikace/zápis. Zatímco zápis do LAT* neprovede čtení toho portu, ale jen toho, co se minule zapsalo.

Běžné problémy kdy to vadí jsou:
1) čtení smaže interrupt on change, takže pokud máš na stejném portu IoC, tak si teoreticky můžeš smazat jeho přísnak dřív než se vyhodnotí.
2) při použití open drain - zapsal jsi 1, ale někdo jiný na stejnou linku píše 0, takže se při čtení přečte 0 a zapíše se i do tvého výstupu.

P.S. - na PICech je každá operace čtení/modifikace/zápis, ačkoli se to ne vždy zdá. Třeba u operací typu BSF se tomu člověku nechce věřit.

---------- Původní e-mail ----------
Od: Jan Waclawek <konfera na efton.sk>
Komu: hw-list na list.hw.cz
Datum: 24. 6. 2024 10:28:24
Předmět: Nove PIC16 a PIC18 - Porty

[preposielam]

Dobry den,

zacal som prepisovat firmware teplomeru na novy PIC18 a chcel by som sa
spytat tych dlhsie pouzivajucich tieto nove cipy s rovnakymi periferiami na
to aky je rozdiel ked zapisem do PORTDbits.RD0 =1 a do LATDbits.LD0 =1.
Podla datasheetu by tieto dve operacie mali byt rovnocenne, ale preco su
potom zdvojene? A co je potom vhodnejsie, zapisovat na PORTxbits alebo na
LATxbits? Pytam sa preto, ze si pisem celu inicializaciu sam podla
datasheetu a nie podla MCC-konfiguratora.


Další informace o konferenci Hw-list