SEND_DATA(); //envio datos
DELAY_US(110); //ESTO POR QUE NO SE USA INTERRUPCION EXTERNA PERO PRONTO SE UTILIZARA LA CONFIGURACION
//EL SENSOR INFRARROJO ESTA COLOCADO EN PIN_B2 SERIA #INT_EXT2 VOID ISR_EXT2() {}[/code
y en main
ENABLE_INTERRUPTS(INT_EXT2); //HABILITAR INTERUPCION INFRARROJO
EXT_INT_EDGE(2,L_TO_H); //INTERRUPCION EXTERNA
ENABLE_INTERRUPTS(GLOBAL); //HABILITAR TODA INTERRUPCION
la interrupción externa del microcontrolador esta siendo utilizada por la memoria, en este caso los pines B0 (Pin8) y B1 (pin9) de la versión smd, grave error en el diseño
Hola KILLERJC creo que hay una confusión, o yo me he perdido un poco.
¿para que el SPI por hardware? el 74hc595 no funciona por SPI, o es para otra cosa de lo que estas hablando, es alguna memoria o algo?
Mirando el datasheet: Tal ves se podria hacer el con CS tambien para el strobe, ya que este se maneja por flancos y no nivel y al final de lo enviado solo se necesita un pulso ascendente, si el CS se pone a 0 al comienzo del dato enviado y al final se pone a 1 estarias haciendo el strobe, no importa el estado en que quede, ya que lo unico que importa es el flanco.
Y asi hacer TODO con el SPI, solo esperar que se envie todo.
#DEFINE CLOCK PIN_D1 // SHCP RELOJ PIN 11
#DEFINE STROBE PIN_D2 // STCP STROBE PIN12
#DEFINE DS PIN_D3 // DATOS PIN 14la interrupción externa del microcontrolador esta siendo utilizada por la memoria, en este caso los pines B0 (Pin8) y B1 (pin9) de la versión smd, grave error en el diseño
Creo que te estas confundiendo, la idea de obtener el cruce por cero es por 2 cosas:
- es para saber cuando debes empezar a escribir
- Y para obtener el tiempo entre vueltas, ya que nunca es exacto, y con esto podes al menos basarte en la ultima vuelta. ( O en las ultimas 2,4,8 etc ).
Creo que si vas a hacer una linea deberias hacer el codigo pensando ya en dibujar. De nada te serviria hacer el codigo que estas haciendo para una sola linea si luego tenes que cambiar todo el formato del código.
Comenza con un array de valores, pero tal ves algo mas pequeño, en ves de hacerlo de 760 pixels * 3 colores,
yo aqui creo que deberia olvidarse de pintar, y centrarse solo en el paso por cero cuando pase por 0 que encienda y apague los led, esto es para probar el hardware, recuerda que esta trabajando en CCS no hay debug, mas que encender y apagar un led y cosas así, y yo me centraria en que primero funcione el paso por cero, utilizando encender un led o varios en el momento de pasar por el cero. con el simple hecho de saber que eso ya funciona,lo que viene siendo un debug chapucero, si se mete en hacer un código pensando ya en dibujar como se equivoque le va a costar encontrar el fallo, por ese motivo, es CCS
te comento, he encontrado el código de mi pov esférico. pero es una basura enorme, recuerda que fue el primer proyecto que hice, :D :D y me ha dado tanto asco verlo que no se si colgarlo para que lo veas, por si me echan del foro. :D :D o me rebajen de moderador a visitante o algo por el estilo
Si pero con respecto a lo que el estaba haciendo en la interrupcion, deberia buscar mas pintar una "linea" ( me refiero a su codigo ) la cual se mantenga estatica. Por el momento estatico, luego si queres implementas un buffer circular como vos queres, pero por ahora estatico es lo mejor, de esa forma elimina su problema de que le giraba el dibujo.
Ademas casi que le di el codigo :P solo debe modificar el envio de datos y la configuracion de los timers/CCP
es normal, no te preocupes yo tambien tengo de esos codigos y si los veo prefiero pegarme un tiro en el pie y hacerlo nuevamente de 0 que verlo xD