Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Ahora bien, no se podrar hacer por tecnica PWM la generacion de la senoidal? entiendo que si....ortega dijo:muchas gracias ........ entonces manos a la obra.... cuando haya algo lo posteo
este es un generador de la onda seno con el pic16f877. espero les sirva.
ah incluye simulacion en proteus![]()
este es un generador de la onda seno con el pic16f877. espero les sirva.
ah incluye simulacion en proteus![]()
Jimmy muy bueno el ejemplo tuyo. Hay algunas cosas que no entendi bien de la programacion.
Cuando vos utilizas int seno[67]={...} pones los valores que va a tomar la funcion. Pero no termino de entender como haces para determinar la frecuencia.
puerto_b = seno[desbordes];
set_rtcc(15);
Lo unico que pude notar es que si aumentas el valor dentro de set_rtcc() la frecuencia aumenta.
Lo otro que no pude entender fue lo que se encuentra dentro de void main, las siguientes instrucciones:
enable_interrupts(global);
enable_interrupts(int_rtcc);
setup_counters(rtcc_internal, rtcc_div_64);
set_rtcc(240);
Muchas Gracias!!
Nico
#include <18f4550.h>
#fuses hspll,mclr,nowdt,noprotect,nolvp,nodebug,usbdiv,pll3,cpudiv1,novregen,nopbaden
#use delay (clock=48000000)
#use standard_io(B)
#use standard_io(C)
#use standard_io(D)
int16 frecuencia=0;
int8 desbordes=0;
int seno[100]={77,82,86,91,96,101,105,109,114,118,122,126,129,133,136,
139,142,144,146,148,150,151,152,153,153,154,153,153,152,151,150,148,146,144,142,
139,136,133,129,126,122,118,114,109,105,101,96,91,86,82,77,72,67,62,58,53,49,44,
40,36,32,28,24,21,18,15,12,9,7,5,4,2,1,1,0,0,1,1,2,4,5,7,9,12,15,18,21,24,28,32,36,
40,44,49,53,58,62,67,72,77};
#int_rtcc
void rtcc_isr(){
frecuencia=read_adc();
output_B(seno[desbordes]);
output_d(seno[desbordes]);
set_rtcc(frecuencia);
desbordes++;
if(desbordes>=100)
{
desbordes = 0;
}
}
void main()
{
setup_adc_ports(all_analog);
setup_adc(adc_clock_internal);
set_adc_channel(0);
set_tris_b(0x00);
set_tris_d(0x00);
setup_counters(rtcc_internal, rtcc_div_4 | rtcc_8_bit);
enable_interrupts(int_rtcc);
enable_interrupts(global);
set_rtcc(231);
desbordes = 0;
while(true)
{
}
}