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

 
 
> Помогите добить TWI, Или он добьет меня
ingord
сообщение Jan 5 2008, 23:45
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 18-09-07
Пользователь №: 30 627



Здравствуйте! Две AtMega, одна - Master, другая Slave. За основу взял программу на Си, предложенную, не соврать бы, haker fox'ом. Slave корябаю сам. TWI аппаратный. Проблемы:
1. При формировании Master'ом СТАРТ прерывания у Slave возникают на каждый второй запуск. Т.е., первый СТАРТ прошел (импульсы на шинах проскакивают, пробовал менять их длительнсть в широких пределах) - прерывания нет, на второй СТАРТ прерывание возникает, на третий - тишина, четвертый - есть и т.д.
2. При формировании СТАРТ код статуса Master не равен 0х08.
Ну а дальше не смотрел. Добиться бы для начала хоть СТАРТ правильно делать.
Помогите, кто может.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
artemm
сообщение Jan 15 2008, 12:42
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 23-07-07
Из: Украина, г. Сумы
Пользователь №: 29 306



От пример слейва на иаре. У меня работает

#pragma vector=TWI_vect
__interrupt void TWI(void)
{
switch (TWSR & 0xF8)
{
case TWI_SRX_ADR_ACK_M_ARB_LOST:
case TWI_SRX_ADR_ACK:
{
TWCR = (TWCR&0x0F)|(1<<TWINT)|(1<<TWEA); break;
}
case TWI_SRX_ADR_DATA_NACK:
case TWI_SRX_ADR_DATA_ACK:
{
PORTD = TWDR;
TWCR = (TWCR&0x0F)|(1<<TWINT)|(1<<TWEA); break;
}
case TWI_SRX_STOP_RESTART:
{

}
default:
{
TWCR = (TWCR&0x0F)|(1<<TWINT)|(1<<TWEA); break;
}
}
}


void TWI_Initialization()
{
TWDR = 0xFF;
TWBR = 0xF0;
TWSR = 0x03;
TWAR = 0x14; //(адрес 0x0A)
TWCR = (1<<TWINT)|(1<<TWIE)|(1<<TWEN)|(1<<TWEA);
}

int main(void)
{
TWI_Initialization();
__enable_interrupt();
DDRD = 0xFF;
PORTD = 0xFF;

while(1)
{
}
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 16:34
Рейтинг@Mail.ru


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