Форум по микроконтроллерам: Работа с модулем DAC и получение синусоидального сигнала. - Форум по микроконтроллерам

Перейти к содержимому

  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Работа с модулем DAC и получение синусоидального сигнала.

#1 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 15 Январь 2016 - 10:08

Обсуждение статьи Получение синусоидального сигнала с ЦАП микроконтроллера.
0

#2 Пользователь офлайн   Игорь Бутывский 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 219
  • Регистрация: 15 Февраль 11

Отправлено 16 Январь 2016 - 08:36

Коля, какая максимальная частота достигается на выходе?
0

#3 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 16 Январь 2016 - 10:20

Надо подсчитать... приеду домой попробую. Но с учетом того что тактовая частота МК 32 МГц и всего 32 шага (для формирования одного периода), а для одного шага допустим нужно 50 м.ц (хотя наверно меньше), то для одного периода нужно где то 200 us то должно получиться до 50КГц. Хотя могу и ошибаться.... проверю.
0

#4 Пользователь офлайн   Игорь Бутывский 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 219
  • Регистрация: 15 Февраль 11

Отправлено 16 Январь 2016 - 10:36

За глаза хватит для простого речевого информатора.
0

#5 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 16 Январь 2016 - 11:27

Ошибся в 10 раз.... получилось 5.8 кГц. В общем 5 кГц..

Прикрепленное изображение: IMG_9964_thumb.jpg


Но с другой стороны это синусоида в 32 шага.... а если просто цифровой сигнал то умножить на32..:dance2:
0

#6 Пользователь офлайн   Игорь Бутывский 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 219
  • Регистрация: 15 Февраль 11

Отправлено 16 Январь 2016 - 12:40

Для речевых информаторов (простых) берётся частота звукового сигнала около 3кГц. Самый распознаваемый ухом.
0

#7 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 16 Январь 2016 - 17:27

Просмотр сообщенияИгорь Бутывский (16 Январь 2016 - 12:40) писал:

Для речевых информаторов (простых) берётся частота звукового сигнала около 3кГц. Самый распознаваемый ухом.


Это я помню ... как в связи, аналоговый канал должен быть 0.3-3.4 кГц
0

#8 Гость_Brown_*

  • Группа: Гости

Отправлено 02 Июнь 2016 - 11:24

Добрый день.
Очень интересует использование DAC на pic12f1822.
Я начинающий кодировал немного на PRoton basic.но тут столкнулся с тем,что этот компилятор не понимает много команд
для этого пика.Буду изучать СИ.Не могли бы ВЫ показать всю программу- " Работа с модулем DAC и получение синусоидального сигнала", вместе с настройками,или еще какой пример с PIC 12f1822 ?

#9 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 02 Июнь 2016 - 14:35

Вечером найду и скину проект. Там по сути и нет ничего.....
0

#10 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 02 Июнь 2016 - 14:42

Нашел на работе...
Проект MPLAB X IDE v2.05 XC8...

Прикрепленный файл  p12f1822_sinus.X1.rar (95,76К)
Количество загрузок:: 79

Что не понятно спрашивайте...
0

#11 Гость_Brown_*

  • Группа: Гости

Отправлено 02 Июнь 2016 - 17:35

Спасибо огромное сегодня буду разбираться.
Установил MPLAB X IDE и XC8.




Сегодня пытался запустит программу в Proteus .Ничего не получается только происходит сброс по WDT.
У Вас не сохранился файл для Proteus?

Сообщение отредактировал Brown: 03 Июнь 2016 - 11:32


#12 Гость_Brown_*

  • Группа: Гости

Отправлено 03 Июнь 2016 - 11:32

Добрый день.
Сегодня пытался запустит программу в Proteus .Ничего не получается только происходит сброс по WDT.
У Вас не сохранился файл для Proteus?

#13 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 03 Июнь 2016 - 15:27

Все нормально работает...
Попробуйте этот.

Прикрепленный файл  p12f1822_sinus.X2.rar (118,96К)
Количество загрузок:: 89
0

#14 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 04 Июнь 2016 - 07:33

Получилось запустить?
0

#15 Гость_Brown_*

  • Группа: Гости

Отправлено 04 Июнь 2016 - 10:48

Добрый день.
Все прекрасно работает.Огромное спасибо.Сейчас изучаю все настройки.Пытаюсь ввести задержку,вот это принимает компилятор

_delay(100); // сделать задержку 100 машинных циклов.

_delay_us(100);//не хочет компилировать.

После включения.Все заработала задержка.

#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

Сообщение отредактировал Brown: 04 Июнь 2016 - 11:24


#16 Гость_Brown_*

  • Группа: Гости

Отправлено 04 Июнь 2016 - 21:08

]Добрый вечер.
Подскажите ,что я делаю не так.Хотел отвязаться от прерываний .Посмотрел на осциллографе с какой задержкой идет вывод информации
получилось 380 мкс.
Изменил Вашу программу ,при компиляции ошибок нет,но не работает.
/*
* File: main.c
* Author: nick
*

* * Created on 12 Январь 2016 г., 9:15
*/

#include <xc.h>
#include "main.h"
#include "periph.h"

#ifndef _XTAL_FREQ

// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 32000000
#endif


void main ()
{
unsigned int tmp;
unsigned int y;
unsigned int z;
Init_Periph();// конфигурация мк


do{

chetRaz++ ;
if (chetRaz > 31) chetRaz = 0;
DACCON1 = TablSinus[chetRaz];
__delay_us(250) ;
__delay_us(130);

} while (chetRaz > 50); // проверяем условие
}

Сообщение отредактировал Brown: 04 Июнь 2016 - 21:12


#17 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 04 Июнь 2016 - 23:18

void main ()
{
Init_Periph();// конфигурация мк

while(1)
{
chetRaz++ ;
if (chetRaz > 31) chetRaz = 0;
DACCON1 = TablSinus[chetRaz];
__delay_us(250) ;
__delay_us(130);
}
}
1

#18 Гость_Brown_*

  • Группа: Гости

Отправлено 05 Июнь 2016 - 12:43

Добрый день.
Все работает.Спасибо.

#19 Гость_Brown_*

  • Группа: Гости

Отправлено 07 Июнь 2016 - 21:00

Не могу понять,что не работает.Пытался изменить программу,чтобы в конце обработки DAC начал работать 1 канал АЦП.И с его результата получить задержку.При изменении входного напряжения на канале ни какая задержка не изменяется.

Прикрепленные файлы

  • Прикрепленный файл  DAC.X.rar (177,94К)
    Количество загрузок:: 71

Сообщение отредактировал Brown: 07 Июнь 2016 - 21:04


#20 Пользователь офлайн   nick14 

  • Группа: Администраторы
  • Сообщений: 1 469
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 07 Июнь 2016 - 21:55

Просмотр сообщенияBrown (07 Июнь 2016 - 21:00) писал:

Не могу понять,что не работает.Пытался изменить программу,чтобы в конце обработки DAC начал работать 1 канал АЦП.И с его результата получить задержку.При изменении входного напряжения на канале ни какая задержка не изменяется.

У Вас несколько ошибок в коде... Вам нужно разобраться более внимательно и понять что каждая строка делает..
  • Во первых условия в while(chetRaz < 31) в какой то момент будет ложным и программы выйдет из цикла выполнит ваш код АЦП и зависнет. Программа должна быть закольцована что бы условие всегда было истинно, т.е. while(1) { А ЗДЕСЬ могут быть различные функции .. }.
  • Потом посмотрите пример как нужно производить измерения, мало выбрать канал и начать преобразование, нужно и модуль включить, запретить прерывания, выдержать паузу для зарядки конденсатора.
  • И состояние отдельного бита так в СИ не проверяют.

Вы опишите что хотите получить в данном примере.
0

Поделиться темой:


  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей