Полная версия этой страницы:
XMEGA еще жива?
Сергей Борщ
Sep 5 2017, 06:03
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 пФ.
Цитата(Сергей Борщ @ Sep 5 2017, 13:03)

Забавно. В свежескчанном вчера с микрочипа документе 8067O–AVR–06/2013 (ТО на XMEGA A1) этой таблицы нет. И в первой таблице только одно, минимальное значение.
Есть в другом
документе 8331F–AVR–04/2013 XMega AU Manual на странице 95.
Neznaika
Apr 20 2018, 11:27
Всем привет! Наткнулся на небольшую проблему. При инициализации SPI-порта не могу управлять в своих целях ни MISO, ни MOSI. Это нормально? Вроде в документации написано, что в режиме Master, 3 вывода порта (SS, MOSI, SCK) указаны как User Defined. Мне казалось, что их я могу задействовать в своих целях как угодно...
Цитата(Neznaika @ Apr 20 2018, 14:27)

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

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

Могу ли я объявить MOSI как выходной пин и зажигать им светодиод?
А проверить физически не на чем?
Попробуйте поэкспериментировать в симуляторе АВР студии. MOSI в любом случае должен быть объявлен как выход.
С другой стороны, если к SPI подключен только термометр и никаких высокоскоростных устройств, что мешает сделать программную реализацию SPI? Там ведь все совсем не сложно, у вас исчезнет только возможность работы по прерыванию, что в случае с термометром непринципиально
Neznaika
Apr 24 2018, 13:20
Физически не получилось, поэтому и полез в документацию и на форум в надежде найти подтверждение, что и не должно работать.. Или у всех работает, а только у меня не работает. Обойти сложившийся казус через SPI собственного производства конечно же можно)
beard42
Apr 28 2018, 20:16
На XMEGA не получится использовать незадействованные ноги SPI, если SPI активен.
Neznaika
Jun 13 2018, 11:42
Всем привет! Очередной затык.. теперь с UART. Кому-нибудь удавалось менять скорость UART после его инициализации. В документации написано, что это возможно в том случае, когда передача и прием полностью завершены. Контролирую флаги в статусном регистре - на передачу (5 бит) в 1, на прием (7 бит) - 0. Пытаюсь сменить скорость и ничего не получается, UART работает со старой. Может кто ткнет носом, куда посмотреть?..
Андрей190
Jun 14 2018, 07:18
Цитата(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
Jun 14 2018, 08:30
Ну хоть у кого то работает) В вашем коде все понятно.. Вот нужно ли только каждый раз объявлять прерывания? Я использую библиотечные функции примерочного проекта по работе с UART, но там если покопаться те же регистры и те же команды, и есть функции по вычислению коэффициентов любой скорости. Сейчас пробовал играться с функцией инициализации, сначала ставил под одну скорость, следом с задержкой та же функция, но с другой.. По отдельности они работают, а последовательно не выполняется вторая. Как только проходит 1-ая запись данных в регистры скорости, происходит какая то блокировка и ничего уже поменять не могу. Есть подозрения на то, что к UART подцеплен полудуплексный RS-485, но как он может повлиять ума не приложу..
Neznaika
Jun 14 2018, 10:02
Увидел все-таки одну бяку... Получается перестраивать небольшие скорости.... 390 000, 156 000... А вот 800 000 не получается... Хотя, если изначально задавать 800 000, то UART работает с ней... Подсчёт коэффициентов выполняет одна и та же функция.. Чудеса, да и только..
Цитата(Neznaika @ Jun 14 2018, 13:02)

Увидел все-таки одну бяку... Получается перестраивать небольшие скорости.... 390 000, 156 000... А вот 800 000 не получается... Хотя, если изначально задавать 800 000, то UART работает с ней... Подсчёт коэффициентов выполняет одна и та же функция.. Чудеса, да и только..
Переполнение переменной при арифметических операциях?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.