реклама на сайте
подробности

 
 
> ATXMEGA16E5 - вопросы и засады, (пытаюсь освоить)
Alexey_N
сообщение Mar 8 2014, 06:35
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 308
Регистрация: 12-05-05
Из: мск
Пользователь №: 4 943



Вот пытаюсь освоить ATXMEGA16E5 после долгих лет жизни с просто мегами, наталкиваюсь на недоумения - нужен хелп.

1. Ядерная мегазасада - флаг прерывания в Таймере надо гасить вручную!
В старых мегах по умолчанию зашел в прерывание - флаг сбросился. Теперь это похоже не соблюдается... Какие здесь ещё засады в прерываниях?

2. В файле iox16e5.h, входящем в пакет АтмелСтудия, наблюдаю ашипку в разделе ЦАПа:
DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */
Надо поменять на
DAC_REFSEL_AREFD_gc = (0x03<<3), /* External reference on AREF on PORTD */
так как порта "B" у этого камня нет.

3. При попытке подать референс для ЦАПа именно от этого "AREF on PORTD" или от "AREF on PORTA" напряжение на выходе ЦАПы поднимается только до 0,5 Вольт (на ножку подано 2,5 Вольта). При выборе референса от "Analog supply voltage" ЦП работает нормально до 3 Вольт. Может я что-то здесь неправильно настраиваю?

4. Пытался разобраться с калибровкой АЦП - ни фига не могу найти адрес для записи в z-регистры, чтобы считать там эти калибровочные значения sad.gif. Наверное это всё лежит на самом виду, но после часа рытья в ПДФ-е я сломался... подскажите, плз.

5. Добавляю грабли. Попытка сравнить два напряжения на входах компаратора - на одном переменный сигнал от 0 до 3 В, на другом постоянной напряжение 1,5 В. Сравнение (прерывание) происходит при напряжении 0,2 В! Обе ножки камня в явном виде заданы в Totem-pole режиме (кто-нибудь знает как это перевести?!). Если же ставлю в качестве опорного напряжения примерно 1,5 В от внутреннего источника (Voltage Scaling Factor), всё прекрасно срабатывает на полутора вольтах. Ох, что-то я сильно не понимаю в ногах Хмеги...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Vik-440
сообщение Aug 6 2014, 20:55
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 11-10-11
Пользователь №: 67 668



День добрый.
Раньше писал на тикики, но пару лет уже не программировал. Вот теперь взял в руки отладку XMEGA256A3 и установил AtmelStudio - просидел целый день, но так и не смог реализовать простое прерывание от кнопки и последующую обработку.
Весь даташит перелистал, вроде все включил - не работает.

PORTE.DIR=0b00000000;
PORTE.INTCTRL=0b00000001;
PORTE.INT0MASK=0b00100000;
PORTE.PIN5CTRL=PORT_ISC_RISING_gc;
__enable_interrupt();

и потом:
ISR(PORTE_INT0_vect)
{
PORTR.OUTCLR = LEDboard1;
while (1){};
};

Сообщение отредактировал Vik-440 - Aug 6 2014, 20:56
Go to the top of the page
 
+Quote Post
Xenia
сообщение Aug 6 2014, 21:32
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Vik-440 @ Aug 7 2014, 00:55) *
Вот теперь взял в руки отладку XMEGA256A3 и установил AtmelStudio - просидел целый день, но так и не смог реализовать простое прерывание от кнопки и последующую обработку.
Весь даташит перелистал, вроде все включил - не работает.


Как и во всякой ХМеге, прерывания сперва надо разрешить. Причем, по-отдельности, высокого, среднего и низкого уровня. Например, я разрешаю все три разом. Вот так:
PMIC.CTRL = PMIC_HILVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_LOLVLEN_bm; // All Level Interrupt Enable

А дальше в регистр INTCTRL порта кладете номер одного из только что разрешенных уровней:
PORTE.INTCTRL = 0x01; // INT0LVL -> low priority
и указываете ножку порта, которая будет вызывать это прерывание и его условие:
PORTE.INT0MASK = PIN5_bm; // Select PE5 as interrupt source
PORTE.PIN5CTRL = PORT_ISC_RISING_gc; // Sense rising edges PE5

Вы почти всё правильно сделали, только про PMIC.CTRL забыли. Да и бесконечный цикл из процедуры прерывания лучше бы убрать (ему место в main, а не тут) и заменить чем-то вроде:
ISR(PORTE_INT0_vect)
{
PORTR.OUTTGL = LEDboard1;
}
чтобы лампочка от прерываний мигала.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 21:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016