Измерения | DDS-генератор на AVR - нужна помощь |
|
---|---|---|
qwer: убогий, избыточный протокол. что в нем хорошего ? лучше обычный текст - управлять прибором можно из любого терминала, любой системы. ATLab: Вот формула вычисления кода (из файла с пояснениями): |
|
|
Как работает программа. Первый пакет из 5 байт она принимает, размещает в регистры, затем посылает обратно для контроля. После этого генератор выдаёт синус 10 кГц и ожидает следующего пакета из 5 байт. При приёме каждого байта устанавливается счётчик таймаута, при превышении которого принятые байты игнорируются. По поводу протокола управления по уарту. Ну, вы сами понимаете, что можно было бы придумать тьму протоколов, надёжных, с цкс, и т.д. и т.п., но с одним условием, все они должны приниматься и обрабатываться, не прерывая генерации. А у проца нет ни времени, ни памяти для чего-то более-менее сложного. Отсюда единственный путь - посылать 4 байта двоичного кода частоты. Но как засинхронизировать начало посылки? Некий стартовый байт? Ну так, в коде частоты может быть код, совпадающий со стартовым байтом, и даже не один. Значит путь опять один - синхронизировать по времени. Появилась пауза - ждём новой посылки, а те байты, что приняли до этого момента в количестве 1-2-3, отбрасываем. Вот так весь протокол и нарисовался, а я "решил в своей прошивке проблему определения start для binary посылок". Вначале я посылал только 4 байта кода частоты для одного генератора, сейчас легко удалось модернизировать протокол, добавить байт команды, можно управлять несколькими генераторами, причём идеология протокола осталась прежней. Как видите, мой протокол не так плох, как вам кажется. Кстати, если в уарте передавать байты непрерывно один за другим, а приёмник выключить и включить в середине передачи, то уарт приёмника может зацепиться за 0 где-то в середине бита, и будет принимать всякую чепуху. Обратите внимание, для байтной синхронизации в уарте необходим перерыв в передаче. |
|
|
madgrey Ну вот, я же говорил, что GM как то решил проблему определения старта |
|
|
GM: При приёме каждого байта устанавливается счётчик таймаута |
|
|
ATLab: Репозитарий надо делать, иначе проект расползется по швам. |
|
|
Ну я не возражаю в принципе, пока я тут основной кодовладелец . Что только класть в этот репозитарий? Пока есть отдельные кусочки. Даже базовой схемы ещё не выработали. madgrey, прежде всего надо определить, где у вас баг - в ведущем МК2 или ведомом МК1, который тиня. Таймаут в последней версии порядка 4 мс, потенциально можно уменьшить до 1.2-1.5 мс, есть ли смысл? |
|
|
akl: Но компараторы реагируют только на первый переход полярности и, таким образом, на выходах нормальная последовательность 2-разрядного кода Грея. При смене направления вращения для обоих каналов генерируемые импульсы меняют полярность А в ддс генераторе у меня каждый импульс валкодера отрабатывается по полной программе, т.е. в соответствии с выбранным шагом вычисляется новый код частоты, заносится в соответствующие ячейки плюс задержка на дребезг контактов. |
|
|
GM: Как работает программа... GM: madgrey, прежде всего надо определить, где у вас баг - в ведущем МК2 или ведомом МК1, который тиня. GM: Таймаут в последней версии порядка 4 мс, потенциально можно уменьшить до 1.2-1.5 мс, есть ли смысл? 22.54. Игорь, я теперь знаю еще один ваш ящик . Но главное - связка ведущий - ведомый ЗАРАБОТАЛА!!! Виноват был клокер тиньки 23.11 Я тут посвипить попробовал, посмотрел, что получается хочу сказать: |
|
|
GM: Ну я не возражаю в принципе, пока я тут основной кодовладелец |
|
|
Отлично! Вот кого мы теперь будем мучить по поводу доработок |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |