Технический форум по робототехнике.
Dmitry__ » 11 ноя 2011, 13:58
да хоть 2мгц. sir работать будет. Только нафига все эти сложности?
Ты манчестер считаешь проще физ. уровня irda? Ню-ню.
dccharacter » 11 ноя 2011, 14:01
Эээээ. Понимаешь, если 200кГц мои трансы потянут, то у меня уже есть среда и весь сетап для передачи байтиков. А для IRDA - нет. И магазины не в помощь. Даже в Москве.
Тем более, что программная реализация такого манчестера пока мне видится элементарнейшей - на одном таймере с минимумом кода.
Dmitry__ » 11 ноя 2011, 14:04
ага, только не приемная часть
и не забывай - 200 кгц манчестер - 100 кгц данные
Добавлено спустя 29 секунд:это без накладных расходов на протокол синхронизации
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
dccharacter » 11 ноя 2011, 14:08
Блина, а зачем мне протокол? Мне же не обязательно УАРТ туда пихать - я могу изумительно тем же CCP или вообще таймером принять. 100кГц данные мне и нужны. Пока думаю сделать так - на выход трансформатора - оптопару (коих у меня охрененное количество на балконе) и в МК. Получицца?
Dmitry__ » 11 ноя 2011, 14:18
а как ты в этом потоке самосознания будешь собирать байты?
Добавлено спустя 3 минуты 45 секунд:dccharacter писал(а):на выход трансформатора - оптопару (коих у меня охрененное количество на балконе) и в МК. Получицца?
нипалучица
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
оптопары на 200 кгц денег стоят
dccharacter » 11 ноя 2011, 14:25
Dmitry__ писал(а):а как ты в этом потоке самосознания будешь собирать байты?
![Very Happy :D](http://roboforum.ru/images/smilies/biggrin.gif)
Хм. В простом режиме частота 19кГц. Там байтов явно нет. Когда байты есть разница между 0 и 1 - в два раза по времени. Т.е. меряем время между двумя соседними фронтами. Если оно больше, скажем, 15 мкс - в мусор. Если 10 мкс, то пишем "0". Если 5 мкс, пишем "1" и следующий промежуток курим. Ае?
Добавлено спустя 2 минуты 35 секунд:Dmitry__ писал(а):оптопары на 200 кгц денег стоят
Я думаю, что на балконе у меня самые крутые оптопары. Так что если на 200кГц существуют в природе, то с высокой долей вероятности, на балконе найдуццо
Добавлено спустя 2 минуты 22 секунды:Оппонируйте, коллега, оппонируйте!
Dmitry__ » 11 ноя 2011, 14:33
чего????
манчестер не так работает, 0 и 1 в манчестере - это положительный или отрицательный переход в середине периода
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
И это ты расписал сборку битов. Если ты потеряешь хоть 1 бит, у тебя все биты в байтах сместятся. В rs232 для этого и существуют старт и стоп биты, которые для тебя производитель контроллеров спрятал подальше в железо, чтоб тебе не выносить моск
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
А ели ты решил делать все сам, то дуло к виску и мягкий спуск курка
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
dccharacter писал(а):Я думаю, что на балконе у меня самые крутые оптопары.
Че за балкон такой? крутые оптопары есть а убитых ирда модулей нет
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
dccharacter » 11 ноя 2011, 14:45
1. Про манчестер почитал. Манчестер бывает разный. В середине периода - это когда сначала данные, потом клок. А у меня клок сначала, а потом данные. Читайте!
2. У меня очень отчетливый сигнал (по крайней мере на 19 кГц, гы гы гы), там даже фильтровать ничего не надо. Куда я могу потерять бит?
3. Балкон золотой практически. Но его состояние примерно соответствует состоянию складов поставщиков электронных компонентов. Т.е. ИРДА модулей нет ни там ни там
![Smile :-)](http://roboforum.ru/images/smilies/smile.gif)
4. Ладно, сегодня поиграемся. Правда непонятно, как без осцилла быть...
Dmitry__ » 11 ноя 2011, 14:55
не ставьте чайник без воды на огонь
Контроль фазовой синхронизации фронта положительного импульса строба с началом тактовых интервалов кодирования устанавливается следующим образом. Параллельно с интегрированием сигнала в пределах такта с учетом полярности строб-импульса проводится интегрирование сигнала в пределах такта без изменения знака во второй половине такта. Переход выходных сигналов кода Манчестер-II через ноль в середине такта приводит к тому, что выходные сигналы интегрирования без изменения знака существенно меньше выходных сигналов интегрирования с изменением знака (практически нулевые для непрерывных последовательностей нулей и единиц и в 2 и более раза меньше для кодов 01 и 10). Если синхронизация нарушается (первым в фактическом тактовом интервале идет импульс строба отрицательной полярности, т.е. меандр стробирования смещается на полтакта), то значения выходных сигналов интегрирования меняются прямо на противоположные как по значениям, так и по соотношению значений. Это может использоваться для постоянного контроля правильности автосинхронизации и для немедленного восстановления синхронизации и исправления кода при сбое синхронизации.
http://www.studfiles.ru/dir/cat41/subj1 ... 39856.html
dccharacter » 11 ноя 2011, 15:05
во-первых, я ничего не понял
![Smile :-)](http://roboforum.ru/images/smilies/smile.gif)
, а во-вторых, лоб я сегодня вечером все равно буду расшибать
![Smile :-)](http://roboforum.ru/images/smilies/smile.gif)
Dmitry__ » 11 ноя 2011, 15:20
dccharacter писал(а): А для IRDA - нет. И магазины не в помощь. Даже в Москве.
Чего за бред?
http://www.chipfind.ru/catalog/sensors/irda/
dccharacter » 11 ноя 2011, 22:21
Так, оптопара сходу ловит частоту 39кГц (это без регулировки - МАМА!!! Я СЛЕПОЙ БЕЗ МОЕГО ОСЦИЛЛА!!!!!!!), т.е. пока попробую прокинуть что-нить на 19кБитах. Дмитрий, покупай попкорн. На твоих глазах вершиться история.
Добавлено спустя 1 час 23 минуты 17 секунд:
Чооорт, я так начистил свою карму и мне так фигово без осцилла, что что-то не получается. Памагите.
Dmitry__ » 11 ноя 2011, 22:35
таааак, мое место не занимать. Большую пачку попкорна брать? сколько серий кино?
![Very Happy :D](http://roboforum.ru/images/smilies/biggrin.gif)
dccharacter » 11 ноя 2011, 22:45
Уже "пленка" заканчивается
Без осцилла дебажить просто невозможно.
Добавлено спустя 7 минут 32 секунды:Че-то бред какой-то. МК работает на 8МГц. Вот код прерывания:
- Код: Выделить всё • Развернуть
if (TMR6IE && TMR6IF)
{
if (bitNum >= 8)
{
TMR6 = 240; //pause
bitNum = 0;
} else if (byte2transmit & (1 << bitNum))
{
if (halfBit)
{
halfBit = 0;
TMR6 = 240;
bitNum++;
} else
{
halfBit = 1;
TMR6 = 240;
}
} else
{
TMR6 = 240;
bitNum++;
}
TMR6IF = 0;
RB3 = ~RB3;
RB5 = ~RB3;
}
Такое чувство, что он исполняет этот код целую вечность.... И не успевает в заданные промежутки.
=DeaD= » 11 ноя 2011, 22:48
А в протеусе чего не дебажится?