با سلام خدمت تمامی اساتید
من یه برنامه برای قطب نما نوشتم که توی شبیه ساز کامل جواب میده
ولی موقعی در عمل اونو run میکنم اجرا نمیشه
مشکل برنامه با دو تا خط هست که توی حلقه while
برنامه هم طوری نوشتم که اگه از اون خط رد شد عدد 0 رو روی tft نمایش بده
موقعی اون خط کامنت میشه 0 نمایش داده میشه ولی موقعی اون خط کامنت نیست روی tft هیچی نمایش نمیده
برنامه رو میذارم اگه میشه هر کس که کار کرده بگه مشکلش کجاست
ممنون
من یه برنامه برای قطب نما نوشتم که توی شبیه ساز کامل جواب میده
ولی موقعی در عمل اونو 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; } }