Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

fastPWM и Atmega 1280
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10660
Страница 1 от 1

Автор:  westony [ Пон Ное 05, 2012 2:36 am ]
Заглавие:  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-а...

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

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

Автор:  Cino [ Пон Ное 05, 2012 11:18 am ]
Заглавие:  Re: fastPWM и Atmega 1280

не си пуснал таймера

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

Този CS00 не е в TCCR0A

Автор:  westony [ Пон Ное 05, 2012 12:04 pm ]
Заглавие:  Re: fastPWM и Atmega 1280

Благодаря #Cino, но сега идват други въпроси....


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

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

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

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

Автор:  Cino [ Пон Ное 05, 2012 12:31 pm ]
Заглавие:  Re: fastPWM и Atmega 1280

ами така са решили прозводителите.
т. 16.9.2. от пълния даташит на ATMEGA1280.

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

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

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

и така..

Автор:  westony [ Пон Ное 05, 2012 5:00 pm ]
Заглавие:  Re: fastPWM и Atmega 1280

ОК, но нещо има, което явно не разбирам или по-скоро не мога да се ориентирам каква е връзката помежду пиновете и таймерите

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

Поздрави

Автор:  Ники [ Пон Ное 05, 2012 5:54 pm ]
Заглавие:  Re: fastPWM и Atmega 1280

още на първите страници от документа на проца, има картинка на пиновете по корпуса и алтернативните им функции, ако искаш да ползваш хардуерно таймерите да извеждат PWM, гледаш пиновете на които има алтернативна функция OCxy (output compare) и в коя конфигурация на даден таймер се ползва тази алтернативна функция OCxy

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

Автор:  westony [ Чет Ное 08, 2012 3:19 pm ]
Заглавие:  Re: fastPWM и Atmega 1280

Все още не успявам да загрея как става... мн съм зле и първия опит си личи ... не мога да разбера как и какво да търся в докуметнацията... търся OC1B и показва първо пина на картата на процесора, второто е дава обяснение за самия пин и описва алтернативните му фунцкии, после показва таблица с override функциите, след което показва таблица 17-4 която дава пояснение за FAST PWM и как битовете на регистъра трябва да са настроени, след което таблица за другите PWM модове и накрая друга по-голяма таблица, която не разбирам....

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

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

Автор:  CarBeta [ Чет Ное 08, 2012 8:47 pm ]
Заглавие:  Re: fastPWM и Atmega 1280

За първи път отварям чаршаф на AVR и виждам точка 16 -> 8-bit Timer/Counter0 with PWМ. Описано е човешки кое, къде, как и защо. Дали пък да не си поиграеш с някое ATtiny първо???

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/