реклама на сайте
подробности

 
 
> twi atmega 128, twi atmega 128
Oleg_DI
сообщение Jan 11 2009, 16:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



помогите разобраться с twi функция работает на 16 меге а на 128 jtag выдаёт ошибку условия старт.Аппаратно на двух разных платах тоже самое.
TWI_BIT_RATE= 1; //Bit Rate 100 kBit/s
TWI_STATUS = 0x00; //Prescaler 1:1
TWI_CONTROL = 0x04; //enable twi
TWAR = 0x0d;
старт TWCR = 0xa4;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oleg_DI
сообщение Jan 11 2009, 17:51
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



Да фьюзы соответствуют
//===================================================
//Error code I2C Bus
//===================================================
#define ERROR_START 0x10
#define ERROR_MASTER_ASK 0x11
#define ERROR_MT_DATA_ASK 0x12
#define ERROR_START_REPEAT 0x13
#define ERROR_ASK_READ 0x14
#define ERROR_ASK_DATA_READ 0x15
#define NO_ERROR 0x00
//===================================================
#define HARD_START_CONDITION 0xA4
#define HARD_STOP_CONDITION 0x94
#define HARD_RESTORE_REG 0x84
#define HARD_RESTORE_ASK 0xC4

//================================================================
// Инициализация RTC
//================================================================
void hardRTCInit(void)
{ unsigned char r;
r = i2cReadBlock(ADDRES, 0x0E, sizeof(testDS), (unsigned char *)&testDS);
r = 0x40;
i2cWriteBlock(ADDRES, 0x0E, 1, &r);
r = i2cReadBlock(ADDRES, 0x02, sizeof(testDS), (unsigned char *)&testDS);
}

//================================================================
//Read block data from I2C Bus
//Чтение блока данных по шине I2C
//================================================================
unsigned char i2cReadBlock(unsigned char addres, unsigned char subaddres, unsigned char size, unsigned char *data)
{
static unsigned char _size;
_size = size;
//Start condition
TWCR = HARD_START_CONDITION;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _START)
{
TWCR = HARD_STOP_CONDITION; return ERROR_START;
}
//Send addres
TWDR = addres;
TWCR = HARD_RESTORE_REG;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _MT_SLA_ACK)
{
TWCR = HARD_STOP_CONDITION; return ERROR_ASK_READ;
}
//Send subaddres
TWDR = subaddres;
TWCR = HARD_RESTORE_REG;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _MT_DATA_ACK)
{
TWCR = HARD_STOP_CONDITION; return ERROR_MT_DATA_ASK;
}
//Start condition
TWCR = HARD_START_CONDITION;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _START_REPEAT)
{ TWCR = HARD_STOP_CONDITION; return ERROR_START;
}
//Send addres
TWDR = addres+1;
TWCR = HARD_RESTORE_REG;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _MT_SLA_ACK_READ)
{ TWCR = HARD_STOP_CONDITION; return ERROR_ASK_READ;
}
//Recive data
TWCR = HARD_RESTORE_ASK;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _MT_DATA_ACK_READ)
{ TWCR = HARD_STOP_CONDITION; return ERROR_ASK_DATA_READ;
}
if(size)
{ *data = TWDR;
++data;
_size--;
}
else _size = TWDR;
while(_size--)
{ if(!_size)
{//Send one byte of block
TWCR = HARD_RESTORE_REG;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _MT_DATA_NOT_ACK_READ)
{ TWCR = HARD_STOP_CONDITION; return ERROR_ASK_DATA_READ;
}
*data = TWDR;
++data;
}
else
{ TWCR = HARD_RESTORE_ASK;
while (!(TWCR & 0x80));
if ((TWSR & 0xF8) != _MT_DATA_ACK_READ)
{ TWCR = HARD_STOP_CONDITION; return ERROR_ASK_DATA_READ;
}
*data = TWDR;
++data;
}
}
TWCR = HARD_STOP_CONDITION;
return NO_ERROR;
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_DI   twi atmega 128   Jan 11 2009, 16:42
- - korobov_michael   Цитата(Oleg_DI @ Jan 11 2009, 18:42) TWI_...   Jan 11 2009, 17:12
- - Oleg_DI   мастер //TWSR=0x00; //TWBR=0x42; //TWAR=0x0d; //T...   Jan 11 2009, 17:32
|- - korobov_michael   1. На всякий случай, фьюзы соответствуют друг друг...   Jan 11 2009, 17:41
- - Александр Куличок   Внешние подтяжки присутствуют? SDA, SCL на землю н...   Jan 11 2009, 17:59
- - Oleg_DI   резисторы 4.7к . Две разные платы с мегой 128 не ...   Jan 11 2009, 18:07
- - Александр Куличок   Проверьте на всякий случай, все ли ножки питания/м...   Jan 11 2009, 18:11
- - Oleg_DI   Первый старт Я думаю что он его не формирует, пров...   Jan 11 2009, 18:25
- - Александр Куличок   А что находится в TWSR при этом? P.S. Частая ошиб...   Jan 11 2009, 18:36
- - Oleg_DI   находится в TWSR=0 TWСR=0x94 ...   Jan 11 2009, 19:09
- - Александр Куличок   А что у Вас в TWAR?? случайно не адрес устройства,...   Jan 11 2009, 19:49
- - Oleg_DI   при первом проходе сразу после инициализации twi   Jan 11 2009, 20:13
- - Александр Куличок   Цитатапри первом проходе сразу после инициализации...   Jan 11 2009, 20:59
- - Oleg_DI   Разобрался по умолчанию в меге 128 стоит запрет вн...   Jan 12 2009, 04:19
- - kanzler   Цитата(Oleg_DI @ Jan 12 2009, 09:19) Разо...   Jan 12 2009, 05:26
- - korobov_michael   Цитата(Oleg_DI @ Jan 12 2009, 06:19) по у...   Jan 12 2009, 06:37
- - kanzler   Цитата(korobov_michael @ Jan 12 2009, 11...   Jan 12 2009, 07:11


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016