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

 
 
 
Reply to this topicStart new topic
> ЦАП Xmega
Nosaer
сообщение Oct 25 2015, 11:14
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Всем доброго времени суток)
Собственно решил побаловаться с ЦАПом в Xmega.
Код
#include <avr/io.h>

volatile int Voltage = 0x7F;


void dac_init()
{

    DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc;                   // Use AVCC as Voltage Reference
    DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_SINGLE_gc;                    // Use Single Conversion Mode
    DACB.CTRLA = DAC_CH0EN_bm | DAC_ENABLE_bm;
    
}

void DACB_out(int Voltage)
{
   DACB.CH0DATA = Voltage;
   while (!DACB.STATUS & DAC_CH0DRE_bm);
}


void dac_init();
void DACB_out(int Voltage);

int main(void)
{
    dac_init();
    
    
   while(1)
   {
      DACB_out(Voltage);
   }
}


По моим задумкам на PORTB.2 , должно быть пол питания, а его нет.
Подскажите пожалуйста где я прокололся)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2015, 12:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Nosaer @ Oct 25 2015, 17:14) *
Подскажите пожалуйста где я прокололся)
Не вдавался в Ваш код но могу кинуть часть проекта, который делал давно.

Прикрепленные файлы
Прикрепленный файл  idac.zip ( 2.41 килобайт ) Кол-во скачиваний: 18
 


--------------------
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Oct 25 2015, 12:49
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Чет Ваш исходник как то сложноват для меня, на восприятие.
Плюс DMA, в которое я еще не лез.
А так в целом вроде настройки такие же.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2015, 13:01
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Nosaer @ Oct 25 2015, 18:49) *
Чет Ваш исходник как то сложноват для меня, на восприятие.
...
А так в целом вроде настройки такие же.

Ну так тогда должно работать.
Там важны только void PORT_Init(void) и void DAC_Init(void)


--------------------
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Oct 25 2015, 13:30
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



По счет настройки портов.
Я должен получается просто вывод ЦАПа на выход настроить, или нужны какие то еще действия?
Я не совсем пойму что тут происходит
Код
static void PORT_Init(void)
{
    IDAC_CFG_PORT.DIRCLR = IDAC_CFG_PIN_OUT;    /* Set pin as output */
    *(&IDAC_CFG_PORT.PIN0CTRL + IDAC_CFG_BIT_OUT) = (UINT8)PORT_ISC_INPUT_DISABLE_gc;    /* Disable digital input */
}


Сообщение отредактировал Nosaer - Oct 25 2015, 13:31
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2015, 13:33
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Nosaer @ Oct 25 2015, 19:30) *
По счет настройки портов.
Я должен получается просто вывод ЦАПа на выход настроить, или нужны какие то еще действия?
Я не совсем пойму что тут происходит
Код
static void PORT_Init(void)
{
    IDAC_CFG_PORT.DIRCLR = IDAC_CFG_PIN_OUT;    /* Set pin as output */
    *(&IDAC_CFG_PORT.PIN0CTRL + IDAC_CFG_BIT_OUT) = (UINT8)PORT_ISC_INPUT_DISABLE_gc;    /* Disable digital input */
}

Настроить вывод DAC на выход.
Отключить от этого вывода цифровой вход.


--------------------
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Oct 26 2015, 03:13
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Добавил:
Код
    PORTB.DIR = 0xFF;//0x08;
    PORTB.PIN3CTRL = PORT_ISC_INPUT_DISABLE_gc;


Ничего не изменилось((
Go to the top of the page
 
+Quote Post
Андрей190
сообщение Oct 26 2015, 06:09
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 24-12-06
Из: Орел
Пользователь №: 23 838



Цитата(Nosaer @ Oct 25 2015, 14:14) *
Всем доброго времени суток)
Собственно решил побаловаться с ЦАПом в Xmega.
Код
#include <avr/io.h>

volatile int Voltage = 0x7F;


.....
}


По моим задумкам на PORTB.2 , должно быть пол питания, а его нет.
Подскажите пожалуйста где я прокололся)


ЦАП 12 разрядный, половина питания 0x7FF
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Oct 26 2015, 09:35
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Андрей190, то что нужно было))
Всем спасибо, проблема решена.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:26
Рейтинг@Mail.ru


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