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

 
 
> Таймер, Непонятно, как можно так писать?
T&D
сообщение Jan 31 2007, 14:27
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 31-01-07
Пользователь №: 24 905



Вот фрагмент кода

TimeLoop:
out TCNT0, temp ;Сохраняем содержимое регистра таймера счетчика в temp
cp temp, 80 ; Сравниваем это содержимое с 80
brne TimeLoop ; Если не равно, то возвращаемся к началу цикла


Вот мне непонятна одна вещь:
каждая команда выполняется за один такт (какие-то команды могут выполняться за 2 такта).
Один такт и в регистре таймера счетчика оказывается 1 (предполагается, что делитель частоты не используется).
Следоваетльно в цикле описанном выше можно проскочить момент, когда в регистре таймера счетчика будет 80. Может, я что-то неправильно здесь понимаю?
Конечно, по мне гораздо удобнее воспользоваться прерываниями.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
T&D
сообщение Feb 1 2007, 12:53
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 31-01-07
Пользователь №: 24 905



Спасибо за ответы. Можно ещё один вопрос задать? Вопрос про радиоуправление. Вот есть два микроконтроллера. На одном кнопки, а на другом светодиоды. Нажимаем кнопку или кнопки - формируется посылка по UART, все эти данные каким-то образом должны преобразоваться в электромагнитное колебание, передаваться на принимающее устройство и преобразовываться обратно, поступая на UART другого контроллера, на нем должны зажечься соответствующие светодиоды.
Предположим, что имеются две рации или два модуля (передающий и принимающий), так что с этим проблем нет.
Но я до конца не понимаю следующую вещь.
Вот от первого контроллера по UART пошли данные (низкая частота), потом происходит модуляция низкой частоты высокой, потом идет передача, прием, происходит обратный процесс - демодуляция, и низкая частота поступает на UART второго контроллера. Я правильно понимаю этот процесс или не совсем?
Ведь здесь аналоговый сигнал и боюсь, что на UART второго контроллера его не подашь, его надо на АЦП направлять... Вот этот вопрос мне не ясен.
Вопрос про таймер был связан с тем, что нужно будет в этой задаче через определенные промежутки времени (чтобы не было дребезга контактов) определять состояние кнопок (нажата или нет).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 1 2007, 13:06
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(T&D @ Feb 1 2007, 11:53) *
Я правильно понимаю этот процесс или не совсем?

Ведь здесь аналоговый сигнал и боюсь, что на UART второго контроллера его не подашь

Вот тут правильно. UART может "зацепиться" за шум в качестве стартового бита и пропустить настоящий стартовый бит.
Цитата(T&D @ Feb 1 2007, 11:53) *
, его надо на АЦП направлять...
А это не обязательно - зависит от того, насколько зашумлен канал, какая достоверность передачи вам нужна, от протокола (есть ли повторы), от количества вычислительных ресурсов, которые вы способны отдать на декодирование. Тут решений море разных. Можно использовать эфирный протокол типа манчестера и декодировать компаратором и таймером, как было сделано при чтении данных с ленты в "Радио86-РК" или "синклере".
ну и
Цитата(T&D @ Feb 1 2007, 11:53) *
формируется посылка по UART
соответственно тоже отпадает.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
T&D
сообщение Feb 1 2007, 13:32
Сообщение #4





Группа: Новичок
Сообщений: 8
Регистрация: 31-01-07
Пользователь №: 24 905



Цитата(Сергей Борщ @ Feb 1 2007, 13:06) *
А это не обязательно - зависит от того, насколько зашумлен канал, какая достоверность передачи вам нужна, от протокола (есть ли повторы), от количества вычислительных ресурсов, которые вы способны отдать на декодирование. Тут решений море разных. Можно использовать эфирный протокол типа манчестера и декодировать компаратором и таймером, как было сделано при чтении данных с ленты в "Радио86-РК" или "синклере".

Мигание светодиодов некритично, поэтому достоверность передачине слишком высокая нужна, но, конечно, хотелось бы, чтобы мигали правильно в большинстве случаев. Можно, конечно же делать и подтверждения насколько правильно был принят сигнал.
Предположим, что частота на которой происходит передача и прием сигнала не зашумлена и имеются две фирменные рации.
По Вашему мнению в этой ситуации можно обойтись одним только модулятором/демодулятором, то есть на одной стороне модулировать цифровой сигнал, а на другой стороне производить демодуляцию в надежде получить исходный цифровой сигнал? Или же так никто не делает и всегда производится предварительное декодирование такого сигнала?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 1 2007, 16:00
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(T&D @ Feb 1 2007, 12:32) *
Мигание светодиодов некритично, поэтому достоверность передачине слишком высокая нужна, но, конечно, хотелось бы, чтобы мигали правильно в большинстве случаев.
Хм. С таким критерием пока не сталкивался smile.gif
Цитата(T&D @ Feb 1 2007, 12:32) *
Можно, конечно же делать и подтверждения насколько правильно был принят сигнал.
Предположим, что частота на которой происходит передача и прием сигнала не зашумлена и имеются две фирменные рации.

1)В эфире всегда есть шумы.
2)Радиостанция не может всегда находиться на передаче. Будут паузы, в паузах будут шумы.
Цитата(T&D @ Feb 1 2007, 12:32) *
По Вашему мнению в этой ситуации можно обойтись одним только модулятором/демодулятором, то есть на одной стороне модулировать цифровой сигнал, а на другой стороне производить демодуляцию в надежде получить исходный цифровой сигнал? Или же так никто не делает и всегда производится предварительное декодирование такого сигнала?
Не совсем понял вопроса. Односторонняя передача используется довольно широко. Теоретически подавать в радиостанцию и снимать цифровой сигнал можно, но сигнал должен обладать определенными свойствами - например не должен содержать длительных периодов из одних нулей или единиц, позволять выделить начало каждого бита. В качестве занимательного чтива могу предложить Б. Скляр "Цифровая связь". И продолжить тему наверное лучше в другом форуме - она к AVR практически не имеет отношения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- T&D   Таймер   Jan 31 2007, 14:27
- - Wild007   ЦитатаНепонятно, как можно так писать? А ...   Jan 31 2007, 14:39
- - prottoss   Цитата(T&D @ Jan 31 2007, 18:27) out ...   Jan 31 2007, 14:40
|- - T&D   Цитата(prottoss @ Jan 31 2007, 14:40) Цит...   Jan 31 2007, 14:52
- - Wild007   ЦитатаЕсть вероятность, что мы при таком написании...   Jan 31 2007, 15:06
- - add   Да...уф.. Задача собственно несовсем понятна, даже...   Jan 31 2007, 15:10
|- - T&D   Цитата(add @ Jan 31 2007, 15:10) Да...уф....   Jan 31 2007, 15:23
- - add   ЦитатаЭтот пример не мной придуман, он взят из кни...   Jan 31 2007, 15:27
|- - T&D   Цитата(add @ Jan 31 2007, 15:27) ЦитатаЭт...   Jan 31 2007, 15:36
- - Wild007   Может автор ЦитатаМортона "Микроконтроллеры A...   Jan 31 2007, 15:36
- - SpiritDance   Ржал. Опуфуительная книжка должно быть. Навроде ка...   Jan 31 2007, 15:41
|- - defunct   Цитата(SpiritDance @ Jan 31 2007, 14:41) ...   Jan 31 2007, 15:55
- - add   ЦитатаВсе остальные строчки полностью переписаны и...   Jan 31 2007, 15:49
|- - IgorKossak   Цитата(add @ Jan 31 2007, 14:49) ЦитатаВс...   Jan 31 2007, 16:45
- - Wild007   ЦитатаPS остерегайтесь вводных курсов, читайте сер...   Jan 31 2007, 16:57
|- - zltigo   Цитата(Wild007 @ Jan 31 2007, 15:57) пото...   Jan 31 2007, 18:59
- - smk   Все философское хорошо, но выучить ассеблер нужно....   Jan 31 2007, 21:03
|- - bodja74   Цитата(smk @ Jan 31 2007, 21:03) Все фило...   Jan 31 2007, 23:49
||- - =GM=   Цитата(bodja74 @ Jan 31 2007, 20:49) Цита...   Feb 1 2007, 18:55
|- - singlskv   Цитата(smk @ Jan 31 2007, 21:03) Все фило...   Feb 1 2007, 01:39
- - SasaVitebsk   Цитата(T&D @ Jan 31 2007, 15:27) Вот ...   Feb 1 2007, 00:08
- - bodja74   Если цикл сравнения проходит быстрее клока таймера...   Feb 1 2007, 00:41
- - add   Цитатато можно переписать след. образом Уважаемый ...   Feb 1 2007, 09:51
|- - SasaVitebsk   Цитата(add @ Feb 1 2007, 10:51) Цитатато ...   Feb 1 2007, 13:54
|- - bodja74   Цитата(add @ Feb 1 2007, 09:51) Цитатаbod...   Feb 1 2007, 15:50
|- - T&D   Цитата(bodja74 @ Feb 1 2007, 15:50) Обьяс...   Feb 1 2007, 16:12
||- - defunct   Цитата(T&D @ Feb 1 2007, 15:12) А есл...   Feb 1 2007, 17:17
|- - IgorKossak   Цитата(bodja74 @ Feb 1 2007, 14:50) Обьяс...   Feb 1 2007, 16:39
|- - bodja74   Цитата(IgorKossak @ Feb 1 2007, 16:39) Кт...   Feb 1 2007, 20:23
|- - =GM=   Цитата(bodja74 @ Feb 1 2007, 17:23) 2GM ...   Feb 1 2007, 20:52
|- - bodja74   Цитата(=GM= @ Feb 1 2007, 20:52) Как вы с...   Feb 1 2007, 21:44
|- - =GM=   Цитата(bodja74 @ Feb 1 2007, 18:44) Цитат...   Feb 1 2007, 23:38
- - add   Собственно фрагмент книги, из-за которого создана ...   Feb 2 2007, 10:13
- - Wild007   Цитата(add @ Feb 2 2007, 09:13) Собственн...   Feb 2 2007, 10:17


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:20
Рейтинг@Mail.ru


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