ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2014/07/25
    42
    3

    مشکل در wav player ساده

    با سلام خدمت دوستان.
    من کد زير رو نوشتم و در atmega32a اجراش کردم.
    ولي اتفاقي که ميوفته اينه که بلندگو فقط سوت ميکشه.
    در ضمن فايل موجود در mmc به صورت نمونه هاي 8 بيتي ذخيره شده و هيچ هدري هم نداره.
    مونو هستش با فرکانس نمونه برداري 44100
    با تشکر
    کد:
    #include <mega32a.h>	
    #include <delay.h>
    #include "diskio.h"
    #include "ffconf.h"
    #include "ff.h"		
    #include "ff.c"	
    			
    
    unsigned char Buff1[256];
    unsigned char Buff2[256];
    bit B_NUMBER=0;
    bit B_RELOAD=0;
    unsigned char seek=0;
    unsigned long F_LSEEKS=0;
    unsigned char xy;
    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {  
       if(!B_NUMBER){
        xy=(Buff1[seek]*181)/255;
       }
       else if(B_NUMBER){
        xy=(Buff2[seek]*181)/255; 
       }
       OCR1AL=(unsigned char)(xy & 0xFF);  
       seek++;
       if(seek>=255){
        B_RELOAD=1;
        B_NUMBER=~B_NUMBER;
        seek=0;
       }
       
    }
    void main (void)
    {   
      
    	UINT bw;
    	FATFS FatFs;		
    	FIL Fil;
      DDRD = 0xFF;
    	f_mount(&FatFs, "", 0);		
      if (f_open(&Fil, "x.raw", FA_READ) == FR_OK) {
             
              if(f_read(&Fil,Buff1,256,&bw)==FR_OK){
                if(bw==256){
                  F_LSEEKS+=256; 
                }
              }      
              f_lseek(&Fil,F_LSEEKS);
              if(f_read(&Fil,Buff2,256,&bw)==FR_OK){
                if(bw==256){
                  F_LSEEKS+=256;
                  DDRB|=0b00010000;
                  PORTB|=0b00010000;   
               }      
              } 
              
              TCCR1A=0x82;
              TCCR1B=0x19;
              TCNT1H=0x00;
              TCNT1L=0x00;
              ICR1H=0x00;
              ICR1L=0xB5;
              OCR1AH=0x00;
              OCR1AL=0x5A;
              OCR1BH=0x00;
              OCR1BL=0x00;
              TIMSK=0x04;
              #asm("sei");
              
          while(1){ 
            while(!B_RELOAD);
            
             if(B_NUMBER){
              f_lseek(&Fil,F_LSEEKS);
              if(f_read(&Fil,Buff1,256,&bw)==FR_OK){
                if(bw==256){
                  F_LSEEKS+=256;
                  PORTB.4=~PORTB.4;
                }
              }
             }
             if(!B_NUMBER){
              f_lseek(&Fil,F_LSEEKS);
              if(f_read(&Fil,Buff2,256,&bw)==FR_OK){
                if(bw==256){
                  F_LSEEKS+=256;
                  PORTB.4=~PORTB.4;   
               }      
              } 
             }
             B_RELOAD=0;   
           }           
      } 
      else{
        DDRB|=0b00010000;
        PORTB|=0b00010000;
        while(1){
          delay_ms(20);
          PORTB.4=~PORTB.4;
        }
      } 
      
    	while(1);
      
    }
  2. #2
    2012/10/25
    463
    32

    پاسخ : مشکل در wav player ساده

    من با ATmega128 دو سه بار wave player ساختم. اين هم کدش ولي کيفيت صدا زياد خوب نبود.
    اميدوارم اين کد بدردتون بخوره

    کد:
    $regfile = "M128Def.dat"
    $crystal = 16000000
    
    
    'Const Xramdrive = 0
     Config Lcd = 16 * 2
     Config Lcdpin = Pin , Db7 = Pinf.0 , Db6 = Pinf.1 , Db5 = Pinf.2 , Db4 = Pinf.3 , E = Pinf.4 , Rs = Pinf.5
     Config Pinb.7 = Input , Pind.6 = Input , Pind.7 = Input
    
     Cls : Cursor Off Noblink
    '--------------------------------------------------------------------------------
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
    Pwm1a = 0
    Start Timer1
    '###########################################################################
    Config Timer2 = Timer , Prescale = 1
    Enable Timer2 : On Timer2 T2_isr
    Const Timer2_value = 235                  '211
    Stop Timer2
    '###########################################################################
    
    Enable Interrupts
    
    Dim Co_2 As Bit
    
    
    
    Dim Bufor As Byte
    Dim First As Bit
    
    Dim E As Bit
    
    Dim W As Word
    Dim B As Byte
    Dim S As String * 30
    
    '(Config Int0 = Falling
    On Int0 Ainit
    Portd.2 = 1
    sei
    Enable Int0
    ')
    $include "Config_MMC.bas"
    $include "CONFIG_AVR-DOS.Bas"
    
    
    
      If Drivecheck() <> 0 Then
       Do
         Locate 1 , 1
         Lcd "mmc not inserted"
       Loop
      End If
    
      If Driveinit() <> 0 Then
       Do
         Locate 1 , 1
         Lcd "mmc not insert"
       Loop
      End If
    
      If Initfilesystem(1) <> 0 Then
       Do
         Locate 1 , 1
         Lcd "Format isn't supported"
       Loop
      End If
    Locate 1 , 1
    Lcd "MMC OK"
    Wait 1
    '-------------------------------------------------------------------------------
    R:
    Do
    'S = Dir( "*.wav")
      Cls
    '  Lcd S ; " " ; Filedate()
    '  Lowerline
    
     S = "1.wav"
     Locate 1 , 1
     Lcd S
     ' Lcd Filetime() ; " " ; Filelen()
      Open S For Binary As #2
      E = 0
      First = 1
      W = 0
      Stop Timer2 : Timer2 = Timer2_value : Start Timer2
      Do
       Locate 1 , 1
       Lcd "Play"
       If E = 1 Then
         Locate 1 , 1
         Lcd "Next"
         Exit Do
       End If
      Loop
    Loop
    Play:
    T2_isr:
    Stop Timer2
    
      If Eof(#2) = 0 Then
         If W = 512 Then
          W = 0
          First = 0
          Pwm1a = 255
         End If
            If First = 1 Then
             Incr W
            Else
             Get #2 , Bufor
             Pwm1a = Bufor
            End If
       Timer2 = Timer2_value : Start Timer2
      Else
       Pwm1a = 255
       Close #2
       Locate 2 , 1
       Lcd "File End"
       E = 1
       Wait 1
      End If
    Return
    
    
    'Nex_t:
    'Pwm1a = 0
    'Close #2
    
    '  S = Dir()
    
    'Gosub Play
  3. #3
    2014/07/25
    42
    3

    پاسخ : مشکل در wav player ساده

    Homayon عزيز ممنونم از کدي که در اختيار گذاشتي.
    ولي ممنون ميشم از دوستان اگر کسي بتونه ايراد کده من رو بگه.
    واقعا لنگ اين تيکه ام که بفهمم ايراد کار از کجاست.
  4. #4
    2012/10/25
    463
    32

    پاسخ : مشکل در wav player ساده

    شما روي سخت افزارتون LCD داريد؟
    اگه داريد عددي که از روي رم داري ميخونيد بعد اون رو روي رجيستر PWM قرار ميديد رو روي LCD ببين اگه تغيير کرد يعني که اطلاعات داره از روي رم استخراج ميشخه ولي سرعتش درست نيست.

    اگر هم تغيير نکرد که احتمال خيلي زياد ميدم از اين قسمت باشه يعني از رو رم اطلاعات Load نميشه
  5. #5
    2014/07/25
    42
    3

    پاسخ : مشکل در wav player ساده

    اطلاعات رو مانيتور کردم.
    متاسفانه اطلاعات به طور درستي از رم خونده ميشن.
    ولي راجع به سرعت pwm اصلا مطمعن نيستم.
    بدبختانه اسيلوسکوپ هم در دسترس ندارم. :angry:
  6. #6
    2014/07/25
    42
    3

    پاسخ : مشکل در wav player ساده

    آقا همايون مطمعنا ميدونيد که سرعت کلاک atmega32a يه چيزي حدود 8MHz هستش.
    ولي من هر چقدر تو پروتئوس دارم شبيه سازيش ميکنم اين تنظيماتم براي pwm سرعت 44100 نميده.
    به نظرتون تنظيمات رجيستر هاي کنترل تايمر 1 درست هستش؟
  7. #7
    2012/10/25
    463
    32

    پاسخ : مشکل در wav player ساده

    براي ساخت wave player حتما بايد ميکرو رو رو 16 مگ تنظيم کني بعد ايميلت رو بده. يک پروژه کامل من قبلا ساخته بودم اسم فايل رو از طريق پورت سريال به ميکرو ميدادي بعد همون رو پخش ميکرد برات اين رو ايميل ميکنم شايد مشکلت کلا حل بشه :agree:
  8. #8
    2014/07/25
    42
    3

    پاسخ : مشکل در wav player ساده

    منونم.
    ايميلم رو پ.خ کردم.
    فقط من منظورتون رو از تنظيم رو 16مگ متوجه نشدم.
    يعني يک کريستال خارجي 16 مگ ببندم بهش يا اينکه ميشه از کلاک داخلي خود ميکرو استفاده کرد؟
  9. #9
    2012/10/25
    463
    32

    پاسخ : مشکل در wav player ساده

    نقل قول نوشته اصلی توسط php.console
    منونم.
    ايميلم رو پ.خ کردم.
    فقط من منظورتون رو از تنظيم رو 16مگ متوجه نشدم.
    يعني يک کريستال خارجي 16 مگ ببندم بهش يا اينکه ميشه از کلاک داخلي خود ميکرو استفاده کرد؟
    پ.خ نرسيد
    آره بايد کريستال خارجي 16 مگاهرتز بذاري . در ضمن کلاک اسيلاتور داخلي ميکرو ماکزيمم 8 مگاهرتز هست.
نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. مشکل اين wave player کجاست ?
    توسط mehrdad3264 در انجمن میکروکنترلرهای AVR
    پاسخ: 16
    آخرين نوشته: 2016/10/05, 20:29
  2. مشکل با wav player با کارت حافظه mmc
    توسط hemati01 در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2015/04/09, 19:49
  3. مشکل در اجرای فرمت TS در KM Player 3.8
    توسط mohsen diod در انجمن كامپيوتر ، اينترنت و علوم مرتبط
    پاسخ: 0
    آخرين نوشته: 2014/04/17, 21:19
  4. مشکل در شناخت mp3 player
    توسط faraday در انجمن مباحث علمی عمومی
    پاسخ: 2
    آخرين نوشته: 2012/07/14, 00:26
  5. مشکل نشناختن mp3 player
    توسط 81137037 در انجمن سخت افزار کامپیوتر
    پاسخ: 1
    آخرين نوشته: 2006/09/12, 13:59

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •