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

 
 
> PWM & ADC в ADUC7021, есть пара вопросов
condor
сообщение Mar 6 2007, 19:13
Сообщение #1


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

Группа: Свой
Сообщений: 93
Регистрация: 18-06-05
Из: Kyiv, Ukraine
Пользователь №: 6 126



Делаю свою первый проект на ADUC'e.
Из-за неполного даташита появились непонятки.

---- PWM ----
В маленьком корпусе ШИМ напрямую наружу не выходит. В ДШ написано, что можно вывести через PLA.
Сделал так:

Код
PLAELM8 = 0x0035;
PLAELM15 = 0x0059;
PLAELM0 = 0x0059;

GP1CON = 0x3 << 28; // (PWM)PLAO[0] -> P1.7
GP3CON = 0x1;  // PWM0 -> P3.0(PLAI[8])

Но смущает то, что в ИАРовском хедере ioaduc7021.h нету описания регистров ШИМа. Он в этом контроллере присутствует?
Утилита PLA Tool тоже ведет себя непонятно. При записи в PLAELM8 0x0035 (т.е. подключение ко входу элемента8 P3.0 (PWM)) ругается "The GPIO pins you selected as inputs to the elements of Block1 have been disabled as they are not available on ADuC2071". Это утилита кривая или действительно можно подключать к PLA только выведенные наружу входы?

---- ADC ----
Нужно с максимальной скоростью оцифровать ~1ms сигнала и сложить в буфер для дальнейшей обработки.
В ДШ нигде не нашел описание непрерывного режима преобразований (continious mode). Я конечно догадываюсь что это, но хотелось бы уточнить smile.gif.

В примере с фтп Analog'a при использовании непрерывного преобразования каждый раз переключают каналы 0 и 1. Это просто измеряют два разных сигнала, или к обоим каналам подключен один и тот же сигнал, а такое переключение дает выграш в быстродействии?

Код
    ADCCON = 0x4E4;    // Config: fADC/2, acq. time = 2 clocks => ADC Speed = 1MSPS

    while(1)
    {            // start continuous conversion    
        for (i=0; i <2; i++)
        {
            while (!ADCSTA){}            // wait for end of conversion
            ADCDATA[i] = (ADCDAT >> 16);
            if (ADCCP == 0)    ADCCP = 1;    // change channel
            else ADCCP = 0;
        }

    }
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Paramon
сообщение Mar 7 2007, 08:49
Сообщение #2


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

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Цитата(condor @ Mar 6 2007, 19:13) *
Делаю свою первый проект на ADUC'e.
Из-за неполного даташита появились непонятки.

---- PWM ----
В маленьком корпусе ШИМ напрямую наружу не выходит. В ДШ написано, что можно вывести через PLA.
Сделал так:

Код
PLAELM8 = 0x0035;
PLAELM15 = 0x0059;
PLAELM0 = 0x0059;

GP1CON = 0x3 << 28; // (PWM)PLAO[0] -> P1.7
GP3CON = 0x1;  // PWM0 -> P3.0(PLAI[8])

Но смущает то, что в ИАРовском хедере ioaduc7021.h нету описания регистров ШИМа. Он в этом контроллере присутствует?
Утилита PLA Tool тоже ведет себя непонятно. При записи в PLAELM8 0x0035 (т.е. подключение ко входу элемента8 P3.0 (PWM)) ругается "The GPIO pins you selected as inputs to the elements of Block1 have been disabled as they are not available on ADuC2071". Это утилита кривая или действительно можно подключать к PLA только выведенные наружу входы?

---- ADC ----
Нужно с максимальной скоростью оцифровать ~1ms сигнала и сложить в буфер для дальнейшей обработки.
В ДШ нигде не нашел описание непрерывного режима преобразований (continious mode). Я конечно догадываюсь что это, но хотелось бы уточнить smile.gif.

В примере с фтп Analog'a при использовании непрерывного преобразования каждый раз переключают каналы 0 и 1. Это просто измеряют два разных сигнала, или к обоим каналам подключен один и тот же сигнал, а такое переключение дает выграш в быстродействии?

Код
    ADCCON = 0x4E4;    // Config: fADC/2, acq. time = 2 clocks => ADC Speed = 1MSPS

    while(1)
    {            // start continuous conversion    
        for (i=0; i <2; i++)
        {
            while (!ADCSTA){}            // wait for end of conversion
            ADCDATA[i] = (ADCDAT >> 16);
            if (ADCCP == 0)    ADCCP = 1;    // change channel
            else ADCCP = 0;
        }

    }



PWM - работает напрямую (настроить порты ввода-вывода):

GP3CON = 0x00000011; // Enable the PWM outputs to the GPIO

для моего случая:

PWMCON = 0x0005; //0x0001; // 0x01 is enabled //0x05
PWMDAT0=_F_Ram_P_Shim; //мои значения частоты модуляции и гарантированной паузы
PWMDAT1=_F_Ram_Pt_Shim;
PWMCFG = 0x0008; //
PWMA = 0x0000; // A channel
PWMB= 0x0000; // B channel
PWMC= 0x0000; // C channel
PWMEN = 0x010F; // Enable (0=enabled)

обратите внимание - значения модуляции СО ЗНАКОМ (0x00000000 - меандр)


ADC:

REFCON=0x01; //включ. внутр. опорн напр
ADCCP=0x02; //выбор канала
ADCCN=0x00; //---------
ADCCON = 0xA4; //непрерывный режим

остальное как вы и написали выше

у меня один даташит на ADuC702x. (есть и на русском)
/примеры для ADuC7024 (в KEIL )/
Go to the top of the page
 
+Quote Post
Paramon
сообщение Mar 7 2007, 10:08
Сообщение #3


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

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Цитата(Paramon @ Mar 7 2007, 08:49) *
Цитата(condor @ Mar 6 2007, 19:13) *

Делаю свою первый проект на ADUC'e.
Из-за неполного даташита появились непонятки.

---- PWM ----
В маленьком корпусе ШИМ напрямую наружу не выходит. В ДШ написано, что можно вывести через PLA.
Сделал так:

Код
PLAELM8 = 0x0035;
PLAELM15 = 0x0059;
PLAELM0 = 0x0059;

GP1CON = 0x3 << 28; // (PWM)PLAO[0] -> P1.7
GP3CON = 0x1;  // PWM0 -> P3.0(PLAI[8])

Но смущает то, что в ИАРовском хедере ioaduc7021.h нету описания регистров ШИМа. Он в этом контроллере присутствует?
Утилита PLA Tool тоже ведет себя непонятно. При записи в PLAELM8 0x0035 (т.е. подключение ко входу элемента8 P3.0 (PWM)) ругается "The GPIO pins you selected as inputs to the elements of Block1 have been disabled as they are not available on ADuC2071". Это утилита кривая или действительно можно подключать к PLA только выведенные наружу входы?

---- ADC ----
Нужно с максимальной скоростью оцифровать ~1ms сигнала и сложить в буфер для дальнейшей обработки.
В ДШ нигде не нашел описание непрерывного режима преобразований (continious mode). Я конечно догадываюсь что это, но хотелось бы уточнить smile.gif.

В примере с фтп Analog'a при использовании непрерывного преобразования каждый раз переключают каналы 0 и 1. Это просто измеряют два разных сигнала, или к обоим каналам подключен один и тот же сигнал, а такое переключение дает выграш в быстродействии?

Код
    ADCCON = 0x4E4;    // Config: fADC/2, acq. time = 2 clocks => ADC Speed = 1MSPS

    while(1)
    {            // start continuous conversion    
        for (i=0; i <2; i++)
        {
            while (!ADCSTA){}            // wait for end of conversion
            ADCDATA[i] = (ADCDAT >> 16);
            if (ADCCP == 0)    ADCCP = 1;    // change channel
            else ADCCP = 0;
        }

    }



PWM - работает напрямую (настроить порты ввода-вывода):

GP3CON = 0x00000011; // Enable the PWM outputs to the GPIO

для моего случая:

PWMCON = 0x0005; //0x0001; // 0x01 is enabled //0x05
PWMDAT0=_F_Ram_P_Shim; //мои значения частоты модуляции и гарантированной паузы
PWMDAT1=_F_Ram_Pt_Shim;
PWMCFG = 0x0008; //
PWMA = 0x0000; // A channel
PWMB= 0x0000; // B channel
PWMC= 0x0000; // C channel
PWMEN = 0x010F; // Enable (0=enabled)

обратите внимание - значения модуляции СО ЗНАКОМ (0x00000000 - меандр)


ADC:

REFCON=0x01; //включ. внутр. опорн напр
ADCCP=0x02; //выбор канала
ADCCN=0x00; //---------
ADCCON = 0xA4; //непрерывный режим

остальное как вы и написали выше

у меня один даташит на ADuC702x. (есть и на русском)
/примеры для ADuC7024 (в KEIL )/




Прошу простить за мою глупость (правильно говорят: сколько дурака ни бей....)
в ADuC7021 PWM вообще не значится(по даташиту).
Он есть начиная с 7024.

Еще раз извиняюсь!
Go to the top of the page
 
+Quote Post
condor
сообщение Mar 7 2007, 15:04
Сообщение #4


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

Группа: Свой
Сообщений: 93
Регистрация: 18-06-05
Из: Kyiv, Ukraine
Пользователь №: 6 126



Цитата(Paramon @ Mar 7 2007, 09:08) *
Прошу простить за мою глупость (правильно говорят: сколько дурака ни бей....)
в ADuC7021 PWM вообще не значится(по даташиту).
Он есть начиная с 7024.

Еще раз извиняюсь!

А вот это уже интересно.
В каком ДШ?
Я нашел только такую фразу:

DIGITAL PERIPHERALS
THREE-PHASE PWM
Each ADuC7019/7020/7021/7022/7024/7025/7026/7027 provides a flexible and programmable, three-phase pulse-width modulation (PWM) waveform generator.

.................

40-Pin Package Devices
On the 40-pin package devices, the PWM outputs are not directly accessible, as described in the General-Purpose Input/Output section. One channel can be brought out on a GPIO via the PLA as shown in this example:

Код
PWMCON = 0x1; // enables PWM o/p
PWMDAT0 = 0x055F; // PWM switching freq
// Configure Port Pins
GP4CON = 0x300; // P4.2 as PLA output
GP3CON = 0x1; // P3.0 configured as
// output of PWM0
//(internally)
// PWM0 onto P4.2
PLAELM8 = 0x0035; // P3.0 (PWM output)
// input of element 8
PLAELM10 = 0x0059; // PWM from element 8


Так все таки он там есть или нету? smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:38
Рейтинг@Mail.ru


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