با سلام خدمت دوستان.
من کد زیر رو نوشتم و در atmega32a اجراش کردم.
ولی اتفاقی که میوفته اینه که بلندگو فقط سوت میکشه.
در ضمن فایل موجود در mmc به صورت نمونه های 8 بیتی ذخیره شده و هیچ هدری هم نداره.
مونو هستش با فرکانس نمونه برداری 44100
با تشکر
من کد زیر رو نوشتم و در 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); }
دیدگاه