|
ATxmega |
|
|
|
 |
Ответов
(315 - 329)
|
May 5 2010, 06:32
|
Частый гость
 
Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686

|
Цитата(MDD @ May 5 2010, 08:22)  Да чего там мелочиться - сразу 220В в чип, было бы еще бюджетнее А что касается рисунков, то на 25-10 они действительно погорячились - входное напряжение у них однозначно "слегка" заходит в отрицательную область, даже если они хотели сказать что-то другое(возможность получения отрицательных кодов из-за смещения). Сомневаюсь, что таким образом АЦП может оцифровывать допустимые -0.5В. Интересно, исправят ли в следующей версии... Согласен. Я еще хочется аппаратный преобразователь RS232-USB3!, аналоговый вход с цифровыми фильтрами, выход на VGA (можно простенький), токовый выход на шаговые двигатели (по каждой фазе не менее 1 А), еще разные АЦП (24 сигму-дельту, 16 - параллельный...), можно еще ЦАП разных, цифровых потенциометров и т.п. и обязательно выход на кнопку "Шедевр" - чтоб сам тестил программу и исправлял ошибки! Во как! А даташит не поправят: как понял из ответа МК при отрицательных напряжениях могут гореть - так что производителю это на руку.
|
|
|
|
|
May 17 2010, 09:46
|
Группа: Участник
Сообщений: 14
Регистрация: 1-01-08
Пользователь №: 33 759

|
Как правильно .. Планируется ATxmega256A3, по докам заливается через JTAG и PDI. Даже если предположительно ISP по SPI и заработал бы (ну в теории), то все равно оба набортных SPI нагружены потребителями. При наличии не дорогого AVRISPMK2 возможен вариант только по PDI, если нюансов с AVR studio не возникнет. Но тут еще не задача, у PDI задействуется порт reset, а на этом порту тоже мониторчик питания висит. И как правильнее сей нюанец обойти? (джампер-переключатель думаю не оптимальный вариант) Или может оно и так без проблем будет работать, потому как для всяких резисторов ... 3V питания всего.
Сообщение отредактировал Prodif - May 17 2010, 09:52
|
|
|
|
|
May 17 2010, 10:44
|
Группа: Участник
Сообщений: 14
Регистрация: 1-01-08
Пользователь №: 33 759

|
"V_G' Тут получается не только емкость, монитор формирует 1 выходным ключем и есть ли там встроенный резистор доподлинно не известно. Так что позволит ли точек через ключ сформировать нормальные импульсы программатору вот в чем вопрос.
|
|
|
|
|
May 31 2010, 13:31
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 19-07-06
Пользователь №: 18 920

|
Помогите разобраться с АЦП ATxmega32A4 тактирование внутр. 32 мГц АЦП - signed, FREERUN, 12bit left adjusted, 1 вольт внутренняя опора. Результат измерения изменяется от частоты тактирования АЦП. Например при 2 мГц (прескалер DIV16) результат меньше почти в два раза , чем при 62.5 кГц (прескалер DIV512). Код инициализации АЦП: Код ldi temp, 1<<ADC_ENABLE_bp; ADC Enable sts ADCA_CTRLA,temp
ldi temp, 1<<ADC_CONMODE_bp | 1<<ADC_FREERUN_bp | 3<<ADC_RESOLUTION_gp sts ADCA_CTRLB,temp ; signed, FREERUN, 12bit left adjusted ldi temp, 2<<ADC_PRESCALER_gp ; /16 (2 mHz) sts ADCA_PRESCALER,temp
ldi temp, 2<<ADC_CH_INPUTMODE_gp; Differential input signal sts ADCA_CH0_CTRL,temp
ldi temp, 1<<AC_MUXNEG0_bp ; ADC1 pin NEG sts ADCA_CH0_MUXCTRL, temp
|
|
|
|
|
Jun 1 2010, 08:19
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 19-07-06
Пользователь №: 18 920

|
Вопрос снят. Все нормализовалось после замены меги. Вероятно спалил пока экспериментировал.... При 2 мГц выдает стабильных 10 разрядов. Два младшие скачут (печатка - макетка).
|
|
|
|
|
Jun 1 2010, 17:06
|
Группа: Новичок
Сообщений: 5
Регистрация: 13-01-09
Пользователь №: 43 316

|
Цитата(SAWushka @ Mar 15 2010, 20:33)  Для отладки только: AVR Dragon; AVR JTAGICE mkII или AVR ONE Для программирования AVRISP mkII В описании AVR Dragon на Атмеловском сайте нет в числе интерфейсов отладки PDI, как нет и xmega в числе поддерживаемых устройств. С другой стороны на этом же сайте есть информация, что в AVR Studio 4.18 вошла поддержка отладки xmega Драгоном. Поэтому вопрос: дебажится xmega (интересует серия A4) Dragon'ом всё же или нет? Может кто-то проверял? Спасибо за ответы
|
|
|
|
|
Jul 7 2010, 02:27
|
Местный
  
Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018

|
все что пропущено работает... разобрался! сначала написал так: перепутал битмаск и битпозишн Код ldi tmp1, 1<<PMIC_MEDLVLEX_bm sts PMIC_CTRL, tmp1 потом когда дописывал остальные и исправлял написал корявое или ) Код ldi tmp1, (1<<PMIC_MEDLVLEX_bp)||(1<<PMIC_LOLVLEX_bp)||(1<<PMIC_HILVLEX_bp) sts PMIC_CTRL, tmp1 надо спать поранее ложиться)
Сообщение отредактировал Duhas - Jul 7 2010, 02:36
|
|
|
|
|
Jul 7 2010, 05:42
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-05-06
Пользователь №: 16 862

|
Цитата(Duhas @ Jul 7 2010, 05:27)  перепутал битмаск и битпозишн А я вот не люблю сишную китайскую грамоту при работе с именованными битами. Предпочитаю писать так Код PMIC.CTRL|=0x07;//разрешаем обработку прерываний низкого, среднего и высокого уровня Знаю, что это "некошерно"  . Но лично мне так удобнее. Лишний повод вникнуть в даташит, выписать на листочке какой бит за что отвечает...
|
|
|
|
|
Jul 9 2010, 12:29
|
Знающий
   
Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954

|
Вопрос по контроллеру DMA в xmega128A3. Мне нужно по Event 0 данные из регистра IN порта записывать в циклический буфер размером в 16 байт. Контороллер конфигурирую так: Код //DMA Configuration DMA_CTRL = (1<<DMA_RESET_bp); DMA_CH0_CTRLA = (1<<DMA_CH_RESET_bp); DMA_CH0_CTRLB = (0<<DMA_CH_ERRINTLVL_gp)|(3<<DMA_CH_TRNINTLVL_gp); //ERRINTLVL - OFF; TRNINTLVL - high DMA_CH0_ADDRCTRL = (2<<DMA_CH_SRCRELOAD_gp)|(1<<DMA_CH_SRCDIR_gp)| (1<<DMA_CH_DESTRELOAD_gp)|(1<<DMA_CH_DESTDIR_gp); //SRCRELOAD - BURST; SRCDIR - INC; DESTRELOAD - BLOCK; DESTDIR - INC DMA_CH0_TRIGSRC = DMA_CH_TRIGSRC_EVSYS_CH0_gc; //Запуск от события 0 DMA_CH0_TRFCNT = 16;//Размер блока - 0 DMA_CH0_REPCNT = 0; //Кол-во повторов - неограничено DMA_CH0_SRCADDR0 = (unsigned long)SR_ADDR & 0xFF; DMA_CH0_SRCADDR1 = ((unsigned long)SR_ADDR>>8) & 0xFF; DMA_CH0_SRCADDR2 = ((unsigned long)SR_ADDR>>16) & 0xFF; DMA_CH0_DESTADDR0 = (unsigned long)DataBuffer & 0xFF; DMA_CH0_DESTADDR1 = ((unsigned long)DataBuffer >> 8) & 0xFF; DMA_CH0_DESTADDR2 = ((unsigned long)DataBuffer >> 16) & 0xFF; DMA_CH0_CTRLA = (1<<DMA_CH_ENABLE_bp)|//Enable DMA chanal 0 (1<<DMA_CH_REPEAT_bp)|//Repeat ON (0<<DMA_CH_TRFREQ_bp)|//TRFRE - OFF (1<<DMA_CH_SINGLE_bp)|//Single Shot Data transfer - ON (0<<DMA_CH_BURSTLEN_gp); //BURSTLEN - 1byte DMA_CTRL = (1<<DMA_ENABLE_bp)|(1<<DMA_DBUFMODE_gp)|(3<<DMA_PRIMODE_gp); В результате получается, что после передачи каждого блока, когда TRFCNT доходит до 0, сбрасывается бит ENABLE в регистре CH0_CTRLA. !!! Поскольку отлаживать в железе пока нет возможности то пытаюсь отлаживать в симуляторе avrstudio(что симуляторы - зло знаю  ). Вопрос собственно в том Enable сбрасывается и в реальности или это глюк симулятора? Или с настройками контроллера что-то не так?
Сообщение отредактировал =F8= - Jul 9 2010, 12:31
|
|
|
|
|
Jul 9 2010, 14:37
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-05-06
Пользователь №: 16 862

|
Цитата(=F8= @ Jul 9 2010, 15:29)  это глюк симулятора? Или с настройками контроллера что-то не так? Или то, или другое В конкретику реализации вникать лень. Но могу сказать, что в железе Хмега прекрасно работает с кольцевыми буферами и по "складыванию", и по "раздаче". Из замеченных тонкостей работы с DMA - если используете прерывание по окончании транзакции, то бит запроса прерывания нужно сбрасывать в прерывании вручную. Автоматически заходом в прерывание биты от DMA не сбрасываются.
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|