Свежие обсуждения
Измерения

DDS-генератор на AVR - нужна помощь

1 46 189

GM: На все значимые вопросы (1,2,6) вроде уже ответил.

3-й вопрос непонятен. Какой строб выводить?
импульс по началу каждого периода. чтобы синхронизироваться легче было. нужно в режиме отладки. потом уберем

4-й вопрос. Сделаю к следующей версии, пока он ничего не держит и не решает.
точно, только тогда доведите адресацию до 4-х . На будущее...

7-й вопрос - это видоизменённый первый. Вы когда спрашивали про минимальное время перестройки, что имели в виду? А что такое гарантированное? В железе измерять достаточно трудоёмко, по расчёту вроде около 9 мс выходит, но явно не 50.
имел в виду время, проходящее с момента начала первой посылки до момента начала генерации новой частоты. Оно определит темп перестройки. С учетом Вашего ответа беру 10 мс.

8-й вопрос. Байты в пачке должны идти непрерывно, но может быть и зазор менее таймаута, определите его (зазор)экспериментально. Если зазор больше таймаута, то пачка считается непринятой.
понял

9-й вопрос. Непонятно, что значит одиночные пачки?
Ну у Вас чтобы девайс загенерил ему дважды по пять байтов послать надо было, так? А потом - одного раза хватит?

Я так понял, что пятый вопрос решится автоматом с появлением новой версии прошивки

 

madgrey: А у меги 16 УАРТ один. Намек понятен?
может я не четко выразился я просто в тот момент работал с мегой 16 , и как-бы не важно какая именно мега (или хмега).
подобрать можно и что-бы совсем далеко не ходить- то можно и мегу162 - там 2 USART.

Я с удовольствием слежу за развитием проекта, но т.к. знаний (моих в программировании) пока не достаточно для активной (и полезной ) помощи в разработке, планирую подключится в стадии переноса в железо и b-тестирования...
Если ув. сообщество не будет возражать...

 

Сообщество не возражает. Присоединяйтесь к нулям, нужен ваш имейл для связи.

 

madgrey: Кстати, каким образом Вы собрались сделать такую скорость, если макс. УАРТа шо в тиньке шо в меге 115,2к x 2?
Это где-ж-такое сказано?

 

GM: Это где-ж-такое сказано?
В визарде кодвижна А в даташите написано что до двух мегабод. Вы правы!

 

madgrey: Ничего не мешает. Я против совмещения УАРТА для связи с ПК и передачи команд ведомым. Вот это - источник настоящего геморроя!
Кстати, с помощью двух бит можно адресовать 4(!) устройства. А у Вас только два... Непорядок...
И еще. GM, может облегчим программу ведомого и свипом будет заниматься ведущий, по крайней мере рассчитывать следующую частоты при любом законе ее формирования я вполне успеваю

По-честному, не вижу никакого гембеля в связке ПК-МК1-(МК2+МК3). Тх от МК1 идёт на МК2 и МК3 напрямую, на ПК через конвертер. Rx идёт от МК1 на ПК напрямую также через конвертер. Всё вместе называется слабо-связанной системой.

1кГц это мало. С 921.6 кбод будет порядка 20 кГц, это ещё ничего. А вот если поставить SPI на 10 МГц, то будет порядка 200 кГц, вот это я понимаю. Так что у вас есть куда стремиться.

Для проверки одного бита мне достаточно двух тактов, а для проверки 2-х - много больше, да и зачем?

Свип, который я реализовал, гораздо больше похож на аналоговый, чем тот, что вы предлагаете. У меня частота изменяется не скачками, а более-менее плавно, на каждом сампле она изменяется на крохотную величину. Почувствуйте разницу.

 

madgrey: 3-й вопрос непонятен. Какой строб выводить?
импульс по началу каждого периода. чтобы синхронизироваться легче было. нужно в режиме отладки. потом уберем

Ну, это вы хватанули . Откуда я узнаю начало периода? Он непредсказуем.

 

GM: С 921.6 кбод будет порядка 100 кГц, вот это я понимаю. А если поставить SPI на 10 МГц, то будет порядка 5 мкс, так что у вас есть куда стремиться.
ЭЭЭ UART или SPI у нас в приоритете, посему обслуживаются по прерываниям. 1мс - это для остальных событий, типа опрос кнопок, отправка кодов частоты и т.д.

GM: Для проверки одного бита мне достаточно двух тактов, а для проверки 2-х - много больше, да и зачем?
Ок

GM: Свип, который я реализовал, гораздо больше похож на аналоговый, чем тот, что вы предлагаете. У меня частота изменяется не скачками, а более-менее плавно, на каждом сампле она изменяется на крохотную величину. Почувствуйте разницу.
Зато я не чувствую разницы, каким законом свипить частоту. У Вас не так много ресурсов и в случае с изменяющимся приращением фазы аккума скорее именно Вам придется почувствовать разницу . Или есть финт ушами и Вы можете легко организовать свип для получения АЧХ в логарифмическом масштабе?

GM: Ну, это вы хватанули . Откуда я узнаю начало периода? Он непредсказуем
Да ладно, а по совпадению конкретного адреса массива выборок? Или он у вас тоже непредсказуем Только не в максимумах, там синусоид меняется медленно, в области перехода через 0, то есть когда код будет 0xf7

 

madgrey: 7-й вопрос - это видоизменённый первый. Вы когда спрашивали про минимальное время перестройки, что имели в виду? А что такое гарантированное? В железе измерять достаточно трудоёмко, по расчёту вроде около 9 мс выходит, но явно не 50.
имел в виду время, проходящее с момента начала первой посылки до момента начала генерации новой частоты. Оно определит темп перестройки. С учетом Вашего ответа беру 10 мс

Похоже, тут надо внести ясность, не сказал с самого начала, извините. При передаче кода частоты от ведущего нужно было обеспечить, с одной стороны, максимальную скорость передачи, а с другой стороны - синхронизацию пакетов. Протокол таков, что если время между байтами превышает таймаут, то происходит синхронизация пакетов, я уже это говорил. Но если вы засинхронизировались, то пакеты могут сыпаться непрерывно, не вопрос, ну может быть с небольшим зазором в 10 мкс между пакетами, чтобы обеспечить выполнение предыдущего пакета. Так что, сейчас минимальное время между пакетами - где-то 4 мс, если вы засинхронизированы.

 

GM: пакеты могут сыпаться непрерывно, не вопрос, ну может быть с небольшим зазором в 10 мкс между пакетами
АААА!!! я так и знал что межсимвольный зазор нужен будет правда на симуляторе у меня на 9600 без него идут, но там зазор сами собой получаются, а на больших скоростях будут проблемы.
Кстати, про дальше - наверное в новой версии прошивы убольшите скорость УАРТа (значение - любое на ваше усмотрение до 115,2к включ.)