با سلام خدمت دوستان.
من کد زیر رو نوشتم و در 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);
}




دیدگاه