PIC32MK HW I2C zahada v rychlosti cteni

Jan Waclawek konfera na efton.sk
Sobota Leden 21 20:41:36 CET 2023


[preposielam]

Dobry den,

trochu som hladal a na odkaze z datasheeetu MCU som sa dopracoval ku
Reference Manual, kapitola I2C. V nej je popisany cely HW I2C modul. Je tam
kapitola 24.5.3 Receiving Data from a Slave Device a v nej je napisane co
vlastne robi ten RCEN bit. V ramiku je poznamka ako treba nastavit
RCEN bit, musia byt vynulovane este dalsie bity, takze sa neda pouzit asm
instrukcia natavenia bitu, ako to asi vygeneruje kompilator z toho C
prikazu, ale treba zapisat cely byte, aby boli sucasne vynulovane aj tie
dalsie bity. Potom je tam napisane, ze po skonceni prijmu 8 bitov sa
vyvola prerusenie od master I2C modulu. Takze pokial mate ICD4, tak treba
traceovat a debugovat celu rutinu I2C z tej kniznice, ktora generuje tych
50ms vratane interruptov. Je mozne, ze ju bude treba prepisat a upravit.
(Myslim si, ze prepis tej rutiny je najpravdepodobnejsie riesenie Vasho
problemu. Zo vseobecnej skusenosti s dodavanym free sw viem, ze nie je
napisany "dokonale", ale je implementovana iba nejaka zakladna funkcia s
"neosetrenymi chybami".)

To Vase riesenie sw-master s podporou HW, je tiez dobre. A asi by som pri
nom ostal. Inak ten I2C modul vyzera byt scasti kompatibilny s modulom v
8-bitovych mcu, kde sa ten sw-master driver musi cely napisat. Viem, ze ten
modul ma nejake chyby, ale k nim som uz nic nenasiel. Mozno to bude
napisane pri starej 16F877.

To je asi vsetko, co Vam viem z datasheetov poradit.

A.



Další informace o konferenci Hw-list