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

 
 
> WDTimer, Запустил, а как остановить?
qulik
сообщение Jun 18 2009, 22:15
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 2-04-08
Из: Санкт-Петербург
Пользователь №: 36 424



Доброго вечера!
Заметил такую особенность: при "небольшом" загрязнении между контактами TX и RX (видимо электрический контакт появился), функция gets() безнадежно зависла. Подумал, что хорошо бы запустить перед началом gets() сторожевой таймер, который сбросит контроллер в случае зависания, мало ли чего. WDT запустил путем записи в его регистр сначала комбинации битов, разрешающих изменение режима WDT, а потом записал нужное значение. Через положеные 8 секунд произошол сброс контроллера. Попробовал остановить WDT путем записи в его регистр 0x00. Но эффекта не последовало, произошел сброс... Что делать?!?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
qulik
сообщение Jun 20 2009, 21:52
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 2-04-08
Из: Санкт-Петербург
Пользователь №: 36 424



Да, соглашусь со всем! gets() "убъет" кучу времени, да и надежность никакая. Спасибо за рекомендации! smile.gif А драйвер для считывания строки по одному символу я попробую свой сделать. Хочется разобраться до конца.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 20 2009, 23:23
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(qulik @ Jun 21 2009, 01:52) *
Да, соглашусь со всем! gets() "убъет" кучу времени, да и надежность никакая. Спасибо за рекомендации!


Совсем запугали бедного Кулика smile.gif. Делать так, как он вознамерился - можно! Только никакая gets() тут не нужна, хватай символ из UDR1 - вот и вся процедура получения байта. Обычно, байтики, схваченные в прерывании кладут друг за дружкой в строку до тех пор, пока очередным байтом не окажется "конец строки" (Enter). Этот символ можно в строку не класть, а вместо этого заняться ее анализом и исполнением того, что эта строка означает.
Go to the top of the page
 
+Quote Post
qulik
сообщение Jun 21 2009, 12:28
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 2-04-08
Из: Санкт-Петербург
Пользователь №: 36 424



Цитата(Xenia @ Jun 21 2009, 03:23) *
Совсем запугали бедного Кулика smile.gif. Делать так, как он вознамерился - можно! Только никакая gets() тут не нужна, хватай символ из UDR1 - вот и вся процедура получения байта. Обычно, байтики, схваченные в прерывании кладут друг за дружкой в строку до тех пор, пока очередным байтом не окажется "конец строки" (Enter). Этот символ можно в строку не класть, а вместо этого заняться ее анализом и исполнением того, что эта строка означает.


Принцип получения строки по одному символу достаточно прост. А gets() я хотел применить, что бы текст программы сократить. Но после обсуждения понял, что лучше таки по одному символу принимать. smile.gif
А вот по поводу символа конца строки. передавать его все равно нужно, так что лучше сохранить.

Принимаемая строка - это условность (для универсальности программы). Примимается один символ и в зависимости от его значения принимается решение. А вот передавать по USART нужно строку. Передается она при помощи puts(). Возникает мысль передавать тоже по символу smile.gif , но как на это среагирует копьютер? Тоже надо драйвер по прерыванию собрать, думаю справлюсь...

Сообщение отредактировал qulik - Jun 21 2009, 12:29
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 21 2009, 13:58
Сообщение #5


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(qulik @ Jun 21 2009, 16:28) *
Принимаемая строка - это условность (для универсальности программы). Принимается один символ и в зависимости от его значения принимается решение.


По одному символу, как правило, принять решение не удается. Приходится прочесть слово целиком, чтобы понять, что оно означает. И вообще, символ конца строки (Enter) это не просто символ, а символ ПОДТВЕРЖДЕНИЯ того, что бы сказано. До его появления программа не имеет права начать выполнение команды, даже если смысл ее вполне понятен. Например, компьютеру нельзя выполнять "FORMAT C:" smile.gif, пока не нажат Enter. А вы вознамерились по одному символу принимать решение.

Цитата(qulik @ Jun 21 2009, 16:28) *
А вот передавать по USART нужно строку. Передается она при помощи puts(). Возникает мысль передавать тоже по символу smile.gif , но как на это среагирует копьютер? Тоже надо драйвер по прерыванию собрать, думаю справлюсь...


Компьютеру все равно, как было передано - отдельными символами или строкой, поскольку на физическом уровне в обоих случаях прием и передача ведутся по символьно. Точно так же и AVRка получает прерывания (если их разрешить) при поступлении очередного байта, не зная того, gets'ом или getchar'ом отправлялась посылка.

Сообщение отредактировал Xenia - Jun 21 2009, 13:59
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- qulik   WDTimer   Jun 18 2009, 22:15
- - Xenia   Цитата(qulik @ Jun 19 2009, 02:15) WDT за...   Jun 18 2009, 22:28
|- - qulik   Цитата(Xenia @ Jun 19 2009, 02:28) А вы п...   Jun 19 2009, 21:13
||- - Qwertty   Цитата(qulik @ Jun 20 2009, 01:13) Ну дак...   Jun 19 2009, 22:51
|- - singlskv   Цитата(Xenia @ Jun 19 2009, 02:28) А вы п...   Jun 19 2009, 21:20
|- - qulik   Цитата(singlskv @ Jun 20 2009, 01:20) Ну ...   Jun 19 2009, 21:58
|- - Xenia   Цитата(singlskv @ Jun 20 2009, 01:20) ВСЕ...   Jun 19 2009, 22:00
|- - singlskv   Цитата(Xenia @ Jun 20 2009, 02:00) - межд...   Jun 19 2009, 22:13
|- - Xenia   Цитата(singlskv @ Jun 20 2009, 02:09) Оди...   Jun 19 2009, 22:14
|- - singlskv   Цитата(Xenia @ Jun 20 2009, 02:14) Конста...   Jun 19 2009, 22:21
|- - Xenia   Цитата(singlskv @ Jun 20 2009, 02:21) Вы ...   Jun 19 2009, 22:28
- - Qwertty   Цитата(qulik @ Jun 19 2009, 02:15) Доброг...   Jun 19 2009, 00:41
- - qulik   А что меняет выбор варианта оптимизации? В AVR Stu...   Jun 19 2009, 22:18
|- - singlskv   Цитата(qulik @ Jun 20 2009, 02:18) А что ...   Jun 19 2009, 22:35
|- - Xenia   Цитата(qulik @ Jun 20 2009, 02:18) Спасиб...   Jun 19 2009, 22:36
|- - singlskv   Цитата(Xenia @ Jun 20 2009, 02:36) Дольше...   Jun 19 2009, 22:48
|- - qulik   Цитата(Xenia @ Jun 21 2009, 17:58) По одн...   Jun 24 2009, 17:06
|- - Xenia   Цитата(qulik @ Jun 24 2009, 21:06) По кра...   Jun 24 2009, 23:11
|- - qulik   Цитата(Xenia @ Jun 25 2009, 03:11) ...   Jun 25 2009, 17:08
- - Qwertty   Вообще то неплохо контролировать правильность посы...   Jun 25 2009, 01:40


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:47
Рейтинг@Mail.ru


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