Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/48: Рейтинг темы: голосов - 48, средняя оценка - 4.81
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
1

PWM си atmega16 avrstudio 5/6

07.08.2012, 01:36. Просмотров 8764. Ответов 17
Метки нет (Все метки)

Собственно я гуглил по этим словам, ничего стоящего не нашел PWM си atmega16 avrstudyo 5/6, причем нужен именно avrstudyo 5/6 и си и atmega16, в теории я читал про шим меги16, все понятно, но не нашел обучающего кода на си под avrstudyo 5/6 и для меги16.Помогите пожалуйста новечку.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2012, 01:36
Ответы с готовыми решениями:

СМА whirlpool awt2288 проц atmega16 прошить, проц atmega16 прошить
есть ли защита от считывания? То есть могу ли я слить прошивку процессора и записать на другой?

AVRStudio 5
ЕСть ли уже AVRStudyo 5 не бетта? если да, дайте ссылочку на скачку торрента )

usart на СИ в AVRStudio
Кто-то знает какую библиотеку нужно подключить для работы с усартовскими регистрами? в папке...

Частота МК в AvrStudio
Всем привет! Можно ли в Avr Studyo при работе в отладчном режиме, задать необходимую частоту МК,...

Помогите с AVRstudio
Здравствуйте! У меня вот какой вопрос. При работе в последней версии AVRstudyo при отладке проекта...

17
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
07.08.2012, 02:08 2
Код
TCCR2 = (1<<WGM21)|(1<<WGM20)|(1<<COM21)|(0<<COM20)|(1<<CS02)|(0<<CS01)|(0<<CS00);
ффсё.
в OCR2 закидываешь значение. на ногу цепляешь светик и в зависимости от значения смотришь на изменение яркости.
0
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
07.08.2012, 02:12 3
tid_fom,извените а можете написать программу и пояснения к строкам, потому что такие ответы как у вас гугл выдал много но они не развернутые, без явного примера и непонятные.
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
07.08.2012, 02:27 4
читать: http://iosyitistromyss.ru/avr-uchebnyj- ... -shim.html
Код
#include <avr/io.h>
#include <util/delay.h>;
int main(void)
{
unsykned char tt = 0;
TCCR2 = (1<<WGM21)|(1<<WGM20)|(1<<COM21)|(0<<COM20)|(1<<CS02)|(0<<CS01)|(0<<CS00); //настраиваем таймер.
//подробности в даташите и вышеприведенной статье
SetByt(PORTD, PD7); // порт на выход. Всегда ваш Кэп. ;)
while (1)
{
OCR2 = tt;
_delay_ms(1000);
tt+=0x08;
}
}
что здесь пояснять, даже и не знаю. ну не опускаться ведь до комментов типа //в OCR2 загружаем значение.
вообще, читать ВЕСЬ учебный курс на головном сайте (http://iosyitistromyss.ru)
0
07.08.2012, 02:27
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
07.08.2012, 02:30 5
читал это, как раз мне комментарии и нужны.
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
07.08.2012, 02:38 6
ДА ЧТО ЗДЕСЬ КОММЕНТИРОВАТЬ??! =0
давай рассмотрим один из примеров из статьи:
Код
;FastPWM Init
SITB   DDRD,4,R16   ; DDRD.4 = 1 Порты на выход //SetByt(PORTD, PD4);
SITB   DDRD,5,R16   ; DDRD.5 = 1                       //SetByt(PORTD, PD5);
// или одной строкой: PORTD |= (1<<PD4)|(1<<PD5);

; Выставляем для обоих каналов ШИМ режим вывода ОС** сброс при совпадении.
; COM1A = 10 и COM1B = 10
; Также ставим режим FAST PWM 8bit (таймер 16ти разрядный и допускает
; большую разрядность ШИМ сигнала. Вплоть до 10 бит.  WGM = 0101
; Осталось только запустить таймер на частоте МК CS = 001

OUTI    TCCR1A,2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10    // TCCR1A = 2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10;
OUTI   TCCR1B,0<<WGM13|1<<WGM12|1<<CS10                         //TCCR1B = 0<<WGM13|1<<WGM12|1<<CS10
заменяем асмовые инструкции сишными в лоб, ... , ПРОФИТ!
что еще можно добавить???????
0
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
07.08.2012, 02:40 7
добавить? да мне нужжен этот код, только на си с комментариями и все.
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
07.08.2012, 02:42 8
что непонятно - спрашивай. только конкретно. перевод даташита меги128 читать на гаве: http://www.gaw.ru/html.cgi/txt/doc/micr ... /index.htm
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
07.08.2012, 02:42 9
Цитата Сообщение от bortyk226
добавить? да мне нужжен этот код, только на си с комментариями и все.
если присмотреться, я там в комментах написал аналоги на сях
0
Modist
0 / 0 / 0
Регистрация: 11.07.2012
Сообщений: 111
07.08.2012, 12:27 10
Тема уже была.
Перейти по теме
0
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
08.08.2012, 22:42 11
Код
#define InvByt(reg, bit)     reg ^= (1<<(bit)) //InvByt(PORTD, PD0)
#define ClearByt(reg, bit)       reg &= (~(1<<(bit))) //ClerarByt(PORTD, PD0)
#define SetByt(reg, bit)          reg |= (1<<(bit))    //SetByt(PORTD, PD0)
#define BytIsSet(reg, bit)       ((reg & (1<<bit)) != 0) // if (BytIsSet(PIND, PD0))...
#define F_CPU 8000000UL
#include  <avr/io.h>
#include  <util/delay.h>
int main(void)
{
unsykned char tt = 0;
TCCR2 = (1<<WGM21)|(1<<WGM20)|(1<<COM21)|(0<<COM20)|(1<<CS02)|(0<<CS01)|(0<<CS00); //настраиваем таймер.
//подробности в даташите и вышеприведенной статье
SetByt(PORTD, PD7); // порт на выход. Всегда ваш Кэп. ;)
while (1)
{
OC2 = tt;
_delay_ms(20);
tt = tt + 0x0f;
}
}
меняю значение tt, но ничего не происходит
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
08.08.2012, 22:52 12
воон там опечатка. должно быть OCR2=tt;
0
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
08.08.2012, 23:32 13
я правельно понимаю, по этой программе светодиод должен постепенно становиться ярче а потом заново? ну вообще ничего не происхдит со светодиодом, он тускло-тускло горит
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
08.08.2012, 23:51 14
Он должен делать так: уууУУУУИИИИИИууууУУУУУИИИИИ. Ну то есть тускло-ярче-ярко-тускло-ярче... и т.д
0
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
08.08.2012, 23:57 15
да я так и понял из кода, но он просто тускло горит если считать по дести бальной шкале то на 3-ечку и кстати некоторые из ножек порта с так же горят тухло как и портd7
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
09.08.2012, 00:07 16
Кеп немного не прав. Надо не
SetByt(PORTD, PD7); // порт на выход. Всегда ваш Кэп. ;)
а
SetByt(DDRD, PD7); // порт на выход. Всегда ваш Кэп. ;)
0
bortyk226
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
09.08.2012, 00:10 17
ура, спасибо вам огромное, все заработало)
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
09.08.2012, 00:17 18
угу. прое..л. каюсь и посыпаю голову пеплом.
0
09.08.2012, 00:17
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2012, 00:17

AVRstudio не компилит
Так получилось что пришлось заново устанавливать винду и все сопутствующие программы, в том числе и...

AVRstudio 4.18 & winAVR
Работала связка как надо но однажды(вчера вечером) на рабочем проекте выдала токую х... make: *** ...

Отладка в AVRStudio
Добрый день. Опять хочу обратится за советом. Использую для написания программ AVRStudyo +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.