ايران ويج

نسخه‌ی کامل: مشکل کار با mmc در کدویژن
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام به دوستان.
من هر کاری میکنم میکرو mmc رو نمیشناسه. از sdcard.h استفاده کردم ولی بازم نمیشناسه.

برنامه ی من به شرح زیره لطفا اشکال برنامه رو به من بگید که درستش کنم:
کد:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : Speaker Clock
Version : 1
Date    : 2012-01-31
Author  : Hamed dehghani
Company : Mr.EFDc
Comments:


Chip type               : ATmega64
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 1024
*****************************************************/

#include <mega64.h>
#include <delay.h>
#include <sdcard.h>
#include <stdio.h>
#include <stdlib.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

unsigned char i;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
TCNT0=0;
i++;
if(i==4)
    {
    TCNT0=30;
    }
if(i==5)
    {
    disk_timerproc();
    i=0;
    }
}

// SPI functions
#include <spi.h>

// Declare your global variables here
//char lcd[16];
void main(void)
{
// Declare your local variables here
unsigned char disk_status,vol=0;
char filename[6]="a.txt",buff[16];
unsigned int br,btr=10;
FATFS drive;
FIL fs;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x07;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Port E initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTE=0x00;
DDRE=0x00;

// Port F initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTF=0x00;
DDRF=0x00;

// Port G initialization
// Func4=In Func3=In Func2=In Func1=In Func0=In
// State4=T State3=T State2=T State1=T State0=T
PORTG=0x00;
DDRG=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125.000 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
ASSR=0x00;
TCCR0=0x04;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// OC1C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// Timer/Counter 3 initialization
// Clock source: System Clock
// Clock value: Timer3 Stopped
// Mode: Normal top=FFFFh
// OC3A output: Discon.
// OC3B output: Discon.
// OC3C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer3 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR3A=0x00;
TCCR3B=0x00;
TCNT3H=0x00;
TCNT3L=0x00;
ICR3H=0x00;
ICR3L=0x00;
OCR3AH=0x00;
OCR3AL=0x00;
OCR3BH=0x00;
OCR3BL=0x00;
OCR3CH=0x00;
OCR3CL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: Off
EICRA=0x00;
EICRB=0x00;
EIMSK=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
ETIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2000.000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;

// LCD module initialization
lcd_init(16);

// Global enable interrupts
#asm("sei")

/* initialize SPI interface and card driver */
disk_status=disk_initialize(0);
/* clear the LCD */
lcd_clear();
/* display disk initialization result on the LCD */
if (disk_status & STA_NOINIT) lcd_puts("Disk init failed");
else
if (disk_status & STA_NODISK) lcd_puts("Card not present");
else
if (disk_status & STA_PROTECT) lcd_puts("Card write\nprotected");
/* all status flags are 0, disk initialization OK */
else
lcd_puts("Init OK");
/* wait 2 seconds */
delay_ms(2000);

lcd_clear();

while (1)
      {
      // Place your code here
      f_mount(vol,&drive);
      f_open(&fs,filename,FA_OPEN_EXISTING);
      f_read(&fs,&buff,btr,&br);
      lcd_gotoxy(0,0);
      lcd_puts(buff);
      };
}
پاسخی که از mmc میگیره درست نیست.
برای ارتباط سخت افزاری میکرو و mmc هم از CD4050 استفاده کردم.[/align]
میشه بگین چیکارا کردین
مقاومت ها رو درست گذاشتین
پایه هارو درست خوندی؟
موریت چیه؟ میکرو ؟ تبدیل میزنی؟
رو پایه های مموری ولتاژ داری؟
فرکانس میکرو چقدره؟
مداری که بستم طبق مداریه که تو help کدویژن پیشنهاد داده. از بافر cd4050 استفاده کردم به عنوان واسط میکرو و mmc و اینکه از lf33 واسه تغذیه ی mmc . میکروی مورد استفاده ی من mega64 و مموری 1 گیگ. میخوام یه سری فایل wav بریزم روش و گاهی اوقات یکی از این فایلا رو پخش کنم. فعلا مشکل من اینه که میکرو اصلا با مموری ارتباط برقرار نمیکنه. فرکانس isp 2 مگا هرتز هست و فرکانس کاری میکرو هم 8 مگا هرتز. پایه های مموری هم طبق help کدویژن وصل کردم. به این صورت:
[تصویر:  codevision-help.png]
ولی وقتی که مدار رو روشن میکنم disk init faild رو نشون میده.
تا اونجایی که من میدونم یک گیگ خیلی رقم بالاییه
درضمن مموری باید mmc باشه مموری های میکرو حتی با تبدیل هم بعضی وقت ها رو همه برنامه ها کار نمیکنه
یه مموری در حد 128 بزارین
مقدار مموری زیاد مهم نیست تا 8 گیگ درست کار میکنه مسیر سیم ها به مموری باید خیلی کوتاه باشه به نویز حساس هستش
(۱۱-اسفند-۱۳۹۰, ۱۲:۳۱:۴۸)hamed dehghani نوشته است: [ -> ]سلام به دوستان.
من هر کاری میکنم میکرو mmc رو نمیشناسه. از sdcard.h استفاده کردم ولی بازم نمیشناسه.


پاسخی که از mmc میگیره درست نیست.
برای ارتباط سخت افزاری میکرو و mmc هم از CD4050 استفاده کردم.


من هم همین مشکل رو داشتم مطمعنم از برنامه نیست
ظاهرا این آی سی cd4050 خراب کاری میکنه چون توی فرکانس کاری تاثیر میزاره
اگه مشکلت حل شده به ما هم بگو چکار کردی؟؟؟؟؟