اطلاعیه

Collapse
No announcement yet.

کمک در مرد ارتباط با eeprm سریال با استاندارد wti

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

    کمک در مرد ارتباط با eeprm سریال با استاندارد wti

    با سلام خدمت همه دوستان و تشکر از مسئولان این سایت
    لطفا اگر کسی با twiیاi2c جهت ارتباط با eepromسریال مثل 24c256 کار کرده من رو راهنمایی کنه که چجوری باید این کاررو بکنم میکرو من 7s64 است . :surprised: متشکرم

    #2
    پاسخ : کمک در مرد ارتباط با eeprm سریال با استاندارد wti

    با سلام ظاهرا هیچ کسی با این مورد کار نکرده من خودم دارم روش کارمیکنم و یکسری اطلاعات بدست اوردم به نتیجه که رسیدیم اطلاعاتش رو میزارم

    دیدگاه


      #3
      پاسخ : کمک در مرد ارتباط با eeprm سریال با استاندارد wti

      با سلام من یک برنامه اماده برای ارتباط با eeprom میزارم اینجا که خودم نوشتم امیدوارم استفاده کنید.
      #include<AT91SAM7S64.H>
      #include<delay.h>
      #include<lib_AT91SAM7S64.h>
      #include<lcd4bit.h>
      unsigned int a;
      unsigned int b;
      void IRQ0_handler(void)__irq
      {
      AT91F_TWI_CfgPIO();
      AT91F_TWI_CfgPMC();
      *AT91C_TWI_CWGR=(7<<16)|(255<<8)|(255) ;
      *AT91C_TWI_MMR=0X510100;
      *AT91C_TWI_IADR=0X00;
      *AT91C_TWI_CR=AT91C_TWI_START | AT91C_TWI_MSEN | AT91C_TWI_STOP ;
      *AT91C_TWI_THR=254;
      while((AT91C_BASE_TWI->TWI_SR&0X4)!=0X4);
      while((AT91C_BASE_TWI->TWI_SR&0X1)!=0X1)
      delay_s(1);
      lcd_clear();
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, AT91C_PIO_PA11);
      delay_s(3);
      lcd_clear();
      AT91F_PIO_SetOutput(AT91C_BASE_PIOA, AT91C_PIO_PA11);
      lcd_putsf("INTERUPT21"
      AT91C_BASE_AIC->AIC_ICCR=(1<<AT91C_ID_IRQ0);
      AT91C_BASE_AIC->AIC_EOICR=0;
      }
      void FIQ_handler(void)__irq
      {
      *AT91C_TWI_MMR=0X501100;
      *AT91C_TWI_IADR=0X02;
      *AT91C_TWI_CR=AT91C_TWI_MSEN ;
      * AT91C_TWI_MMR=0X501100;
      *AT91C_TWI_CR=AT91C_TWI_START | AT91C_TWI_STOP;
      while((AT91C_BASE_TWI->TWI_SR&0X2)!=0X2);
      a=AT91C_BASE_TWI->TWI_RHR;
      while((AT91C_BASE_TWI->TWI_SR&0X1)!=0X1)
      lcd_clear();
      lcd_putsf("FASTINTD FIQ"
      delay_s(2);
      lcd_puts(a);
      delay_s(3);
      AT91C_BASE_AIC->AIC_ICCR=(1<<AT91C_ID_FIQ);
      AT91C_BASE_AIC->AIC_EOICR=0;
      }
      void main()
      {
      lcd_pin(1,0,1,2,5,6,7); //(rs,e,d4,d7)
      delay_s(1);
      lcd_clear();
      AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOA);
      AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_IRQ0);
      AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, AT91C_PIO_PA11);
      AT91F_PIO_SetOutput(AT91C_BASE_PIOA, AT91C_PIO_PA11);
      AT91C_BASE_PIOA->PIO_PDR=(1<<19|1<<20);
      AT91C_BASE_PIOA->PIO_MDER=(1<<19|1<<20);
      AT91C_BASE_PIOA->PIO_BSR=(1<<19|1<<20);
      AT91C_BASE_AIC->AIC_SVR[AT91C_ID_IRQ0]=(unsigned int)IRQ0_handler;
      AT91C_BASE_AIC->AIC_SMR[AT91C_ID_IRQ0]=0X62;
      AT91C_BASE_AIC->AIC_IECR=(1<<AT91C_ID_IRQ0);
      AT91C_BASE_AIC->AIC_SVR[AT91C_ID_FIQ]=(unsigned int)FIQ_handler;
      AT91C_BASE_AIC->AIC_SMR[AT91C_ID_FIQ]=0X60;
      AT91C_BASE_AIC->AIC_IECR=(1<<AT91C_ID_FIQ);
      //seting TWI
      AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_TWI);
      AT91C_BASE_PIOA->PIO_PDR=(1<<3|1<<4);
      AT91C_BASE_PIOA->PIO_MDER=(1<<3|1<<4);
      AT91C_BASE_PIOA->PIO_ASR=(1<<3|1<<4);
      *AT91C_TWI_CWGR=0x03C3C; //teransfer 400khz
      lcd_clear();
      lcd_putsf("test twi dar 400khz with interupt"
      delay_s(6);
      lcd_clear();
      while(1)
      {
      lcd_putsf("loop="
      delay_s(2);
      *AT91C_TWI_IADR=0X00;
      *AT91C_TWI_CR=AT91C_TWI_MSEN;
      *AT91C_TWI_MMR=0X511100;
      *AT91C_TWI_CR=AT91C_TWI_START | AT91C_TWI_STOP ;
      while((AT91C_BASE_TWI->TWI_SR&0X2)!=0X2); // != in alamat na mosavy ast
      a=AT91C_BASE_TWI->TWI_RHR;
      while((AT91C_BASE_TWI->TWI_SR&0X1)!=0X1)
      lcd_puts(a);

      دیدگاه

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