Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ЦАП Xmega
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Nosaer
Всем доброго времени суток)
Собственно решил побаловаться с ЦАПом в 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 , должно быть пол питания, а его нет.
Подскажите пожалуйста где я прокололся)
prottoss
Цитата(Nosaer @ Oct 25 2015, 17:14) *
Подскажите пожалуйста где я прокололся)
Не вдавался в Ваш код но могу кинуть часть проекта, который делал давно.
Nosaer
Чет Ваш исходник как то сложноват для меня, на восприятие.
Плюс DMA, в которое я еще не лез.
А так в целом вроде настройки такие же.
prottoss
Цитата(Nosaer @ Oct 25 2015, 18:49) *
Чет Ваш исходник как то сложноват для меня, на восприятие.
...
А так в целом вроде настройки такие же.

Ну так тогда должно работать.
Там важны только void PORT_Init(void) и void DAC_Init(void)
Nosaer
По счет настройки портов.
Я должен получается просто вывод ЦАПа на выход настроить, или нужны какие то еще действия?
Я не совсем пойму что тут происходит
Код
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 */
}
prottoss
Цитата(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 на выход.
Отключить от этого вывода цифровой вход.
Nosaer
Добавил:
Код
    PORTB.DIR = 0xFF;//0x08;
    PORTB.PIN3CTRL = PORT_ISC_INPUT_DISABLE_gc;


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

volatile int Voltage = 0x7F;


.....
}


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


ЦАП 12 разрядный, половина питания 0x7FF
Nosaer
Андрей190, то что нужно было))
Всем спасибо, проблема решена.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.