اطلاعیه

Collapse
No announcement yet.

کتابخانه I2c برای avr studio و Eeprom 24cXX

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

    کتابخانه I2c برای avr studio و Eeprom 24cXX

    سلام
    یه کتابخونه واسه i2c وآیسی های eeprom 24cxx پیدا کردم برای استفاده در avr studio ...
    ولی نمیدونم چرا چیزایی که تو حافظه مینویسم اونایی نیست که دارم ازش میخونم :mrgreen: نمیدونم مشکل از کار منه یا این کتابخونها
    میشه کمک کنید درست بشه همه هم استفاده کنن ؟ با کدویژن انجام دادم با کتابخونه خودش...ولی دیگه میخوام با avr studio کار کنم خیلی سخته واسم :sad:

    لینک کتابخونه :

    http://uplod.ir/7dsq4elxl50j/K1.zip.htm


    بخشی از کد های پروژم :

    کد:
    	 I2CInit();
    کد:
    	char str[20],str_empty[20]; 
    	char tmp;
    	       
      strcpy(str,"Device Is Master"); 
    StringAt(l++,1,"wr",BLACK);
    for(i=0;i<16;i++)
    	{
    		j= EEWriteByte(i , str[i]);
    		(j ? N11_PrintString("1",BLACK) : N11_PrintString("0",BLACK));
    	}		 
    	EEWriteByte( 16 , ';');
    	i=0;
    	strcpy(str,str_empty);
    	StringAt(l++,1,"re",BLACK);
    	while(j=EEReadByte(i,tmp))
    	{ 
    		(j ? N11_PrintString("1",BLACK) : N11_PrintString("0",BLACK));
    		str[i++] = tmp;
    		
    		if (i >20)
    		{
    			StringAt(l++,1,"error",BLACK);
    			break;
    		}
    		else if(tmp == ';')
    			break; 
     
    	}		
    	StringAt(l++,1,str,BLACK);
    مثلا الان میخوام جمله داخل str رو بریزم تو حافطه 0 تا 16 و آخرش هم کاراکتر ; رو بزارم
    و موقع خوندن هم وقتی به ; رسید از حلقه بیاد بیرون...
    خروجی اینه :
    کد:
    Device Is Master
    wr1111111111111
    re1111111111111
    error
    -----------------------
    این کاراکتر آخری شبیه - هس ولی فرق داره
    از دوستان پیشاپیش ممنون

    #2
    پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

    سلام.

    اینو استفاده کنید حتما جواب میده:

    http://homepage.hispeed.ch/peterfleury/i2cmaster.zip

    دیدگاه


      #3
      پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

      نوشته اصلی توسط sadeghmojtabaei
      سلام.

      اینو استفاده کنید حتما جواب میده:

      http://homepage.hispeed.ch/peterfleury/i2cmaster.zip
      سلام
      ممنون
      یه سوال باید فایل .s رو ضمیمه پروژه کنم و پایه های sda , scl رو عوض کنم دیگه ؟اون فایل هدر و سی واسه ارتباط سخت افزاریه دیگه ؟
      من از 24c512 استفاده میکنم 0xa0 میشه آدرس ic
      میشه یه مثال بزنین با همین کتابخونه چطور یه کاراکتر یا جمله مثله سلام بنویسم و بعد همون رو بخونم؟
      کاری که من کردم و نتیجه مشایه پست قبل ، با این تفاوت که فقط کاراکتر مستطیل توپر رو lcd اومد... :mrgreen:
      کد:
      ;
      #define SDA   7		  
      #define SCL		6		
      #define SDA_PORT    PORTC   
      #define SCL_PORT    PORTC
      کد:
      for(i=0;i<16;i++)
      	{
      		ret = i2c_start(Dev24Cxx);    // set device address and write mode
      		if ( ret ) {
      			/* failed to issue start condition, possibly no device found */
      			i2c_stop();
      		}else {
      			/* issuing start condition ok, device accessible */
      			i2c_write(0x00);            // write address = 5
      			(i2c_write(0x31+i) ? N11_PrintString("0",BLACK) : N11_PrintString("1",BLACK));          // 			ret=0 -> Ok, ret=1 -> no ACK 
      		}		
      		
      	}		 
      			i2c_write(';');            // ret=0 -> Ok, ret=1 -> no ACK 
      			i2c_stop(); 
      	i=0;
      	strcpy(str,str_empty);
      	StringAt(l++,1,"re",BLACK);
      	
          i2c_start_wait(Dev24Cxx);   // set device address and write mode
          i2c_write(0x00);            // write address = 0
          /* write ok, read value back from eeprom address 0x05, wait until 
            the device is no longer busy from the previous write operation */
          i2c_rep_start(Dev24Cxx+1);    // set device address and read mode
      	while(1)//j=EEReadByte(i,tmp))
      	{ 
      		
      		N11_PrintString(i2c_readNak(),BLACK);
      		if (i > 18)
      		{
      			StringAt(l++,1,"error",BLACK);
      			break;
      		}
      		else if(ret == ';')
      			break; 
       
      	}	
          i2c_stop();

      دیدگاه


        #4
        پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

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

        من میخوام یه دیتا لوگ داشته باشم مثلا هر 24 ساعت اطلاعات دما رو ذخیره کنه ....
        مثلا این و :

        کد:
        char str[]="#Date>;Temp:20,Hem:60"
        دارم سعی میکنم با همین کتابخونه ها که پیدا کردم راهش بندازم :sad: ولی حتما یه جای کارم اشتباهه .
        WP باید زمین بشه دیگه ؟
        به هر حال . برای اینکه str رو رایت کنم باید به int تبدیل کنم و ذخیره کنم یا char رو هم میتونم با I2C مستقیم ذخیره کنم ؟
        از اون ور هم موقع خوندن اطلاعات چیزیو که میحونم میتونم مستقیم رو lcd نشون بدم ؟
        اینو یکی بهم توضیح بده.

        میشه یکم مفهوم char unsigend char واسم باز کنه ؟
        فرق unsigend char با uint8_t چیه ؟
        حروفی که ما استفاده میکنیم فقط char هستن دیگه ؟
        unsigend char رو میشه به عنوان ذخیره اعداد استفاده کرد ؟

        دیدگاه


          #5
          پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

          این درایور 24Cxx برای GCC:
          I2C.rar
          تست کن و اگه مشکل داشت بگو
          خواندن و نوشتن توی این درایور بایتی هست و خیلی ساده
          ------------------------------------------------
          میشه یکم مفهوم char unsigend char واسم باز کنه ؟
          char و unsigned char برای کرکتر تفاوتی نداره تفاوتش توی عملیات ریاضی هست .

          فرق unsigend char با uint8_t چیه ؟
          هیچ فرقی ندارن

          حروفی که ما استفاده میکنیم فقط char هستن دیگه ؟
          unsigend char رو میشه به عنوان ذخیره اعداد استفاده کرد ؟
          هر دوشون را میشه برای کرکتر استفاده کرد
          و برای عدد:
          بازه char از 127- تا 127+ هست
          بازه unsigned char از 0 تا 255 هست

          موفق باشید
          امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

          دیدگاه


            #6
            پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

            نوشته اصلی توسط Abbas Sarami
            این درایور 24Cxx برای GCC:
            I2C.rar
            تست کن و اگه مشکل داشت بگو
            سلام.مرسی
            این کتابخونه سخت افزاریه :sad:
            من احتیاج به نرم افزاریشو دارم :read:

            دیدگاه


              #7
              پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

              سلام
              من یه کارایی کردم
              میشه چک کنید برنامه ارسال و خوندن و ؟ فک میکنم قسمت خوندن مشکل داره
              برای 24c512 باید EE24xx_addr یک باشه :
              فایل ها :
              EEP24Cxx.zip
              کد:
              /*
               * _24Cxx.c
               *
               * Created: 7/12/2014 9:37:31 PM
               * Author: K1
               */ 
              #include "EEP24Cxx.h"
              
              volatile char EE24xx_addr = 1;//8bit adder or 16bit adder
              
              void	EEProm_Init(void){
              	
              	i2c_init();                // init I2C interface
              
              }
              
              int	EE24x_Write( int addr , char *str )
              {
                unsigned char ret;
              	int i=0;  
                if ( i2c_start(Dev24Cxx+I2C_WRITE)) { // set device address and write mode
                  /* failed to issue start condition, possibly no device found */
                  i2c_stop();
              		return 0;
                }else {
                  /* issuing start condition ok, device accessible */
              		if(EE24xx_addr)
              			i2c_write(addr>>8);            
                  i2c_write(addr);            
              		while((*str)!='\0',i++)
              		{
              			i2c_write(*str);
              			str++;
              			_delay_ms(10);
              		}
              		i2c_stop();
              		return i;   
              	}		
              	
              }
              int	EE24x_Read( int addr,int len, char *str )
              {
              	unsigned char ret;
              	int i=0;
                if ( i2c_start(Dev24Cxx+I2C_WRITE)) { // set device address and write mode
                  /* failed to issue start condition, possibly no device found */
                  i2c_stop();
              		return 0;
                }else {
                  /* issuing start condition ok, device accessible */
              		if(EE24xx_addr)
              			i2c_write(addr>>8);         
                  i2c_write(addr);   
                  i2c_rep_start(Dev24Cxx+I2C_READ);    // set device address and read mode
              		for(i=0;i<len;i++)
              		{
              			str[i]=i2c_readAck();
              			_delay_ms(10); 
              		}
                  i2c_stop(); 
              		str[len]='\0';
              		return i;   
              	}
              	
              }

              دیدگاه


                #8
                پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

                نوشته اصلی توسط کیوان قاسمی
                این کتابخونه سخت افزاریه :sad:
                من احتیاج به نرم افزاریشو دارم :read:
                منظورت از نرم افزاری و سخت افزاری چیه؟
                اگه میخواهی رشته ذخیره کنی یک تابع کوچیک خرجشه
                این مثال را ببین : I2C.rar
                برای ذخیره String توابع زیر اضافه شد:
                کد:
                 unsigned int write_24cxx_str(unsigned int Start_Address , char *str);
                 unsigned int Read_24cxx_str(unsigned int Start_Address , unsigned int len , char *str);
                موفق باشید
                امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                دیدگاه


                  #9
                  پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

                  نوشته اصلی توسط Abbas Sarami
                  منظورت از نرم افزاری و سخت افزاری چیه؟
                  اگه میخواهی رشته ذخیره کنی یک تابع کوچیک خرجشه
                  این مثال را ببین : I2C.rar
                  برای ذخیره String توابع زیر اضافه شد:
                  کد:
                   unsigned int write_24cxx_str(unsigned int Start_Address , char *str);
                   unsigned int Read_24cxx_str(unsigned int Start_Address , unsigned int len , char *str);
                  موفق باشید
                  سلام ممنون
                  منظورم i2c نرم افزاری بود .
                  چطور میتونم پایه های sda و scl رو عوض کنم تو سورس شما ؟

                  دیدگاه


                    #10
                    پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

                    نوشته اصلی توسط کیوان قاسمی
                    سلام ممنون
                    منظورم i2c نرم افزاری بود .
                    چطور میتونم پایه های sda و scl رو عوض کنم تو سورس شما ؟
                    توی این سورس از I2C سخت افزاری استفاده شده و نمیشه کلاک و دیتا را جابجا کرد
                    باید توابع خواندن و نوشتن i2c را خودت بنویسی
                    به نظر من از i2c سخت افزار استفاده کنی بهتره چون : سرعت بیشتر و دقت بالا

                    موفق باشید
                    امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                    دیدگاه


                      #11
                      پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

                      نوشته اصلی توسط Abbas Sarami
                      توی این سورس از I2C سخت افزاری استفاده شده و نمیشه کلاک و دیتا را جابجا کرد
                      باید توابع خواندن و نوشتن i2c را خودت بنویسی
                      به نظر من از i2c سخت افزار استفاده کنی بهتره چون : سرعت بیشتر و دقت بالا

                      موفق باشید
                      مهندس من مدارو زدم....
                      میشه اون سورسی که تو پست قبل گذاشتم و چک کنید؟

                      دیدگاه


                        #12
                        پاسخ : کتابخانه I2c برای avr studio و Eeprom 24cXX

                        درایور خودم را با درایور I2C نرم افزاری که معرفی کردید ترکیب کردم :mrgreen:
                        I2C نرم افزاری + درایور 24Cxx + مثال : EEP24Cxx.rar

                        موفق باشید
                        امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                        دیدگاه

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