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)
{
}
}