Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: XMEGA еще жива?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
Сергей Борщ
QUOTE (Zlumd @ Sep 5 2017, 04:23) *
Вот ещё нашёл:
Забавно. В свежескчанном вчера с микрочипа документе 8067O–AVR–06/2013 (ТО на XMEGA A1) этой таблицы нет. И в первой таблице только одно, минимальное значение.
QUOTE (Zlumd @ Sep 5 2017, 04:23) *
Получается, что нужно ставить разные емкости:
C1=16pF*2-3.8pF-5pF(емкость монтажа)-6pF(CXTAL1)=17,2pF
C2=16pF*2-3.8pF-5pF(емкость монтажа)-10pF(CXTAL2)=13,2pF
Их оба можно округлить до 15pF.
Полагаю, что немного не так. 3.8 пФ - это емкость параллельно включенных 10 пФ и 6 пФ. Т.е. надо С1 = 16 пФ * 2 - 6 пФ = 26 пФ и С2 = 16 пФ * 2 - 10 пФ = 22 пФ. И минус емкость монтажа.

Добавлено: И округлял бы я их в разные стороны. Возможно как раз эта разница в емкостях C1 и C2 и заставляет генератор запускаться? То есть стоит попробовать выбрать емкости так, чтобы отношение результирующих емкостей тоже было примерно 6:10, т.е. С1 = 15пФ, С2 = 32 пФ.
Zlumd
Цитата(Сергей Борщ @ Sep 5 2017, 13:03) *
Забавно. В свежескчанном вчера с микрочипа документе 8067O–AVR–06/2013 (ТО на XMEGA A1) этой таблицы нет. И в первой таблице только одно, минимальное значение.
Есть в другом документе 8331F–AVR–04/2013 XMega AU Manual на странице 95.

Neznaika
Всем привет! Наткнулся на небольшую проблему. При инициализации SPI-порта не могу управлять в своих целях ни MISO, ни MOSI. Это нормально? Вроде в документации написано, что в режиме Master, 3 вывода порта (SS, MOSI, SCK) указаны как User Defined. Мне казалось, что их я могу задействовать в своих целях как угодно...
zombi
Цитата(Neznaika @ Apr 20 2018, 14:27) *
в документации написано, что в режиме Master, 3 вывода порта (SS, MOSI, SCK) указаны как User Defined.

Цитату из документации можете озвучить?
Я в документации вижу что речь идёт лишь о возможности изменения направления работы портов,
которое должно быть корректно задано пользователем.
Neznaika
Вот... Вопрос лишь в том, что можно ли не задействованные вывода инициализированного SPI использовать в своих целях. У меня не получилось, в других контроллерах как мне помнится такое возможно...
V_G
В SPI можно иногда не задействовать SS, MISO. Без любой из остальных ног смысл интерфейса теряется
Neznaika
MISO достаточно для датчика температуры, тут нужно лишь данные считывать по SCL, а для ЦАП достаточно MOSI, здесь только загрузка кода...
zombi
Ну так и подключайте все параллельно а SSами выбирайте то с чем хотите общаться.
V_G
Цитата(Neznaika @ Apr 23 2018, 23:49) *
MISO достаточно для датчика температуры, тут нужно лишь данные считывать по SCL, а для ЦАП достаточно MOSI, здесь только загрузка кода...

1. SCL - нет такого сигнала в SPI. Это из терминологии TWI (I2C)
2. SCK нужен всегда
3. С датчиками температуры по SPI не работал, вполне вероятно. Остальные известные мне устройства, работающие в двух направлениях, перед операцией считывания обязательно предусматривают команду на считывание, отправляемую от мастера к слейву, т.е. использование сигнала MOSI
Neznaika
Видимо мы не понимаем друг друга) Я имел в виду SCK, тут я опечатался, приношу свои извинения. Ещё раз повторю вопрос по другому - если я использую SPI для датчика температуры.. У меня задействованы только SCK, MISO и SS, так как мне нужно только считать код. Могу ли я объявить MOSI как выходной пин и зажигать им светодиод?
V_G
Цитата(Neznaika @ Apr 24 2018, 19:46) *
Могу ли я объявить MOSI как выходной пин и зажигать им светодиод?

А проверить физически не на чем?
Попробуйте поэкспериментировать в симуляторе АВР студии. MOSI в любом случае должен быть объявлен как выход.
С другой стороны, если к SPI подключен только термометр и никаких высокоскоростных устройств, что мешает сделать программную реализацию SPI? Там ведь все совсем не сложно, у вас исчезнет только возможность работы по прерыванию, что в случае с термометром непринципиально
Neznaika
Физически не получилось, поэтому и полез в документацию и на форум в надежде найти подтверждение, что и не должно работать.. Или у всех работает, а только у меня не работает. Обойти сложившийся казус через SPI собственного производства конечно же можно)
beard42
На XMEGA не получится использовать незадействованные ноги SPI, если SPI активен.
Neznaika
Всем привет! Очередной затык.. теперь с UART. Кому-нибудь удавалось менять скорость UART после его инициализации. В документации написано, что это возможно в том случае, когда передача и прием полностью завершены. Контролирую флаги в статусном регистре - на передачу (5 бит) в 1, на прием (7 бит) - 0. Пытаюсь сменить скорость и ничего не получается, UART работает со старой. Может кто ткнет носом, куда посмотреть?..
Андрей190
Цитата(Neznaika @ Jun 13 2018, 14:42) *
Всем привет! Очередной затык.. теперь с UART. Кому-нибудь удавалось менять скорость UART после его инициализации. В документации написано, что это возможно в том случае, когда передача и прием полностью завершены. Контролирую флаги в статусном регистре - на передачу (5 бит) в 1, на прием (7 бит) - 0. Пытаюсь сменить скорость и ничего не получается, UART работает со старой. Может кто ткнет носом, куда посмотреть?..


у меня все работает. идет подбор скорости для GPS приемника. флаги не контролирую, но смена скорости происходит (GPS приходят как со скоростью 9600, так и 115200).
использую ATXMEGA А4U от 32 до 128
Код
  __flash static unsigned int bscale[] =   {1666, 832, 416, 207, 103,  68,   51,   34,    16}; // for 16MHz
  USARTD1.CTRLA  = (unsigned char)USART_RXCINTLVL_MED_gc|USART_TXCINTLVL_LO_gc;
  USARTD1.CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_CLK2X_bm;
  USARTD1.CTRLC = 0x03;
  b = bscale[a];
  USARTD1.BAUDCTRLA = b&0xff;
  USARTD1.BAUDCTRLB = b>>8;

Neznaika
Ну хоть у кого то работает) В вашем коде все понятно.. Вот нужно ли только каждый раз объявлять прерывания? Я использую библиотечные функции примерочного проекта по работе с UART, но там если покопаться те же регистры и те же команды, и есть функции по вычислению коэффициентов любой скорости. Сейчас пробовал играться с функцией инициализации, сначала ставил под одну скорость, следом с задержкой та же функция, но с другой.. По отдельности они работают, а последовательно не выполняется вторая. Как только проходит 1-ая запись данных в регистры скорости, происходит какая то блокировка и ничего уже поменять не могу. Есть подозрения на то, что к UART подцеплен полудуплексный RS-485, но как он может повлиять ума не приложу..
Neznaika
Увидел все-таки одну бяку... Получается перестраивать небольшие скорости.... 390 000, 156 000... А вот 800 000 не получается... Хотя, если изначально задавать 800 000, то UART работает с ней... Подсчёт коэффициентов выполняет одна и та же функция.. Чудеса, да и только..
antis
Цитата(Neznaika @ Jun 14 2018, 13:02) *
Увидел все-таки одну бяку... Получается перестраивать небольшие скорости.... 390 000, 156 000... А вот 800 000 не получается... Хотя, если изначально задавать 800 000, то UART работает с ней... Подсчёт коэффициентов выполняет одна и та же функция.. Чудеса, да и только..


Переполнение переменной при арифметических операциях?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.