اطلاعیه

Collapse
No announcement yet.

مشکل با twi

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

    مشکل با twi

    با سلام خدمت تمامی اساتید
    من یه برنامه برای قطب نما نوشتم که توی شبیه ساز کامل جواب میده
    ولی موقعی در عمل اونو run میکنم اجرا نمیشه
    مشکل برنامه با دو تا خط هست که توی حلقه while
    برنامه هم طوری نوشتم که اگه از اون خط رد شد عدد 0 رو روی tft نمایش بده
    موقعی اون خط کامنت میشه 0 نمایش داده میشه ولی موقعی اون خط کامنت نیست روی tft هیچی نمایش نمیده
    برنامه رو میذارم اگه میشه هر کس که کار کرده بگه مشکلش کجاست
    کد:
    #include <at91sam7x256.h>
    #include <delay.h>
    #include <TFTLCD.h>
    #include <stdio.h>
     
    char PORTRAIT = 0;
    char data;
    char LCD_Show[10];
    
    int main(){
    	
    	tftlcd_init();
    			
    //I2c Configuration	PIO
     *AT91C_PIOA_PDR = (1<<10 | 1<<11);					  
     *AT91C_PIOA_ASR = (1<<10 | 1<<11);				    
     *AT91C_PIOA_MDER = (1<<10 | 1<<11);					  
     *AT91C_PIOA_PPUER = (1<<10 | 1<<11);
     *AT91C_PMC_PCER = (1<<9);
    	
    //I2c Configuration 
     *AT91C_TWI_CWGR = 0x00017676;	
     *AT91C_TWI_CR =1<<2;
    	
     *AT91C_TWI_MMR = 0x3C0100;//Device Address(Compass) = 0x3C
     *AT91C_TWI_IADR = 0x00;
     *AT91C_TWI_THR = 0x71;
     while((*AT91C_TWI_SR & 0x4) == 0);
     tftlcd_putchar('0',BLUE,GREEN,1);
     while ((*AT91C_TWI_SR & 0x1) == 0);
     
    	
     *AT91C_TWI_MMR = 0x3C0100;//Device Address(Compass) = 0x3C 
     *AT91C_TWI_IADR = 0x01;
     *AT91C_TWI_THR = 0xA0;
     while((*AT91C_TWI_SR & 0x4) == 0);	
     			  
     while ((*AT91C_TWI_SR & 0x1) == 0);
     
     *AT91C_TWI_MMR = 0x3C0100;//Device Address(Compass) = 0x3C
     *AT91C_TWI_IADR = 0x02;
     *AT91C_TWI_THR = 0x01;
     while((*AT91C_TWI_SR & 0x4) == 0);				  //(14)
     while ((*AT91C_TWI_SR & 0x1) == 0);
     tftlcd_putchar('1',BLUE,GREEN,1);
    	
    	while(1){
    		
     *AT91C_TWI_MMR = 0x3D1100;			
     *AT91C_TWI_IADR = 0x06;	
    	*AT91C_TWI_CR =0x3;
    	tftlcd_putchar('2',BLUE,GREEN,1);
    		
     while((*AT91C_TWI_SR & 0x2) == 0);
     data=*AT91C_TWI_RHR;
    	tftlcd_putchar('3',BLUE,GREEN,1);
     		
     while((*AT91C_TWI_SR & 0x1) == 0);	
     delay_ms(10);
     tftlcd_putchar('4',BLUE,GREEN,1);		
    			
     sprintf(LCD_Show,"%d",data);
     tftlcd_puts(LCD_Show,BLUE,GREEN,1);
     delay_ms(1000);	
     tftlcd_putchar('5',BLUE,GREEN,1);
    		
     *AT91C_TWI_MMR = 0x3C0100;//Device Address(Compass) = 0x3C
     *AT91C_TWI_IADR = 0x03;
    		
    	}	
    }
    ممنون
لطفا صبر کنید...
X