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

 
 
> Как бы выкрутится из такого поожения?
Pyku_He_oTTyda
сообщение Jun 12 2007, 18:30
Сообщение #1


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

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Постораюсь ясно изложить мысль:
МК (мега8) занимается управлением камерой по LANCпротоколу (тот же самый UART со стороны камеры, но с открытым коллектором ), со стороны МК отслеживаем старт-биты и подаем команды притягиванием линии к земле. Передается фреймами по 8 байт, во время передачи команды (одно и то же повторяем несколько фреймов - может затянутся на насколько секунд) нельзя пропускать фреймы.
То есть МК занят, на остальную работу остается порядка 9милисек (промежуток между фреймами)
Все бы ничего, но параллельно надо принимать другую команду, длительностью порядка 44 милис.
Есть идея по фронту внешней команды запускать capture timer на время 45 мс и после оценивать состояние регистра ICR.
Покритикуйте идею.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Pyku_He_oTTyda
сообщение Jun 16 2007, 07:36
Сообщение #2


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

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



После посылки байта остается спать 250мкс (LANC такой).
Я боюсь, что в прерывании по обнаружению старт-бита с ЛАНКа, пропущу
внешнюю команду


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 16 2007, 08:08
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Pyku_He_oTTyda @ Jun 16 2007, 09:36) *
После посылки байта остается спать 250мкс (LANC такой).

Так говорилось же уже сварганить передачу LANC на двух прерываниях.
По спаду старт-бита - прерывание запуска процесса, лучше всего - ICP. В этом прерывании инициализируем передачу команды в камеру (счётчик бит, ...) и делаем
OCR1A = ICR1 + длина_полутора_бит; /* таймер 1 бежит свободно */
В прерывании по OCR1A выталкиваем бит и делаем для следующего прерывания
OCR1A += длина_бита;
Итого процессор будет свободен кучу времени, иногда (не чаще раза на бит) совсем ненадолго отвлекаясь на LANC. Период бита 104мкс @ 9600, при 8 мегагерцах такта это больше 800 тактов, прерывание OCR1A уложится в несколько десятков, более 90% времени процессор гуляет.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pyku_He_oTTyda   Как бы выкрутится из такого поожения?   Jun 12 2007, 18:30
- - bodja74   Непонятно ,а что мешает МК принимать данные по УС...   Jun 12 2007, 18:55
- - Pyku_He_oTTyda   Прерывание УСАРТ возникает при окончании приема, а...   Jun 12 2007, 18:58
- - bodja74   Тогда старт бит ловим по INT и в обработчике преры...   Jun 12 2007, 19:15
- - Dog Pawlowa   Цитата(Pyku_He_oTTyda @ Jun 12 2007, 21:3...   Jun 12 2007, 19:59
- - Pyku_He_oTTyda   то есть вы предлагаете вплотную занятся приемом ...   Jun 13 2007, 03:38
|- - Dog Pawlowa   Цитата(Pyku_He_oTTyda @ Jun 13 2007, 06:3...   Jun 13 2007, 06:21
- - oran-be   Если добавить примерно 1$ можно мегу 8 замени...   Jun 13 2007, 05:45
- - Pyku_He_oTTyda   а зачем мне вообще 2 нардварных УАРТА?   Jun 13 2007, 06:09
- - arttab   можно попробовать делать опрос что на линии по пре...   Jun 13 2007, 08:17
- - Pyku_He_oTTyda   В первом посте неправильно выразился, "другая...   Jun 13 2007, 12:09
|- - Dog Pawlowa   Цитата(Pyku_He_oTTyda @ Jun 13 2007, 15:0...   Jun 13 2007, 12:21
- - =GM=   Цитата(Pyku_He_oTTyda @ Jun 12 2007, 17:3...   Jun 13 2007, 13:39


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

 


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


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