Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

АЦП на Атмега8 и УАРТ - помогите

Непрочитано 15.04.2013, 23:36  
AsSoul
Частый гость
 
Регистрация: 27.03.2013
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AsSoul на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Сообщение от akegor Посмотреть сообщение
AsSoul, полезно почитать:
http://easyelectronics.ru/avr-uchebn...anie-shim.html
Да, полезно. Но там про аппаратный ШИМ. А про программный нет почти. Но сам принцип описан подробно.
Реклама:
AsSoul вне форума  
Непрочитано 16.04.2013, 06:31  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Сообщение от AsSoul Посмотреть сообщение
Да, полезно. Но там про аппаратный ШИМ. А про программный нет почти. Но сам принцип описан подробно.
Полностью "программный" ШИМ не применим, т.к. съедает все ресурсы, выполняется в главном цикле. Полностью аппаратный из-за разводки платы - тоже. Поэтому вариант аппаратно-программный. Ногами дрыгаем программно, но для этого прерывания вырабатываем "аппаратно", т.е., связь аппаратного ШИМа с дрыгаемой ногой программная. Это хорошо еще и полной свободой выбора - какой ногой пошевелить (прямо в обработчике прерывания в соответствии с направлением вращения). Посмотрите тему "прерывания" - это совсем не страшно.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 16.04.2013, 13:05  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Переделал - чем больше pwm тем быстрее
Вложения:
Тип файла: zip Схема_n2.zip (108.0 Кб, 50 просмотров)
oleg110592 вне форума  
Непрочитано 16.04.2013, 15:43  
AsSoul
Частый гость
 
Регистрация: 27.03.2013
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AsSoul на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Сообщение от oleg110592 Посмотреть сообщение
Переделал - чем больше pwm тем быстрее
Работает!) Спасибо. Сегодня на железе проверю, что получиться.)
AsSoul вне форума  
Непрочитано 21.04.2013, 20:55  
AsSoul
Частый гость
 
Регистрация: 27.03.2013
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AsSoul на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

oleg110592, снова здравствуйте. Снова вернулась к программе. Можете ответить на несколько вопросов по последней программе?

Правильно ли я понимаю, что там происходит?

1) цикл прерывания interrupt [TIM0_OVF] void timer0_ovf_isr(void) -›

Мы подаем 1 на ENABLE (т.е. как бы включаем драйвер) до тех пор пока pwm_counter не станет больше pwm. А также при достижении pwm_counter значения 200 сбрасываем его в 0. (а почему такое ограничение в 200, почему не 300, 400? изначально pwm_counter у нас равен нулю?)

2) цикл while (1) -›

1 - строка 231 -устанавливаем значение ШИМ
2 - строки 233-235 - крутим двиг в одну сторону + задержка 2 сек. (т.е. я так
понимаю у нас двигатель крутится 2 секунды?)
3 - строки 237-240 - стоп - останавливаем двиг (а почему подаем единицы, а не
нули?)
4 - строки 242-244 - крутим двиг в другую сторону + задержка 2 сек.
5 - все сначала - см. пункт1
AsSoul вне форума  
Непрочитано 21.04.2013, 21:32  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

1) pwm_counter у нас unsigned char - 8 битная переменная - максимум 255, можно сделать unsigned int - будет максимум 65536, но тогда частота шим будет 16000000Гц/65536=244Гц - будет слышно гул в двигателе, а так у нас 16000000/200 - 80000Гц. Вообще то многовато для реальных условий - делал 20000Гц - ухо не слышит) . Число 200 от фонаря, брал из своих поделок - мне хватало 200 градаций.
2) все правильно. Стоп там, похоже не правильно - лучше значение шим сделать минимальным, подождать пока остановится, установить опять шим, затем крутить в другую сторону.
oleg110592 вне форума  
Непрочитано 21.04.2013, 22:25  
AsSoul
Частый гость
 
Регистрация: 27.03.2013
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AsSoul на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Сообщение от oleg110592 Посмотреть сообщение
1) pwm_counter у нас unsigned char - 8 битная переменная - максимум 255, можно сделать unsigned int - будет максимум 65536, но тогда частота шим будет 16000000Гц/65536=244Гц - будет слышно гул в двигателе, а так у нас 16000000/200 - 80000Гц. Вообще то многовато для реальных условий - делал 20000Гц - ухо не слышит) . Число 200 от фонаря, брал из своих поделок - мне хватало 200 градаций.
2) все правильно. Стоп там, похоже не правильно - лучше значение шим сделать минимальным, подождать пока остановится, установить опять шим, затем крутить в другую сторону.
1) а сам алгоритм работы я правильно поняла?)

2) т.е. поставить pwm=0?
AsSoul вне форума  
Непрочитано 21.04.2013, 22:31  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

1)алгоритм правильно
2)Попробуйте 0, у меня было минимум 1 - это будут очень короткие импульсы - раскрутить двигатель не смогут
oleg110592 вне форума  
Непрочитано 21.04.2013, 22:37  
AsSoul
Частый гость
 
Регистрация: 27.03.2013
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AsSoul на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Сообщение от oleg110592 Посмотреть сообщение
1)алгоритм правильно
2)Попробуйте 0, у меня было минимум 1 - это будут очень короткие импульсы - раскрутить двигатель не смогут
Спасибо, попробую!)
AsSoul вне форума  
Непрочитано 21.04.2013, 22:42  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: АЦП на Атмега8 и УАРТ - помогите

Программный шим - это просто. Для этого нужен 1 аппаратный счётчик. На нём можно построить хоть сотню шимов.

PHP код:

char    cnt_1;
char    wm_1;

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
cnt_1++;
if(cnt_1 › 99)      cnt_1 = 0;
if(cnt_1 ‹ pwm_1)   PORTD.1 = 1;
else                PORTD.1 = 0;  
} 
В переменную pwm_1 заносим нужную скважность (в процентах).
Частота шим будет в 100 раз ниже частоты ссрабатывания таймера.

Для точных интервалов надо использовать режим CTC таймеров (сброс при совпадении).
Godzilla82 вне форума  
 

Метки
атмега8, ацп, уарт
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с АЦП putmannn Электроника - это просто 5 19.09.2011 20:43
Несчастный УАРТ jakuchma Микроконтроллеры, АЦП, память и т.д 52 10.02.2011 17:36
Кто по дзс1768 поможет? уарт не пашет индюк Микроконтроллеры, АЦП, память и т.д 0 14.01.2011 02:31
[Решено] Помогите опознать АЦП ? sh2cer Информация по радиокомпонентам 2 08.12.2009 17:12
Proteus 7.1sp4 и АТмега8 ARM7TDMI Микроконтроллеры, АЦП, память и т.д 1 26.03.2008 16:52


Часовой пояс GMT +4, время: 15:52.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.