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

 
 
> I2C+ATtiny2313+UART, Как связать при помощи ATtiny2313 I2C с RS-232
MichaZ
сообщение Jan 27 2006, 13:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-10-05
Пользователь №: 9 886



Доброго дня всем!

Помогите с следующей проблемой.
Возникла необходимость сделать 4 порта RS-232 к которым будут обращаться по I2C.
Для реализации на 2313 (там USI из которого делаю TWI) пользуюсь аппнотами и программами Atmel.
В отдельности прием и передача работает,если на слейве в цикле пишу следующее:

для приема(относительно I2C)
if(USI_TWI_Data_In_Receive_Buffer())
{
temp=USI_TWI_Receive_Byte();
USART_interrupt_transmit(temp2);
}
для передачи
if(DataInUARTReceiveBuffer())
{
temp=USART_interrupt_receive();
USI_TWI_Transmit_Byte(temp);
}

необходимо сделать управление,чтобы можно было писать на уарт и читать с него
делаю следующее:
for(;;)
{
if(USI_TWI_Data_In_Receive_Buffer())
{
temp=USI_TWI_Receive_Byte(); - читаю команду,что слейву делать
}
switch (temp) - вибираю необходимое действие
{
case TWI_MASTER_WRITE_4BYTE_UART: - пробую писать на уарт 4 байта
for(i=0;i<3;i++)
{
temp2=USI_TWI_Receive_Byte();
USART_interrupt_transmit(temp2);
}
break;

case....

}
}
то есть анализирую байт после адреса как команду что слейву делать.
мастером шлю:
первая посылка:
адрес и код команды TWI_MASTER_WRITE_4BYTE_UART
вторая посылка:
адрес,01,02,03,04
но в терминале вижу

01 02 04...01 02 04 так далее

скорость на уарте низкая-4800
на I2C <100 khz

буфер и со стороны I2C и со стороны уарта.(16 байт)

что я не так делаю?

премного благодарен Всем,кто отзовется

Сообщение отредактировал MichaZ - Jan 27 2006, 13:29
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:49
Рейтинг@Mail.ru


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