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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,770 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: АЦП на Атмега8 и УАРТ - помогите

Сообщение от AsSoul Посмотреть сообщение
Да, полезно. Но там про аппаратный ШИМ. А про программный нет почти. Но сам принцип описан подробно.
Полностью "программный" ШИМ не применим, т.к. съедает все ресурсы, выполняется в главном цикле. Полностью аппаратный из-за разводки платы - тоже. Поэтому вариант аппаратно-программный. Ногами дрыгаем программно, но для этого прерывания вырабатываем "аппаратно", т.е., связь аппаратного ШИМа с дрыгаемой ногой программная. Это хорошо еще и полной свободой выбора - какой ногой пошевелить (прямо в обработчике прерывания в соответствии с направлением вращения). Посмотрите тему "прерывания" - это совсем не страшно.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 16.04.2013, 13:05  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
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.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
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.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
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.RU
 
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: АЦП на Атмега8 и УАРТ - помогите

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

PHP код:

char    cnt_1
;
char    wm_1;

interrupt [TIM1_COMPAvoid 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, время: 06:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot