Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ: Код обработчика прерывания.

Отправлено bilbord2006 14 августа 2007 г. 13:23
В ответ на: Это нечитабельно - движок конфы сожрал половину кода. Перед кодом поставь <pre>, после кода </pre>, каждый оператор "<<" и ">>" отдели от операндов пробелом, в каждую пустую строку добавь по пробелу, и запости все заново отправлено =AVR= 14 августа 2007 г. 12:54


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 << TWINT)|(1 << TWEN)|(1 << TWEA)|(1 << TWIE));
flag_len=0;
break;
}
case 0x38: //lost prioritet
{
err_flag=0;
flag_len=0;
TWCR = ((1 << TWINT)|(1 << TWEN)|(1 << TWSTO)|(1 << TWIE));
break;
}
case 0x40:
{
if(err_flag==2)
{
goto pp;
}
else
{
err_flag = 2;
TWCR = ((1 << TWINT)|(1 << TWEN)|(1 << TWEA)|(1 << TWIE));
idx=0;
flag_len=0;
}
break;
}
case 0x48:
case 0x00:
{
pp:
err_flag = 0x10;
TWCR = ((1 << TWINT)|(1 << TWSTO)|(1 << TWEN)|(1 << TWIE));
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 << TWINT)|(1 << TWEA)|(1 << TWEN)|(1 << TWIE));
}
else
{
TWCR = ((1 << TWINT)|(1 << TWEN)|(1 << TWIE));
}
}
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 << TWINT)|(1 << TWSTO)|(1 << TWEN)|(1 << TWIE));
}
}
}
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 90:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru