Merhaba arkadaşlar ben pıc ile üçgen ve sinüs dalga üretmek istiyorum. sinüs dalgayı ürettim ama üçgen dalgayı üretemiyorum yardımcı olabilir misiniz?
sinus1 deki değerleri üçgene göre ayarlıyorum ama üçgen dalga üretemiyorum sorun nerde acaba?
sinüs dalga kodu :
#include <16F877A.h>
#FUSES NOWDT,XT,NOPUT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(B)
#define pwm PIN_B0
const unsigned int16 sinus1[300]={
0,0,0,0,1,
2,3,5,7,8,10,13,15,18,21,24,27,31,35,39,43,47,52,56,61,66,72,77,83,89,95,
101,108,114,121,128,135,142,150,157,165,173,181,189,197,206,214,223,232,
240,250,259,268,277,287,296,306,315,325,335,345,355,365,375,385,396,406,
416,426,437,447,458,468,479,489,500,510,520,531,541,552,562,573,583,593,603,614,624,634,644,654,664,674,684,
693,703,712,722,731,740,750,759,767,776,785,793,802,810,818,826,834,842,
849,857,864,871,878,885,891,898,904,910,916,922,927,933,938,943,947,952,
956,960,964,968,972,975,978,981,984,986,989,991,992,994,996,997,998,999,
999,999,1000,999,999,999,998,997,996,994,992,991,989,986,984,981,978,975,
972,968,964,960,956,952,947,943,938,933,927,922,916,910,904,898,891,885,
878,871,864,857,849,842,834,826,818,810,802,793,785,776,767,759,750,740,
731,722,712,703,693,684,674,664,654,644,634,624,614,603,593,583,573,562,
552,541,531,520,510,500,489,479,468,458,447,437,426,416,406,396,385,375,
365,355,345,335,325,315,306,296,287,277,268,259,250,240,232,223,214,206,
197,189,181,173,165,157,150,142,135,128,121,114,108,101,95,89,83,77,72,66,
61,56,52,47,43,39,35,31,27,24,21,18,15,13,10,8,7,5,3,2,1,0,0,0};
void main()
{
int16 n1,sayac,mark1,t1,t2,mark1_sayac;
set_tris_b(0x00);
output_b(0x00);
output_low(pwm);
mark1_sayac=0;
n1=1;
while(true) {
if (mark1_sayac<300) mark1=(sinus1[mark1_sayac]);
mark1_sayac++;
if(mark1_sayac==300) mark1_sayac=0;
t1=mark1;
t2=1000-mark1;
for(sayac=0;sayac<15;sayac++) {
output_high(pwm);
delay_us(t1);
output_low(pwm);
delay_us(t2);
}
}
} (not:kodlar alıntıdır)
Tabloda üçgene göre ayarladığın değerleri paylaşırmısın.
slm
mcu ile sinüs üretimi için küçük bir program, bu programla üreteceğiniz sinüsü hesaplayarak otomatik tablo çıkartıyor
http://dosya.co/43vctfi1i7r1/Smart_SineDAC-SINUS.rar.html
(http://dosya.co/43vctfi1i7r1/Smart_SineDAC-SINUS.rar.html)
üçgen için kullabdığım değerler
const unsigned int16 sinus1[300]={
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,
87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,
111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,
132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,129,
128,127,127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,
108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,
83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,
55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,
27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,};