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

 
 
> Прочитать передачу
micronano
сообщение Aug 2 2011, 09:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 13-10-10
Пользователь №: 60 133



Добрый день!

Кто-нибудь может подсказать как прочитать передачу некоего интерфейса?
Известна его его скорость и структура.

Пытаюсь по первому биту запускать таймер, и с частотой раз в бит увожу контроллер в прерывание, где считываю значение порта.
Но огромное количество ошибок самого разного плана: сдвиг, чтение 1 вместо 0, чтение 0 вместо 1... Не знаю что делать.

Сигнал прямоугольный, так что дело к коде.

Есть программные алгоритмы приема?

Сообщение отредактировал micronano - Aug 2 2011, 09:58
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Marian
сообщение Aug 2 2011, 17:20
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Нарисуйте, как у вас выглядит лог. "1" и лог. "0", это для того чтобы представлять как они кодируются.
Если сигнал медленный, настройте внешнее прерывание на изменение уровня.
В прерывании запускаете таймер и сохраняете (в массив) длительность импульсов.
Если скорости хватает, походу и декодируете, если нет, декодированием занимаетесь уже приняв всю посылку.

Сообщение отредактировал Marian - Aug 2 2011, 17:24
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 2 2011, 17:31
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Marian @ Aug 2 2011, 21:20) *
В прерывании запускаете таймер и сохраняете (в массив) длительность импульсов.

Это лишнее

Цитата
Чем вам не понравилось слово прямоугольный, не понимаю.

В электронике есть чёткое определение таких сигналов - импульсный сигнал


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Marian
сообщение Aug 2 2011, 17:35
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Цитата(ILYAUL @ Aug 2 2011, 20:31) *
Это лишнее


Я предложил рабочий алгоритм, а выкинув его часть он работать не будет.

"Слово из песни не выкинешь"

Сообщение отредактировал Marian - Aug 2 2011, 17:40
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 2 2011, 17:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Marian @ Aug 2 2011, 21:35) *
А вы что, знаете какая скорость и какая форма сигнала ?

На скорость - вобщем-то наплевать , лишь бы несовпадала с частотой процессора , а форма - прямоугольная. См. начало топика.
Но Вы на верном пути- осталось написать обработчик прерывания, но надо ещё чуть-чуть и поймёте почему это лишнее
Цитата
В прерывании запускаете таймер и сохраняете (в массив) длительность импульсов.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Marian
сообщение Aug 2 2011, 18:54
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Цитата(ILYAUL @ Aug 2 2011, 20:44) *
На скорость - вобщем-то наплевать , лишь бы несовпадала с частотой процессора , а форма - прямоугольная. См. начало топика.
Но Вы на верном пути- осталось написать обработчик прерывания, но надо ещё чуть-чуть и поймёте почему это лишнее

Как раз вся загвоздка в скорости.
Скажем так, чтобы принять сигнал с частотой 100 KHz, проц должен работать на частоте от четырех до десяти раз выше.(если писать на ассемблере, чуть пониже)

Если в прерывании не заниматься декодированием, то есть возможность принимать посылку с долее высокой частотой следования импульсов.




Цитата(ILYAUL @ Aug 2 2011, 20:44) *
а форма - прямоугольная.


Такое название мне тоже не нравиться.
Любой цифровой сигнал будет иметь импульсы прямоугольной формы.

Сигнал прямоугольной формы мне представляется(похоже и другим участникам форума) меандр определенной частоты с заполнением столько та процентов.
Все остальное импульсный сигнал.

Цитата(micronano @ Aug 2 2011, 13:36) *
каждое сообщение (порядка 60 бит), таймер запускаю заново по фронту первого бита, т.ч. врятли за 60 бит накапливается ошибка... Тем более что иногда (очень редко) приходит то, что надо!

Вам, в 12 посте подсказали, что необходима синхронизация.

Посмотрите http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%...%BB%D0%BE%D0%B2

Обратите внимание на Манчестерское кодирование.

Сообщение отредактировал Marian - Aug 2 2011, 18:56
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 2 2011, 18:57
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Marian @ Aug 2 2011, 22:31) *
Как раз вся загвоздка в скорости.
Скажем так, чтобы принять сигнал с частотой 100 KHz, проц должен работать на частоте от четырех до десяти раз выше.(если писать на ассемблере, чуть пониже)

Всё значительно проще ,чем запускать счётчик и что то считать - в прерывании по INITX - достаточно отслеживать фронты- (т.к. из полезного , что нам сообщил топикстартер , это то что начальный уровень лог. 1) - поэтому ждём прерывание по спаду, в прерывании записываем в память zero , и переключаем на прерывание по фронту , получили пишем лог 1 , переключаем на спад фронта и т.д. - Скорость == количеству команд используемых в обработке прерывания , естественно на asm будет выше , т.к. в стек загонять ничего не требуется, если идёт только прием данных.

Но всё это при условии практически идеальной линии - или откуда там этот сигнал поступает


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Marian
сообщение Aug 2 2011, 19:14
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Цитата(ILYAUL @ Aug 2 2011, 21:57) *
Скорость == количеству команд используемых в обработке прерывания

Это не соответствует действительности.
Скорее так :
"Скорость ==" частота проца делить на "количеству команд используемых в обработке прерывания "
Чем меньше команд в прерывании тем выше скорость.

Сообщение отредактировал Marian - Aug 2 2011, 19:16
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- micronano   Прочитать передачу   Aug 2 2011, 09:50
- - Непомнящий Евгений   По идее надо читать несколько раз за бит, а уровен...   Aug 2 2011, 09:57
- - AHTOXA   Цитата(micronano @ Aug 2 2011, 15:50) Пыт...   Aug 2 2011, 10:01
- - kovigor   Цитата(micronano @ Aug 2 2011, 12:50) Кто...   Aug 2 2011, 10:02
- - micronano   Непомнящий Евгений Да, спасибо, как вариант. AHTO...   Aug 2 2011, 10:07
|- - kovigor   Цитата(micronano @ Aug 2 2011, 13:07) Фор...   Aug 2 2011, 10:11
- - Непомнящий Евгений   ЦитатаНо огромное количество ошибок самого разного...   Aug 2 2011, 10:17
- - micronano   Вот я и прошу подсказать существующие алгоритмы...   Aug 2 2011, 10:21
|- - kovigor   Цитата(micronano @ Aug 2 2011, 13:21) kov...   Aug 2 2011, 11:21
- - Непомнящий Евгений   В момент, когда читаете вход, инвертируйте некотор...   Aug 2 2011, 10:25
- - micronano   Теперь понял. ЦитатаПотом берете осциллограф и сра...   Aug 2 2011, 10:29
- - Непомнящий Евгений   Ну как что даст - отсечете какие-то виды ошибок......   Aug 2 2011, 10:32
- - SSerge   Даже если битовая скорость известна, то никто не о...   Aug 2 2011, 10:33
- - micronano   Других прерываний нет =) В программе кроме считыва...   Aug 2 2011, 10:36
|- - Dog Pawlowa   Цитата(micronano @ Aug 2 2011, 13:36) каж...   Aug 2 2011, 20:37
|- - Marian   Цитата(Dog Pawlowa @ Aug 2 2011, 23:37) Е...   Aug 3 2011, 14:39
- - Непомнящий Евгений   Сделайте без прерываний ради интереса. На самом д...   Aug 2 2011, 10:36
- - micronano   #include <avr/io.h> #include <avr/interru...   Aug 2 2011, 10:43
|- - zombi   Цитата(micronano @ Aug 2 2011, 12:50) как...   Aug 4 2011, 20:57
|- - ASZ   В документации на любой микроконтроллер AVR (раз у...   Aug 5 2011, 11:27
- - ILYAUL   Не понятго ЦитатаСигнал прямоугольный, меандр , ч...   Aug 2 2011, 11:44
- - _Pasha   Пишут Вам пишут, что надо дождаться фронта, сдвину...   Aug 2 2011, 11:49
- - micronano   kovigor, да, мне нужно принимать биты.. ILYAUL, а...   Aug 2 2011, 11:54
|- - ILYAUL   Цитата(micronano @ Aug 2 2011, 15:54) ILY...   Aug 2 2011, 11:58
- - micronano   ILYAUL, считайте что хотите. Чем вам не понравилос...   Aug 2 2011, 12:14
|- - ArtemKAD   Цитата(micronano @ Aug 2 2011, 15:14) ILY...   Aug 3 2011, 09:13
|- - Marian   Цитата(ILYAUL @ Aug 2 2011, 21:57) Всё зн...   Aug 2 2011, 19:02
||- - ILYAUL   Цитата(Marian @ Aug 2 2011, 23:02) Этот в...   Aug 2 2011, 19:05
||- - Marian   Цитата(ILYAUL @ Aug 2 2011, 22:05) И ещё ...   Aug 2 2011, 19:19
||- - ILYAUL   Цитата(Marian @ Aug 2 2011, 23:19) Что ту...   Aug 2 2011, 19:28
||- - Marian   Посмотрите Отрисовка сигнала. Создавалась для отри...   Aug 2 2011, 19:33
||- - ILYAUL   Цитата(Marian @ Aug 2 2011, 23:33) Посмот...   Aug 2 2011, 19:52
|- - ILYAUL   Цитата(Marian @ Aug 2 2011, 23:14) Это не...   Aug 2 2011, 19:14
- - нечитатель   Цитата(micronano @ Aug 2 2011, 13:50) по ...   Aug 2 2011, 19:41
- - micronano   Marian, ILYAUL, спасибо. Попробую сделать на преры...   Aug 3 2011, 08:58
- - ArtemKAD   ЦитатаВроде capture работает по фронту импульса. Р...   Aug 4 2011, 17:06
- - ILYAUL   Цитата(ArtemKAD @ Aug 4 2011, 21:06) .......   Aug 4 2011, 17:31


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

 


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


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