اطلاعیه

Collapse
No announcement yet.

مشکل با ATMega128 - کلافم کرده - کمک فوری

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

    مشکل با ATMega128 - کلافم کرده - کمک فوری

    دوستان در ادامه تبدیل برنامه ATmega32 به 128 به یه مشکل دیگه برخوردم

    در انتها کل سورس رو براتون میزارم

    این برنامه برای ارتباط با mmc با فرمت fat32 هستش که در اتمگا 32 کاملا درست کار میکنه

    اما در 128 نه

    مشکل در ارتباط با mmc و در تنظیمات SPI هستش

    این بخش از برنامه برای تنظیمات spi در اتمگا32 هستش:

    **********************************
    #ifndef _SPI_ROUTINES_H_
    #define _SPI_ROUTINES_H_

    #define SPI_SD SPCR = 0x52
    #define SPI_HIGH_SPEED SPCR = 0x50; SPSR |= (1<<SPI2X)

    void spi_init(void);
    unsigned char SPI_transmit(unsigned char);
    unsigned char SPI_receive(void);

    #endif



    //use following macros if PB1 pin is used for Chip Select of SD
    #define SD_CS_ASSERT PORTB &= ~0x02
    #define SD_CS_DEASSERT PORTB |= 0x02


    //use following macros if SS (PB4) pin is used for Chip Select of SD
    //#define SD_CS_ASSERT PORTB &= ~0x10
    //#define SD_CS_DEASSERT PORTB |= 0x10



    void port_init(void)
    {
    PORTA = 0x00;
    DDRA = 0x00;
    PORTB = 0xEF;
    DDRB = 0xBF; //MISO line i/p, rest o/p

    PORTC = 0x00;
    DDRC = 0x00;
    PORTD = 0x00;
    DDRD = 0xFE;
    }

    در مگا32 از PortB.1 به عنوان SS استفاده شده است

    حال این تغییرات رو برای مگا128 انجام دادم:


    #ifndef _SPI_ROUTINES_H_
    #define _SPI_ROUTINES_H_

    #define SPI_SD SPCR = 0x52
    #define SPI_HIGH_SPEED SPCR = 0x50; SPSR |= (1<<SPI2X)


    void spi_init(void);
    unsigned char SPI_transmit(unsigned char);
    unsigned char SPI_receive(void);

    #endif



    //use following macros if PB5 pin is used for Chip Select of SD
    #define SD_CS_ASSERT PORTB &= ~0x20
    #define SD_CS_DEASSERT PORTB |= 0x20


    //use following macros if SS (PB0) pin is used for Chip Select of SD
    //#define SD_CS_ASSERT PORTB &= ~0x01
    //#define SD_CS_DEASSERT PORTB |= 0x01


    void port_init(void)
    {
    PORTA = 0x00;
    DDRA = 0x00;
    PORTB = 0xDE;
    DDRB = 0xF7; //MISO line i/p, rest o/p

    PORTC = 0x00;
    DDRC = 0x00;
    PORTD = 0x00;
    DDRD = 0xFE;
    }

    از Portb.5 به عنوان ss استفاده شده است


    در ضمن میکرو از نوع ATmega128L است
    برای همین از هیچ تقسیم مقاومتی استفاده نکردم و فقط برای تغذیه کارت از دیود زنر استفاده کردم


    به نظر شما اشکال در کجاست؟؟؟

    #2
    پاسخ : مشکل با ATMega128 - کلافم کرده - کمک فوری

    منم یه همچین کاری رو پیش رو دارم فقط با فرمت raw نه fat مشکل دقیقا چیه؟ چه اروری میده کامپایلر چه ورژنیه؟؟

    دیدگاه


      #3
      پاسخ : مشکل با ATMega128 - کلافم کرده - کمک فوری

      دوست عزیز من با AVR-GCC یا WinAVR برنامه نوشتم

      مشکل برنامم هم خشاب رم بود

      وقتی فشار دادم و تست کردم جواب داد

      نزدیک 3روز الافم کرده بود

      شما برنامه برای فرمت raw میآ‌خواهید؟؟؟

      یکم توضیح بدین

      منظورتون از فرمت raw چیه؟؟؟

      دیدگاه

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