TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: chris2508 en 25 de Noviembre de 2014, 00:46:19
-
hola que tal, tengo un problema con mi codigo y/o simulacion de un generador de pulsos cuadrados(pwm) por software, es regulable con un potenciometro configurado con el adc, para modificar el periodo de los pulsos, lo estoy generando con un pic 16f877, el problema es que en la simulacion, los pulsos no son completamente cuadrados, tienen un tipo de rampa, o inclinacion, no se como corregir ese error; el codigo es demaciado simple y me gustaria que porfavor me ayudaran a detectar el problema, aqui les dejo el codigo, es en PICC.
#include <16f877.h>
#device adc=10
#fuses NOWDT, PUT
#use delay(clock=4000000)
#byte portb=0x06
#byte trisb=0x86
void main(){
int x,y;
do{
trisb=0x00;
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
x=read_adc();
y=1023;
portb=0x01;
delay_ms(x);
portb=0x00;
delay_ms(y-x);
portb=0x00;
}
while(true);
}
-
le pusiste una carga o estas tomandolo directamente sin nada, ponele una resistencia de 1k en la simulacion, pero eso es problema de simulacion nomas
-
En cualquier caso si no te llegan a ser perfectamente cuadrado, montale un circuito monoastable, .
-
ponle en DC y ya esta
-
El osciloscopio esta midiendo AC, cambiale a DC y queda.
-
Muchas gracias por sus comentarios, el problema fue solucionado corrigiendo el codigo, el delay_ms, lo cambie a delay_ns, y esto genera una señal mas estable y recta... es la unica solucion que pude darle al problema... muchas gracias
-
seguro? existe ese delay?
-
Ademas el delay no le causaria ese problema.... si pones a 0 una salida se pondria a 0V y si pones a uno se pondria a 5V, cualquier otra cosa simulada ( a no ser un circuito externo ) deberia ser asi. a lo sumo puede no ser cuadrada perfecta y tener un rampa de subida y bajada pero como muestra proteus esta muy mal. En fin, solo es una simulacion.
-
muchas gracias por sus comentarios, el delay que use era delay_us, me equivoque... y se corrigio en el circuito ya fisico, probablemente es un error en la simulacion