No vi nada en esa hoja. Lo lleve a la practica y no me funcionó.
Si te metés en la sección "Static Characteristics", vas a encontrar un cuadro acerca de las características eléctricas de los pines en general donde menciona:
Vih-min=0,7.Vdd
Vil-max=0,3.Vdd
Vhys=0,4.Vdd (está mal en la hoja)
Por lo tanto si Vdd=3,3v:
Vih-min=2,31v
Vil-max=0,99v
Vhys=1,32v
Esto quiere decir que para detectar un nivel como alto, este deberá ser mayor a 2,31v, para detectar un nivel bajo la tensión deberá ser menor a 0,99v.
En el medio hay una banda de tensiones que están fuera de esos límites y como los puerto no tienen un schmitt interno, en esos valores la entrada puede valer cualquier cosa.
En tu caso, como la señal es de 0,2v => no superás esa banda de incertidumbre y por lo tanto es imposible que funcione, incluso tampoco superás la tensión máxima de 0,99v de un nivel bajo. Por otro lado tenés el problema de que al ser una senoidal, tu paso por la zona "prohibida" es lento y puede provocar falsos disparos.
¿Qué haría yo?
1) Amplifico esa señal a niveles más comodos.
2) Armo un schmitt trigger con operacionales o utilizo integrados ya armados para esta función que sean compatibles con los nuevos niveles de tensión que vas a tener.
Tené en cuenta que tal vez necesites agregar un offset (una continua) a esa senoidal.
Mirando el ADC, hay una cosa que no entiendo.
¿para qué sirve configurar el clock?
Entiendo que sirve para que el ADC esté convirtiendo continuamente con una frecuencia debida al clock, pero en las simulaciones no parece que sea así, sino que necesita de un Timer para que cada X segundos convierta (puesto que se ha activado de nuevo con LPC_ADC->ADCR=(1<<ADC_START); en el Timer)
si no es así, cómo es?
Mi propósito es muestrear una señal a 100kHz conectada al ADC, por tanto, el ADC debe estar continuamente convirtiendo a 100kHz y guardando los valores.
Gracias
El clock interno del ADC sirve para fijar la velocidad máxima con la que trabajará el ADC. Por ej. si configurás al ADC en 100kHz, sabés que una conversión te demorará 1/100kHz=10uS, de ese tiempo no podés escapar, siempre que conviertás, como mínimo tardás 10uS entre conversión y conversión.
Entonces tenés dos formas de usarlo:
- Disparo continuo.
- Disparo único.
Disparo continuo, el ADC está a full convirtiendo sin que nadie le diga nada y c/vez que termina con una interrupción deberías leer el dato de conversión. La frecuencia de conversión estará dada por el clock interno del ADC.
En cambio el disparo único sirve para hacer conversiones en forma esporádica, no necesariamente en forma periódica. Pero si se desea hacer en forma periódica se lo puede utilizar en conjunto con un timer, de esta forma (según yo lo veo) vas a tener un mayor control sobre los tiempo.
Si en tu aplicación tenés que muestrear en forma periódica a 100kHz, configuralo en forma continua a esa frecuencia y en la rutina de interrupción almacená el nuevo valor de conversión.