Hola:
Estoy tratando de enviar información a un PIC desde la salida VGA. Para esto dibujo en pantalla una imagen compuesta de series de pixels blancos (1) y negros (0). Para leer estos bits utilizo los comparadores analógicos de un 18F4550, ya que el nivel de la señal es de 0,7V como máximo. Están configurados para que entreguen la salida en los pines del puerto A y poder ver el resultado en el osciloscopio. Además, el programa del PIC enciende/apaga un led, conectado en el puerto D, como testigo de funcionamiento.
Bien, los comparadores hacen su trabajo perfectamente, pero en cuanto aumento la frecuencia de alternancia entre pixels blancos (1) y negros (0), el PIC parece que aumentase su velocidad de funcionamiento, ya que el led conectado al puerto D aumenta su velocidad de encendido/apagado.
¿Alguien ha tenido algún problema parecido con los comparadores?
Os adjunto el programa del PIC por si fuera de ayuda. Funciona a 48MHz y un resonador de 20Mhz.
Saludos
Manofwar
program VGA_DMD
'******************************************************************************
' Initialization Routine
'******************************************************************************
sub procedure Init_Main
'--------------------------------------
' Disable interrupts
'--------------------------------------
INTCON = 0 ' Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5
INTCON3 = 0xC0
RCON.IPEN = 0 ' Disable Priority Levels on interrupts
PIE1 = 0
PIE2 = 0
PIR1 = 0
PIR2 = 0
ADCON1 = %1011
'--------------------------------------
' Ports Configuration
'--------------------------------------
CMCON = %000011
TRISA = %11001111
TRISB = 0xFF
TRISC = 0xFF
TRISD = 0
TRISE = 0x07
LATA = 0
LATB = 0
LATC = 0
LATD = 0
LATE = 0
end sub
'******************************************************************************
' Main Interrupt Routine
'******************************************************************************
sub procedure interrupt
'HID_InterruptProc
end sub
'******************************************************************************
'******************************************************************************
' Main Program Routine
'******************************************************************************
main:
Init_Main()
while TRUE
' Clear bit 5 on PORTB
PORTD.1 = 1
Delay_ms(1000)
' Clear bit 5 on PORTB
PORTD.1 = 0
Delay_ms(1000)
wend
end.