Принять данные на ПК со скоростью 1 Мбит
Re: Принять данные на ПК со скоростью 1 Мбит
Я не пойму, Вы сомневаетесь в возможности передачи или в возможности приема? Расскажите поподробнее. Может наложены какие искусственные ограничения о которых я не знаю?
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
- Реклама
Re: Принять данные на ПК со скоростью 1 Мбит
У меги может не хватить производительности при передаче непрерывного потока на большой скорости.
В данном случае передача не непрерывного потока.
В данном случае передача не непрерывного потока.
Re: Принять данные на ПК со скоростью 1 Мбит
Чушь Вы говорите. У меня прерывание вызывается с частотой 31 Килогерц, слушаете?, и, длиться оно 32 микросекунды. Передача одного байта 8 микросекунд на скорости 2 Мегабита, 2 байт 16 микросекунд. Запись в регистр один такт. Итого: за 32 микросекунды прерывания можно передать 4 байта раскидав их по прерываю перемежая полезными командами. 4 байта*31 Килогерц=124килобайта в секунду*16=1984 Килобита в секунду. Итого МЕГА и 2 Мегабита в секунду близнецы братья, при этом загрузка ядра процессора от UART составит пару процентов от команд загрузки регистра данных UART, остальное другие полезные вычисления. Уметь пользоваться разделением времени это искусство!!!! Это бывает не под силу операционной системе, но человек завсегда мудрее....
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Принять данные на ПК со скоростью 1 Мбит
astrahard, напишите код передачи, тогда поймете, как Вы заблуждаетесь:
1. До передачи надо определить, если ли что передавать, или данных готовых к передаче еще нет.
2. Затем адрес передаваемого байта надо вычислить, хотя бы инкрементировав счетчик.
3. Потом этот байт надо прочитать в регистр.
4. Потом надо убедиться, что буфер передатчика пуст и туда уже можно писать новый байт. То есть, считать байт статуса, сравнить нужный бит и выполнить команду условного перехода.
5. Только после всего этого можно будет записать очередной байт в буфер передатчика
6. А теперь переходим к п.1.
Так что одним тактом при передаче ну никак не обойтись.
1. До передачи надо определить, если ли что передавать, или данных готовых к передаче еще нет.
2. Затем адрес передаваемого байта надо вычислить, хотя бы инкрементировав счетчик.
3. Потом этот байт надо прочитать в регистр.
4. Потом надо убедиться, что буфер передатчика пуст и туда уже можно писать новый байт. То есть, считать байт статуса, сравнить нужный бит и выполнить команду условного перехода.
5. Только после всего этого можно будет записать очередной байт в буфер передатчика
6. А теперь переходим к п.1.
Так что одним тактом при передаче ну никак не обойтись.
Re: Принять данные на ПК со скоростью 1 Мбит
Чушь, Вы читать не умеете что я пишу. Чтобы отправить байт нужно просто загрузить его в регистр данных UART. А уверенность в том что очередная передача окончена придет сама через время 6 микросекунд для скорости 2 Мегабита, при этом эти 6 микросекунд можно свободно посвятить полезным вычислениям отсчитываем 6 микросекунд "полезных вычислений" и суем в регистр данных UART очередной байт, адрес его в оперативной памяти мне будет заранее известен. И проверять не нужно статус.
Добавлено after 3 minutes 57 seconds:
Вот что значит увлечение всякими драйверами и ОС!!!! Вы не представляете как работает голая аппаратура под С. Я передавать собираюсь на этой скорости 2 байта с частотой 31 Килогерц это половина от скорости 2 Мегабита.
Добавлено after 3 minutes 57 seconds:
Вот что значит увлечение всякими драйверами и ОС!!!! Вы не представляете как работает голая аппаратура под С. Я передавать собираюсь на этой скорости 2 байта с частотой 31 Килогерц это половина от скорости 2 Мегабита.
Последний раз редактировалось astrahard Сб ноя 23, 2019 15:00:45, всего редактировалось 1 раз.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
- Реклама
Re: Принять данные на ПК со скоростью 1 Мбит
Так я же написал.astrahard писал(а):Чушь Вы говорите. У меня прерывание вызывается с частотой 31 Килогерц, слушаете?
Мурик писал(а):В данном случае передача не непрерывного потока.
Не учитываете такты затраченные на вход и выход с прерывания, сохранение регистров в стеке, извлечение данных из массива и т. д.astrahard писал(а):Запись в регистр один такт.
Этот байт должен откуда-то взяться. Конечно если передавать что-то типа UDR=0; это потребует мало времени но больше такта. Данные нужно поместить в регистр процессора, а затем из него в регистр данных UART. Это как минимум 2 такта при передаче только одного и того-же значения, а не требуемых данных.astrahard писал(а):Чтобы отправить байт нужно просто загрузить его в регистр данных UART.
Как МК определит что прошли 8 мкс?astrahard писал(а):А уверенность в том что очередная передача окончена придет сама через время 8 микросекунд
Посмотрите ассемблерный код, генерируемый из сишного и может поймете что тактов требуется гораздо больше чем вы думаете.astrahard писал(а):адрес его в оперативной памяти мне будет заранее известен.
Потеря данных допустима? Если да и даже значительный потерянный объем не критичен, то сойдет.astrahard писал(а):И проверять не нужно статус.
Нет, это знание работы МК на уровне ассемблера... Я представляю примерно какой будет ассемблерный код при компиляции сишного и на основе этого пишу.astrahard писал(а):Вот что значит увлечение всякими драйверами и ОС!!!!
На Си она не работает.astrahard писал(а):Вы не представляете как работает голая аппаратура под С.
Если думаете что строка x++ выполнится за такт, то сильно ошибаетесь. Нужно прочитать данные из памяти в регистр процессора, далее увеличить значение на 1 и после записать из регистра в память, т. е. это потребует как минимум 3 такта при условии что x однобайтовая. А если при этом еще потребуется сохранить регистр в стеке, и извлечь его, добавьте еще 2 такта.
Re: Принять данные на ПК со скоростью 1 Мбит
Вы правы, что такты я грубо посчитал, но профилировкой кода я занимаюсь в обязательном порядке. Раньше смотрел что генерирует С в ассемблер, затем я стал подходить к С как к ассемблеру. В исходном коде у меня видно, что данные для отправки уже проиндексированы, мне нужно так UDR=holding_registers[10] 6 Микросекунд полезного кода и, UDR=holding_registers[11] , этот кусок в прерывании которое автоматически вызывается с частотой 31 Килогерц. Это получиться вывод очередного преобразования АЦП. Я не считаю такты все до одного потому что знаю что все работает итак, профилирую код осциллографом на свободной ножке контроллера PORTC|=0x01; профилируемый код PORTC&=0xFE; и, считаю что так надежнее, чем считать такты.
P.S. И еще, имейте в виду, пожалуйста, что я сделал ШИМ для силовой части БП и, если бы были серьезные ошибки силовой преобразователь бы сгорел, но такого не происходит. Вот силовой преобразователь точно тестирует все до последнего промаха почище чем любой интерфейс, который хотя-бы не сгорит.
Добавлено after 9 hours 5 minutes 15 seconds:
За сколько тактов PCLOCK UART байт отправляет? за 10, 11 или за 16?
Добавлено after 4 hours 21 minute 51 second:
Все заработало как надо УРА!!! УРА!!! Товарисчи...
Добавлено after 18 minutes 23 seconds:
Так как я хотел получается, проверено. Делайте и прибудет с вами сила.
P.S. И еще, имейте в виду, пожалуйста, что я сделал ШИМ для силовой части БП и, если бы были серьезные ошибки силовой преобразователь бы сгорел, но такого не происходит. Вот силовой преобразователь точно тестирует все до последнего промаха почище чем любой интерфейс, который хотя-бы не сгорит.
Добавлено after 9 hours 5 minutes 15 seconds:
За сколько тактов PCLOCK UART байт отправляет? за 10, 11 или за 16?
Добавлено after 4 hours 21 minute 51 second:
Все заработало как надо УРА!!! УРА!!! Товарисчи...
Добавлено after 18 minutes 23 seconds:
Так как я хотел получается, проверено. Делайте и прибудет с вами сила.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Re: Принять данные на ПК со скоростью 1 Мбит
Да, кстати. Визуализацию полученных от микроконтроллера данных очень удобно делать в Excel. Бесплатный modbus_opc_server_32tags можно найти и скачать, вариантов много, например https://insat.ru/products/?category=1666 как раз для отладки и некоммерческих проектов. Для радиолюбителя то что надо... Как известно, Excel позволяет написать в своей клеточки запрос к OPC серверу. А как это визуализировать поймет каждый пользователь электронной таблицы. Я не пойму, почему радиолюбители этим не пользуются?
Добавлено after 10 minutes 10 seconds:
запрос к OPC server в excel https://www.aggsoft.ru/opc-data-logger/ ... -excel.htm
Добавлено after 10 minutes 10 seconds:
запрос к OPC server в excel https://www.aggsoft.ru/opc-data-logger/ ... -excel.htm
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


