Estoy ejecutando a continuación el código en un PIC16F887 que funciona a 20 MHz. Me alimento PORTB.0
una señal de 1 KHz de mi generador de señal. Sin embargo, cuando la señal es baja, PORTC.1
cambia a una velocidad de ~5usec o ~10usec. También, he conectado un OP-AMP de salida que da 0V-4V, que sigue siendo el mismo.
He intentado habilitar débil pull ups en el interior, no funciona.
El microcontrolador es en un EasyPIC5 desarrollo de la junta, así que puede activar y desactivar cualquiera de pull-up o pull-down de resistencias que son de 10K. No funciona, tampoco.
Se trata de algún tipo de silicio problema(?) o hay un error en mi código?
Aquí está una captura de pantalla del osciloscopio que las sondas PORTC.1
:
Aquí está mi código, por favor omite el off-topic parte de ella:
volatile unsigned int fiftymicros=0;
volatile unsigned int milis=0;
volatile unsigned char fiftymicroscounter=0;
volatile unsigned int data_time=0;
volatile unsigned int milis_ctr=0;
unsigned long int data_bar[20]={0};
void interrupt()
{
if(INTCON.T0IF)
{
TMR0=198;
INTCON.T0IF=0;
fiftymicros++;
if(++fiftymicroscounter==40) { fiftymicroscounter=0; milis++; }
}
if(INTCON.RBIF)
{
PORTC.F1=~PORTC.F1;
INTCON.RBIF=0;
}
}
void main()
{
ANSEL =0;
ANSELH=0;
TRISA=0; PORTA=0;
TRISB=0x01; PORTB=0;
TRISC=0; PORTC=0;
TRISD=0; PORTD=0;
TRISE=0; PORTE=0;
OPTION_REG.INTEDG=1;
OPTION_REG.T0CS=0;
OPTION_REG.PSA=0;
OPTION_REG.PS0=1;
OPTION_REG.PS1=0;
OPTION_REG.PS2=0;
//OPTION_REG.B7=0;
//WPUB=0x80;
INTCON.TMR0IE=0;
INTCON.RBIE=1;
IOCB.B0=1;
INTCON.GIE=1;
UART1_Init(9600);
Delay_ms(100);
milis_ctr=milis;
while(1)
{
}
}