PIC ile sinüs ve üçgen dalga üretimi

Başlatan tuzluerik, 26 Kasım 2017, 15:57:23

tuzluerik

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)


felix_eray

Tabloda üçgene göre ayarladığın değerleri paylaşırmısın.

Hattusa

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
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

tuzluerik

üç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,};