Перейти к содержанию
    

2 кан. АЦП + 2 канала ШИМ (Fast PWM) на tyny13 такое возможно?

Я полный чайник в программировании МК, это мой первый проект на avr, поэтому просьба сильно ногами не пинать.

Пытаюсь решить задачу на tyny13.

Задача:

Организовать 2 канала АЦП (8 разрядов) независимо управляющих 2-мя каналами ШИМ (желательно Fast PWM).

Алгоритм работы такой- устройство поочередно оценивает каждый входной канал и в зависимости от уровня сигнала управляет скважностью соответствующего канала ШИМ.

На входы АЦП планирую подавать аудиосигнал.

Проверяю проект в Протеусе, он показывает что работает только один канал ШИМ (OC0A).

Своим г#внокодом вас грузить не буду только задам вопросы.

Вопросы:

1.Поддерживает ли tyny13 Fast PWM по двум каналам одновременно?

2. Если нет то каким образом можно решить поставленную задачу?

3.Можно ли не использовать делитель тактового сигнала если я использую 8 разрядов АЦП?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. поддерживает

2. см. п.1

3. делитель тактового сигнала не связан с числом используемых разрядов АЦП - все равно он будет 10 бит насчитывать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1.Поддерживает ли tiny13 Fast PWM по двум каналам одновременно?

У нее же всего один таймер, поэтому на разных каналах можно только скважность разную установить, но частоту на каналах разной не сделаешь.

 

2. Если нет то каким образом можно решить поставленную задачу?

Взять контроллер, у которого 2 или больше таймеров.

 

3.Можно ли не использовать делитель тактового сигнала если я использую 8 разрядов АЦП?

А что мешает использовать все разряды? В крайнем случае можно сдвинуть число вправо на 2 разряда - вот и останется 8 бит (старших).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. поддерживает

2. см. п.1

3. делитель тактового сигнала не связан с числом используемых разрядов АЦП - все равно он будет 10 бит насчитывать

Спасибо за оперативный ответ.

Значит буду дальше вправлять мозги МК и себе заодно :)

 

У нее же всего один таймер, поэтому на разных каналах можно только скважность разную установить, но частоту на каналах разной не сделаешь.

 

 

Взять контроллер, у которого 2 или больше таймеров.

 

 

А что мешает использовать все разряды? В крайнем случае можно сдвинуть число вправо на 2 разряда - вот и останется 8 бит (старших).

Вам тоже большое спасибо за ответ.

Разная частота как раз и не нужна, нужна именно скважность зависящая от уровня входного сигнала.

Не-е-е контроллер менять никак нельзя, я их что зря что ли 10 штук купил :)

Кроме сильно ограниченных знаний и навыков ничто не мешает использовать все 10 разрядов АЦП, но для моих целей вполне достаточно 8 разрядов :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У нее же всего один таймер, поэтому на разных каналах можно только скважность разную установить, но частоту на каналах разной не сделаешь.

Автору, как я понял, это и не требуется.

 

Взять контроллер, у которого 2 или больше таймеров.

Записывать значения в регистры OCR0A и OCR0B и получать два сигнала с разной скважностью.

 

А что мешает использовать все разряды? В крайнем случае можно сдвинуть число вправо на 2 разряда - вот и останется 8 бит (старших).

Если поставить бит ADLAR в регистре ADMUX то ничего сдвигать не нужно - старшие 8 бит будут в ADCH. В этом случае разрешается читать только ADCH, а ADCL игнорировать.

 

Вот только назначение устройства не очень понято - нужно аналоговый сигнал преобразовывать в ШИМ? А потом? Фильтровать будешь?

 

Кроме сильно ограниченных знаний и навыков ничто не мешает использовать все 10 разрядов АЦП

Я полагаю, мешать может лишь разрядность таймера :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Автору, как я понял, это и не требуется.

 

 

Записывать значения в регистры OCR0A и OCR0B и получать два сигнала с разной скважностью.

 

 

Если поставить бит ADLAR в регистре ADMUX то ничего сдвигать не нужно - старшие 8 бит будут в ADCH. В этом случае разрешается читать только ADCH, а ADCL игнорировать.

 

Вот только назначение устройства не очень понято - нужно аналоговый сигнал преобразовывать в ШИМ? А потом? Фильтровать будешь?

 

 

Я полагаю, мешать может лишь разрядность таймера :)

Делаю все как вы сказали то есть записываю поочередно значения ADCH в регистры OCR0A и OCR0B (бит ADLAR установлен).

Назначение устройства примитивное к выходам ШИМ подключаю аналоговые (стрелочные) индикаторы, поэтому думаю что фильтровать ничего не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делаю все как вы сказали то есть записываю поочередно значения ADCH в регистры OCR0A и OCR0B (бит ADLAR установлен).

Назначение устройства примитивное к выходам ШИМ подключаю аналоговые (стрелочные) индикаторы, поэтому думаю что фильтровать ничего не надо.

А зачем тогда вообще контроллер? Почему бы не подключить индикаторы сразу к аналоговым сигналам которые ты оцифровываешь?

 

ЗЫ. У стрелочных индикаторов есть индуктивность, поэтому если подавать на них импульсное напряжение, то к ним еще диод нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем тогда вообще контроллер? Почему бы не подключить индикаторы сразу к аналоговым сигналам которые ты оцифровываешь?

 

ЗЫ. У стрелочных индикаторов есть индуктивность, поэтому если подавать на них импульсное напряжение, то к ним еще диод нужен.

Подключить индикаторы к аналоговым сигналам напрямую так это слишком просто и неинтересно.... А тут хочется хоть немного разобраться с АВРми, да плюс еще на свободные выводы tiny в перспективе пару аналоговых датчиков температуры повесить.

С диодом проще будет разобраться :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть еще один вопрос к экспертам.

Пытаюсь эмулировать работу устройства в AVR_Studio, устанавливая часть бит в регистре ADCH и ADCL (ADLAR=1).

Пытаюсь загрузить ADCH в OCR0A (OCR0B) но он грузит только младшие два бита. Это так и должно быть?

Если правильно перевел даташит в ADCH должен быть 8 битный результат преобразования АЦП.

Или я не правильно понял?

И еще не понятно почему в процессе эмуляции таймер не считает TCNT0=0.

Изменено пользователем Genri

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С диодом проще будет разобраться  :)

 

Мне кажется, Вы не поняли, о чем Вам говорили. У стрелочных индикаторов существует назовем ее в данном случае "паразитная" индуктивность. Чтобы с ней бороться - следует включить в схему диод

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется, Вы не поняли, о чем Вам говорили. У стрелочных индикаторов существует назовем ее в данном случае "паразитная" индуктивность. Чтобы с ней бороться - следует включить в схему диод

 

Да вы действительно правильно заметили я не о том подумал.

Видимо имелось ввиду включение диода в обратном направлении параллельно катушке, аналогично диод включаются при подключении обмотки реле.

Если не ошибаюсь поможет не спалить выходы МК. Теперь правильно понял? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу заставить работать выход OC0B в режиме Fast PWM.

Подскажите пожалуйста как правильно настроить регистры?

Изменено пользователем Genri

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу заставить работать выход OC0B в режиме Fast PWM.
Вы не забыли настроить РВ1 на вывод?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы не забыли настроить РВ1 на вывод?

Да вроде нет.

DDRB=(1<<DDB5)|(0<<DDB4)|(1<<DDB3)|(0<<DDB2)|(1<<DDB1)|(1 << DDB0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...