سلام
من میخوام با i2c رجیستر های دروبین OV7670+AL422 FIFO بخونم ولی موفق نمیشم کد زیر رو زدم
به نظرتون مشکل از کجا میتونه باشه؟
من فقط ۴ تا پایه VCC و GND و SCL و SDA رو وصل کردم و با باقی پایه ها کاری نداشتم
پایه های SDA و SCL رو هم با مقاومت ۲.۲ کیلو اهم به ۳.۳ ولت وصل کردم
[PHP]#include <AT91SAM7X256.H>
#include <lib_at91sam7x256.h>
#include <stdio.h>
#include <pio.h>
#include "LCD_N96/TFTLCD.h"
#include "LCD_N96/LCD_CLINE.h"
#include "tdelay/tdelay.h"
#include "SWI2C/I2CSW.h"
unsigned char Read_OV7670_Reg(unsigned char regID, unsigned char *regDat)
{
i2csw_start();
if( i2csw_write(0x42)==0 )
{
i2csw_stop();
return(10);
}
delay_us(100);
if( i2csw_write(regID)==0 )
{
i2csw_stop();
return(20);
}
i2csw_stop();
delay_us(100);
i2csw_start();
if( i2csw_write(0x43)==0 )
{
i2csw_stop();
return(30);
}
delay_us(100);
*regDat=i2csw_read(NACK);
i2csw_stop();
return (1);
}
int main(void)
{
unsigned char regData=0,result;
init_delay();
tftlcd_init();
tftlcd_Fill(BLACK);
i2csw_init();
result = Read_OV7670_Reg(0x0A,®Data);
lprintf("\n Result = %d",result);
lprintf("\n regData = %d",regData);
while(1);
}[/PHP]خروجی ای که بم میده
[PHP]
Result = 10
regData = 0[/PHP]