Spartan-3E a PIC16f887

2

Soy un principiante que quiere saber cómo conectar la placa espartana 3e con el pickit2-PIC16F887. Hasta ahora he conectado j2- pin a6 (espartano) para portar un Pin1 en el PIC, los Pin de tierra y j2 pin e7 al puerto de salida RD 1 en el PIC. Estoy tratando de configurar un código que haga funcionar un elevador y también tengo problemas para colocar las resistencias de pull-up para los pulsadores en la placa espartana, parecen ser muy sensibles. Cualquier consejo sería genial o si conoces algunos tutoriales que involucren la interconexión de los dos tableros. Gracias por delante

    
pregunta akohlsmith

1 respuesta

3

Hay una serie de cosas con las que estás luchando. Creo que lo mejor que puedes hacer es dar un paso atrás y definir qué es exactamente lo que quieres hacer antes de empezar a conectar las cosas. Esto es mucho más simple de lo que puede sonar, y tener algo EN PAPEL que puede consultar le ahorrará un sinfín de dolores de cabeza. Simplemente dibuje dos tablas: una para entradas y otra para salidas. Ahora, para cada salida, escriba para qué es la salida y qué debe suceder para que la salida se convierta en '1' o '0'. Para las entradas, anote para qué sirve cada una y qué significa para el sistema un cambio a '1' o '0'. Desde ese simple documento, puede comenzar a descubrir qué pines físicos en el FPGA y el microcontrolador son los mejores para usar para cada propósito, y comenzar a construir un esquema.

Ahora ... ¿pulsadores supersensibles? Creo que lo que estás describiendo se conoce como "rebote de contacto": no puedes conectar un interruptor mecánico a un circuito digital de alta velocidad y esperar obtener buenas transiciones de limpieza de encendido y apagado. Los interruptores mecánicos rebotan, y así es como son. Tienes que rebotar ellos.

Puede hacerlo en hardware, en HDL o en software. El lugar donde decida hacerlo depende de usted, y de hecho, para un principiante, probablemente sea un buen ejercicio probar varios métodos para que cada uno tenga una idea de cómo funcionan. El rebote se reduce a ignorar o "absorber" las transiciones extrañas del interruptor hasta que el interruptor deje de rebotar. Una forma realmente sencilla de hacerlo en software es buscar la transición de conmutador que le interesa (1- > 0, 0- > 1 o quizás ambas) y, si se ve una transición, inicialice un contador. Ignore más las transiciones de conmutación hasta que el contador esté listo, luego vuelva a mirar el conmutador y vea cuál es el estado. Si el valor es el mismo, tienes tu nuevo valor. Si no lo es, fue un error y debe ser ignorado. El valor al que inicializa el contador depende de la capacidad de respuesta que necesita y de cuán "ruidosos" son sus interruptores, pero un buen valor de inicio sería 50-100ms.

Software muy simple para el rebote de botones:

/* main loop code, executed regularly */

if(debounce1 == 0) {              /* count is 0, we are looking for button presses */
    if(button1 == 0) {
        debounce1 = DEBOUNCE_COUNT;
    }
} else {                          /* count isn't 0, we are debouncing. */
    --debounce1;
    if(debounce1 == 0 && button1 == 0) {
        do_something_because_of_button1();
    }
}

if(debounce2 == 0) {
    if(button2 == 0) {
        debounce2 = DEBOUNCE_COUNT;
    }
} else {
    --debounce2;
    if(debounce2 == 0 && button2 == 0) {
        do_something_because_of_button2();
    }
}

Por supuesto, aquí DEBOUNCE_COUNT es un valor que representa 50 ms. Si su bucle principal se ejecuta cada 1 ms, este valor sería 50. Ajuste según sea necesario.

Hay formas más elegantes de hacer esto, pero esto es probablemente lo suficientemente bueno para que comiences, y es lo suficientemente sencillo como para entenderlo.

Si el concepto de eliminación de botones es nuevo para usted, pondría lejos el FPGA por ahora y me concentraría solo en la interfaz básica con el PIC durante un tiempo. Una vez que se sienta cómodo con el funcionamiento del PIC y tenga algo de experiencia, guarde el PIC y haga lo mismo con el FPGA. ENTONCES enganchar los dos. Tratar de hacer demasiado pronto te dejará frustrado y odiando los aparatos electrónicos.

    
respondido por el akohlsmith

Lea otras preguntas en las etiquetas