Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Ответ: Код обработчика прерывания. Все дело в том, что не выполняется вход, т.е. не идут символы через UART ИМЕННО ИЗ ЭТОЙ части кода.
Отправлено
bilbord2006
14 августа 2007 г. 12:24
В ответ на:
Телепаты в отпуске. Код "разрешения" и код обработчика - в студию!
отправлено =AVR= 14 августа 2007 г. 12:14
ISR(TWI_vect)
{
status = (TWSR & 0xFC);
UART_SEND(0xFF); UART_SEND(status);
switch (status)
{
case 0x08:
case 0x10:
{
err_flag = 1;//START OK
TWDR = (0xE0 | ((adr<<1) & 0x1F));
TWDR |= BIT(0);//SLA-R
TWCR = ((1<
flag_len=0;
break;
}
case 0x38: //lost prioritet
{
err_flag=0;
flag_len=0;
TWCR = ((1<
break;
}
case 0x40:
{
if(err_flag==2)
{
goto pp;
}
else
{
err_flag = 2;
TWCR = ((1<
idx=0;
flag_len=0;
}
break;
}
case 0x48:
case 0x00:
{
pp:
err_flag = 0x10;
TWCR = ((1<
idx=0;
flag_len=0;
break;
}
case 0x50:
{
if(flag_len==0)
{
max_len=TWDR;
flag_len=1;
goto me;
}
else
{
rx_buff[idx]=TWDR;
idx++;
if(idx!=(max_len-1))
{
me:
TWCR = ((1<
}
else
{
TWCR = ((1<
}
}
break;
}
case 0x58:
{
if((err_flag & BIT(1)) && (flag_len==1))
{
rx_buff[idx]=TWDR;
idx++;
if(idx==max_len)
{
pp=0;
for(kkk=0;kkk
{
pp^=rx_buff[kkk];
}
if(pp!=2)
{
err_flag = 0x20;
goto err_data1;
}
err_flag = 0x04;
}
else
{
err_data:
err_flag = 0x08;
}
err_data1:
TWCR = ((1<
}
}
}
}
Составить ответ
|
Вернуться на конференцию
Ответы
Это нечитабельно - движок конфы сожрал половину кода. Перед кодом поставь <pre>, после кода </pre>, каждый оператор "<<" и ">>" отдели от операндов пробелом, в каждую пустую строку добавь по пробелу, и запости все заново
—
=AVR=
(14.08.2007 12:54:9
80.92.96.19
,
пустое
)
Ответ: Код обработчика прерывания.
—
bilbord2006
(14.08.2007 13:23:27
90.150.118.36
, 2943 байт)
Изящное решение. Из прерывания УАРТА дважды отправлять байт. В этом что-то есть.
—
Неспящие с Трезором
(14.08.2007 13:44:45
217.30.255.215
,
пустое
)
Ответ: Где вы видите прерывание UART? Я не вижу. Вместо отправки байтов обработчике можно организовать переключение состояния светодиода, но это, как и следовало ожидать, ничего нового не дает.
—
bilbord2006
(14.08.2007 14:10:4
90.150.118.36
,
пустое
)
Инициализацю покажи хотя бы. Блин, плоскогубцы знаешь? вот так и приходится тянуть из тебя код.
—
Неспящие с Трезором
(14.08.2007 14:46:10
217.30.255.215
,
пустое
)
Дык, мож он байт в буфер кладет?
—
RUAL
(14.08.2007 14:00:10
217.20.82.57
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 2 на три:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru