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

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

Ответ: (+)

Отправлено Vladimir Ljaschko 06 декабря 2007 г. 11:00
В ответ на: Ответ: отправлено <font color=gray>maximus01</font> 06 декабря 2007 г. 10:42

Несколько соображений.
Видимо, блокировка прерываний - особенность используемого компилятора, потому что у меня на IAR для AVR и MSP все нормально.
Если свой парсер команд, то scanf неудобно.
Делать scanf только для настроечного интерфейса? - мало смысла.


Обычно вначале выбирают протокол передачи, типа wake, в прерываниях складывают принятые байты в буфер, контролируют контрольную сумму, и потом разбирают принятый буфер. Это для команд.

Для настроечного интерфейса у меня передаются только цифры, и я делал тупо свой "scanf" для положительного числа из макс 4 цифр:
uchar GetPosValue(char old_value)
[pre]
{ char i;
char x;
int result=0;

for (i=0; i<4; i++) {
x= getchar();
if ((x=='\r')|(x==' '))
{ if (i==0) return(old_value);
else break;}
if ((x<0x30)|(x>0x39)) { printf("\rerr\r"); return(old_value);}
else result=((result*10)+(x-0x30));
}
if (result>255) { printf("\rtoo much"); return(old_value);}

else return((char)result);
}
[/pre]



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

Ответы


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

Сообщение:

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

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

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

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