Este es mi primera intervención en el un foro y sepan disculpar si no lo ago de forma correcto o cometo errores.
Ase tiempo comencé a jugar con los Arduino y me parecieron interesante no tengo muchos conocimiento de programación y tampoco de electrónica lo que se lo aprendí fue en la Internet y amigos que me fueron enseñando
Estoy precisando ayuda para interpretar un código de una librería que encotre para manejar el ADF4350 pero no funciona correctamente adema preciso modificar un poco para usarla con el ADF4351 tiene muy pocas diferencias
El codigo original GitHub - JQIamo/ADF4350-arduino: Arduino library for interfacing with Analog Devices ADF4350 (and similar) PLL chips.
Una parte no la entiendo la otra descubre y lo comente a mi modo
void ADF4350::setR1(){
unsigned long r1 = (_phase << 15) + // phase value = 1
(2 << 3) + // modulus value = 1
1; // register value
byte r1Ary[] = { lowByte(r1 >> 24), lowByte(r1 >> 16), lowByte(r1 >> 8), lowByte(r1) };
memcpy(&_r1, &r1Ary, sizeof(r1Ary));// copia el contenido de r1Ary en _r1 memcpy(destino ,origen ,lardo) con sizeof() se obtiene el largo
}
Surbyte gracias por tu atención y tiempo
Las diferencias son pocas son unos pocos bit que en vedad no afectan, el código tal cual debería funcionar
Creo que entendí que es lo que hace el código que prepara el registro de configuración
El ejemplo siguiente es con el registro 5 de configuración que es de 32 bit y solo se precisan definir 2 bit de configuración y 3 de control
Lo estándar es que active la salida (LD)en 1 cuando enganche el PLL debería quedar configurado como 01 y los bit de control como 101 que identifica el registro tambien los bit 20,19 deberían quedar en 1
Pero
Esta línea no hace lo que creo que debería hacer
unsigned long r5 = (1 << 22) + (3<<19) + 5;
Rota uno 22 lugares =10000000000000000000000
Rota el 3 19 lugares =110000000000000000000
y 5 =101
La suma quedaría como
10110000000000000000101
Pero no es así
No lo he probado en arduino, pero en simulador me da el resulstado esperado.
¿Qué versión del IDE estás utilizando?
De todas formas prueba a ver si así cambia la cosa:
unsigned long r7 = (1UL<<15) ; // lock detect pin mode = digital lock detect