|
|
|
|
Ого, сколько понаписали Горячие финские парни Gregory, Вы с AVR-овским ассемблером знакомы? Если да, на выходных могу исходники выложить. |
|
|
Gregory: Давайте без оскорблений.  И в мыслях не было  Gregory: Если я не понимаю СИ, мне не зазорно сказать про это. Я это уже понял, и принял как данность Потому и пытался объяснить словами.. Gregory: Никаких эхов. Что надо, то, и ловится, и передаётся. Посмотрел ещё раз Вашу программу. Проникся Понравилась компенсация времени реакции на прерывание. Сами придумали? У Вас прерывание настроено случаться 3 раза за время бита. Не уверен, что этого достаточно для уверенного приёма. Могу привести пример, когда не сработает. И ещё. В аттаче - Ваш код прерывания, я расставил в нём число МЦ вдоль одной из веток исполнения. У меня вышло 68 МЦ, при прерывании через 63 На фоне этого борьба с джиттером выглядит смешно Gregory: Короче. Давайте исходник на АСМе (ну, или хотя бы хекс), будем смотреть. Я уже лет десять не писал на асме Но я попробую! 
|
|
|
Забыл аттач приаттачить. 117599.asm |
|
|
AHTOXA: Сами придумали? Пришлось. Как-то никто про это даже не упоминает никогда.. Почему-то.. Кстати. У меня так и остался вопрос, почему разница в 2 МЦ? В 1 - понятно, а вот 2... когда не сработает Давайте, конечно. Может что и упустил. У меня вышло 68 МЦ Поподробнее, плиз. Вроде тысячу раз прогонял, всегда в 63 укладывался. Атач гляну чуть попозже. Сейчас дюже некогда. chav1961: сколько понаписали Ага! Кроме автора темы. "Жаль, что мы так и не услышали начальника транспортного цеха". Хотелось бы всё-таки узнать, что ему конкретно надо. с AVR-овским ассемблером знакомы Увы! Только в общих чертах. В смысле, знаю, что в нём более сотни команд. 
|
|
|
AHTOXA: Забыл аттач Млин! Думал это - Ваш атач. А это, оказывается, мой, с проставленными шагами.  Итак. Во-первых. Полный цикл, не 63, а 64 МЦ. Во-вторых. Сразу же бросается в глаза ошибка в "Корректировке". Я же говорил, что некоторые нопы никогда не выполняются, а служат как-раз для исключения лишних команд коррекции. В данном случае, после пересылки содержимого TMR2 в аккумулятор, из него необходимо вычесть некоторую константу. Вместо этого добавлены "лишнии" нопы. Фактически выполняться будут только последние три (или даже два, это я уже корректировал потом, и не помню, какую версию в журнал отсылал, но укладывались в интервал обе версии). Так что это уже - минус 4 (или 5). В-третьих. Не понял, что означает "+ 2 на вход...", в самом конце? В-четвёртых. Я прогонял всё это, в различных вариантах, в МПЛАБе, наблюдая за показаниями TMR2.  не писал на асме Дык, засуньте хекс в деассемблер. Останется только метки переименовать и коментарии вставить.  |
|
|
Gregory: Как-то никто про это даже не упоминает никогда.. Почему-то.. Да мелочи это, плюс-минус МЦ Но в любом случае, красиво. Gregory: Итак. Во-первых. Полный цикл, не 63, а 64 МЦ. Принято Gregory: Во-вторых. Сразу же бросается в глаза ошибка в "Корректировке" Принято, -4 команды Gregory: Не понял, что означает "+ 2 на вход..." Дык, вход в прерывание - это GOTO, выполняется 2 МЦ, не?  Итого, 66+2-4 = 64 цикла Пусть я даже обсчитался ещё где-то (это я запросто), всё равно, это нагрузка запредельная, основному циклу программы просто некогда выполняться. А работает Ваше устройство только благодаря тому, что приём/передача осуществляются не одновременно, а поочерёдно, то есть, полудуплексно Имхо, конечно.
|
|
|
Gregory: В-четвёртых. Я прогонял всё это, в различных вариантах, в МПЛАБе, наблюдая за показаниями TMR2. ;) Выходит я хитрее MPLAB-а, нашёл самую длинную ветку выполнения Gregory: Дык, засуньте хекс в деассемблер. Останется только метки переименовать и коментарии вставить. ;) А хекс откуда взять?  Я уже почти написал на ассемблере (мрак)  |
|
|
AHTOXA: я хитрее MPLAB-а Отнюдь. Просто МПЛАБ не может обсчитался ещё где-то.  некогда выполняться Однако выполняется. И полный дуплекс. Просто, "полные нагрузки" не на каждый тик приходятся. Да и программа-то не шибко умная. Просто гоняет данные из програмного в аппаратный UART, и в обратном направлении, через буфер. А хекс откуда взять? Дык, а СИ не компилится? |
|
|
Gregory: Однако выполняется. И полный дуплекс. А я вот почему-то уверен, что если подать непрервыные потоки на приём и на передачу одновременно, то загнётся Gregory: Дык, а СИ не компилится? Не, не компилится У меня нету си для пиков, (и MPLAB-а - тоже нет ) Я не работаю с пиками. ЗЫ. Я написал вчера вечером программу на асме, но забыл её дома Вечерком выложу. ЗЗЫ. Долго крутил в голове Вашу идею с тремя опросами на бит. Не смог найти веских возражений. Буду применять |
|
|
AHTOXA: то загнётся Был бы МПЛАБ, то сами бы проверили, что не загнётся.  Точнее, при непрерывном потоке аппаратный приёмник - софтовый передатчик загнётся, но по причине большей скорости аппаратного UART, и, соответственно, переполнения буфера. А буфер довольно-таки здоровый. Позволяет принять около 900 байт (в статье цифирь более точная). |
|
|
|
|