Отговори на тема  [ 8 мнения ] 
fastPWM и Atmega 1280 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 23, 2011 3:49 pm
Мнения: 12
Мнение fastPWM и Atmega 1280
Здравейте имам един проблем с PWM, който така и не успях да разбера...


Почнах да чета за PWM-те или по-скоро да ги упражнявам. Мисля, че теорията я схванах, но стане ли дума за практика се ус*рам...

Та това е кодът ми:
Код:
#include <avr/io.h>


void init_PWM(void)
{
    TCCR0A|=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1)|(1<<CS00);
   

    //Set OC0 PIN as output. It is  PB3 on ATmega16 ATmega32

    DDRB|=(1<<PB7);
}

void setPWM(uint8_t duty)
{
   OCR0A = duty;
}


void main (void)
{
   uint8_t brightness = 0;
   init_PWM();
   
   for (brightness=0; brightness<=255; brightness++)
   {
      setPWM(brightness);
      _delay_ms(100);
   }
}



Проблемът, е че PB7 от PORTB, на чийто край има LED, не ще да светне ...

Предполагам, че някъде не съм "казал", че става дума за PB7, но не мога да разбера къде и как по-точно трябва да стане номера...

Целта ми е да увеличавам яркостта на LED-а...

Бих бил благодарен, ако някой успее да ми помогне :)

Благодаря предварително :)


Пон Ное 05, 2012 2:36 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 02, 2008 10:24 pm
Мнения: 105
Мнение Re: fastPWM и Atmega 1280
не си пуснал таймера

TCCR0B |= (0<<CS02) | (1<<CS01) | (1<<CS00);
примерно за прескалер 1/64;

Този CS00 не е в TCCR0A


Пон Ное 05, 2012 11:18 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 23, 2011 3:49 pm
Мнения: 12
Мнение Re: fastPWM и Atmega 1280
Благодаря #Cino, но сега идват други въпроси....


Защо TCCR0B, а не TCCR0А ???

Нещото, което не мога да разбера, е кога кой таймер трябва да използвам как да му кажа този таймер е за пин номер 34 например ?!?!

За първи път чета документация и ми е малко объркано...

Благодаря предварително
Поздрави


Пон Ное 05, 2012 12:04 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 02, 2008 10:24 pm
Мнения: 105
Мнение Re: fastPWM и Atmega 1280
ами така са решили прозводителите.
т. 16.9.2. от пълния даташит на ATMEGA1280.

Те регистрите на всички 8-бит Атмелски AVR,
са много близки по маниер. ( имат и разлики де ).

Когато който таймер да ползваш, зависи от теб.
Специално за PWM пиновете привързани към таймерите
те са твърдо зададени, не можеш да си избираш кой пин към кой таймер
да закачиш, за хардуерен PWM.
За софтуерен PWM можеш всеки свободен IO да използваш.

Когато конфигурираш таймер примерно
е хубаво да конфигурираш всички регистри които го обслужват.
Може и да се съобразиш с дефолтните техни стойности след ресет,ако си понапреднал.
Ако си новак, взимаш документа, гледаш всички регистри и им задаваш начални стойности, според това какво искаш да прави таймера.
Може да конфигурираш в инит функция. а да го запуснеш в друга функция на друго място в програмата.

и така..


Пон Ное 05, 2012 12:31 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 23, 2011 3:49 pm
Мнения: 12
Мнение Re: fastPWM и Atmega 1280
ОК, но нещо има, което явно не разбирам или по-скоро не мога да се ориентирам каква е връзката помежду пиновете и таймерите

Примерно сега искам да пусна PB6, как да се ориентирам в документацията, кой таймер да наглася ?

Поздрави


Пон Ное 05, 2012 5:00 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение Re: fastPWM и Atmega 1280
още на първите страници от документа на проца, има картинка на пиновете по корпуса и алтернативните им функции, ако искаш да ползваш хардуерно таймерите да извеждат PWM, гледаш пиновете на които има алтернативна функция OCxy (output compare) и в коя конфигурация на даден таймер се ползва тази алтернативна функция OCxy

edit: сега видях че пина който си избрал има функция, инициализираш го като изход, и в регистрите на таймер 1 ще видиш че за OC1B ома конфигурация(алтернативната функция на пина), това ти е връзката между таймера и конкретния пин, хардуерно!


Пон Ное 05, 2012 5:54 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 23, 2011 3:49 pm
Мнения: 12
Мнение Re: fastPWM и Atmega 1280
Все още не успявам да загрея как става... мн съм зле и първия опит си личи ... не мога да разбера как и какво да търся в докуметнацията... търся OC1B и показва първо пина на картата на процесора, второто е дава обяснение за самия пин и описва алтернативните му фунцкии, после показва таблица с override функциите, след което показва таблица 17-4 която дава пояснение за FAST PWM и как битовете на регистъра трябва да са настроени, след което таблица за другите PWM модове и накрая друга по-голяма таблица, която не разбирам....

но никъде не се описва, към кой таймер е и тн ... :(

Моля за помощ!
Поздрави


Чет Ное 08, 2012 3:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение Re: fastPWM и Atmega 1280
За първи път отварям чаршаф на AVR и виждам точка 16 -> 8-bit Timer/Counter0 with PWМ. Описано е човешки кое, къде, как и защо. Дали пък да не си поиграеш с някое ATtiny първо???


Чет Ное 08, 2012 8:47 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни