اطلاعیه

Collapse
No announcement yet.

راه اندازی ایسی ضبط و پخش صدا ISD4004 16M با اتمل استادیو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی ایسی ضبط و پخش صدا ISD4004 16M با اتمل استادیو

    سلام دوستان
    حیفم اومد برنامه رو منتشر نکنم چرا که به شدت منابع برای راه اندازی بدون دردسر و با زمان بندی های رکورد و پخش دقیق رو این آیسی کمه
    این برنامه به شدت تحت تاثیر برنامه های مختلفی هست که در کدویژن نوشته شده بودن سورس های مختلفی رو چک کردم که هرکدوم مشکلی داشتن و بنده متناسب با اتمل استادیو باتوجه به تغییراتی که مورد نیاز بود انجام دادم
    به صورت کامل تست شده
    از هر نقطه ای از حافظه میشه دقیقا اطلاعات رو ضبط یا پخش کرد
    سورس تقدیم به شما
    جا داره از کاربر عزیز hamidchi تشکر ویژه داشته باشم که با پی گیری مثمرشون و انتشار برنامشون به کدویژن باعث روشن شدن خیلی از مشکلات شدن
    کد:
    /*
     * 4.c
     *
     * Created: 18/12/2015 4:15:35 PM
     * Author: __Mehran__
     */
    
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <stdio.h>
    
    #ifndef F_CPU
    #define F_CPU 8000000
    #endif
    
    // SPI functions
    //#include <spi.h>
    
    // Declare your global variables here
    #define   POWERUP     0b00100000
    #define   SETPLAY     0b11100000
    #define   PLAY      0b11110000
    #define   SETREC     0b10100000
    #define   REC       0b10110000
    #define   STOPPWRDN    0b00010000
    #define   STOP      0b00110000
    
    #define   stop_key    ((PINC & (1<<4) ) >> 4)
    #define   rec       ((PINC & (1<<5)) >> 5)                  
    #define   play      ((PINC & (1<<1) ) >> 1)
    #define   play2      ((PINC & (1<<0) ))
    
    
    
    
    
    
     
    void ss_before(void);
    void ss_after (void);
    void stoppr (void);
    
    
    
    unsigned char adress_lsb;
    unsigned char adress_msb;
    int i;
    void spi_init_master (void)
    {
    	// Set MOSI, SCK as Output
    	//DDRB = (1<<5)|(1<<3) | (1<<2) ;
    	//DDRB &=~(1<<4);
    
    
    	// Enable SPI, Set as Master
    	//Prescaler: Fosc/16
    	//SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);// | (1<< DORD);
    	// sei();
    	//SPCR=0x73;
    //	SPSR=0x00;
    }
    
    //Function to send and receive data for both master and slave
    unsigned char spi (unsigned char data)
    {
    	// Load data into the buffer
    	SPDR = data;
    
    	//Wait until transmission complete
    	while(!(SPSR & (1<<SPIF) ));
    
    	// Return received data
    	return(SPDR);
    }
    
    int main(void)
    {
    
    PORTB=0x00;
    DDRB=0x2C;
     //DDRB |= 1<<2 ; 
    
    PORTC=0x38;
    DDRC=0x01;
    DDRC &=~(1<<0);
    DDRC &=~(1<<1);
    DDRC &=~(1<<5);
    DDRC &=~(1<<4);
     
    PORTD=0x00;
    DDRD=0xC0;
    
    
    TCCR0=0x00;
    TCNT0=0x00;
    
    
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    
    GICR|=0x40;
    MCUCR=0x02;
    GIFR=0x40;
    
    
    
    TIMSK=0x00;
    
    
    UCSRB=0x00;
    
    
    ADCSRA=0x00;
    
    
    ACSR=0x80;
    SFIOR=0x00;
    
    
    SPCR=0x71;
    SPSR=0x00;
    
    adress_lsb=0;
    adress_msb=0;
    
    DDRD |= 1<< 5 ; 
    PORTD |= 1<<5 ; 
    while (1)
       {
    
        if(play==0)
        {
        if(stop_key==0) break;
         
       //  LED_play=1;
       //  LED_rec=0;
         
        ss_before();
        spi(POWERUP);
        ss_after();
        _delay_ms(55);
        
        ss_before();
        spi(0x00);
        spi(0x80);
        spi(SETPLAY);
        ss_after();
        
        ss_before();
        spi(PLAY);
        ss_after();
         
        for(i=0;i<3290;i++)
        {
          if(stop_key==0) break;
          _delay_ms(10);
        }
        //LED_play=0;
        stoppr ();
    
        } 
        
        
        
    		
    		 if(play2==0)
    		 {
    			 if(stop_key==0) break;
    			 
    			 //  LED_play=1;
    			 //  LED_rec=0;
    			 
    			 ss_before();
    			 spi(POWERUP);
    			 ss_after();
    			 _delay_ms(55);
    			 
    			 ss_before();
    	 spi(0x2C);
    	 spi(0x01);
    			 spi(SETPLAY);
    			 ss_after();
    			 
    			 ss_before();
    			 spi(PLAY);
    			 ss_after();
    			 
    			 for(i=0;i<3290;i++)
    			 {
    				 if(stop_key==0) break;
    				 _delay_ms(10);
    			 }
    			 //LED_play=0;
    			 stoppr ();
    
    		 }
    		 
    		 
         
        if(rec==0)
        {
         if(stop_key==0) break;
         
      
        ss_before();
        spi(POWERUP);
        ss_after();
        _delay_ms(55);
        
        
        ss_before();
        spi(POWERUP);
        ss_after();
        _delay_ms(100);
        
        ss_before();
        spi(0x2C);
        spi(0x01);
        spi(SETREC);
        ss_after();
        
        ss_before();
        spi(REC);
        ss_after();
         
       //  for(i=0;i<1643;i++) // record for 1 minute by i<1643 (1 second = 27 "i")
       // {
        //   if(stop_key==0) break;
       //   _delay_ms(10);
        // }
        
       // stoppr ();
        
        } 
        
        
        if (stop_key == 0) stoppr();
    	  
    
    
        _delay_ms(1);
       }
    }
    
    void ss_before(void)
    {
      // slave_select=1;
      PORTB |= 1<<2 ; 
      _delay_us(1000);
      // slave_select=0;
      PORTB &=~(1<<2);
      _delay_us(1000);
      return;  
    }
    
    
    void ss_after(void)
    {
       PORTB &=~(1<<2);
      _delay_us(1000);
      PORTB |= 1<<2 ; 
      _delay_us(1000);
      return;
    }
    
    
       
    void stoppr (void)
    {
        ss_before();
        spi(STOP);
        ss_after();
        
        _delay_ms(80);
        return;    
    }
    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

    #2
    پاسخ : راه اندازی ایسی ضبط و پخش صدا ISD4004 16M با اتمل استادیو

    کلیپشو از لینک زیر ببینید
    یکم صدای اسپیکرو کم کنیم خیلی بهتر میشه
    http://s3.picofile.com/file/82286613...04_me.mov.html
    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

    دیدگاه

    لطفا صبر کنید...
    X