Autor Tema: 18F4550 y comparadores analógicos  (Leído 2030 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
18F4550 y comparadores analógicos
« en: 25 de Marzo de 2010, 08:32:43 »
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

Código: [Seleccionar]
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.
Saludos desde Almería, España