PWM в ATtiny2313.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Pika4u
Поставщик валерьянки для Кота
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

PWM в ATtiny2313.

Сообщение Pika4u »

Нужно включить режим Fast PWM в Attiny2313. Что нужно записать в TCCR0A и TCCR0B? Даташит читал, но он меня и запутал сильнее...
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Реклама
Аватара пользователя
Pika4u
Поставщик валерьянки для Кота
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Re: PWM в ATtiny2313.

Сообщение Pika4u »

Пытаюсь организовать что-то типа управления частотой светодиода кнопкой. Но больно пока не получается. Что не так? Светодиод ведет себя немного странно. Выкладываю исходник и проект в Протеусе. Исходник:

Код: Выделить всё

#include<iotn2313.h> 
#include<util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
main()
{
DDRB=255;
PORTB=0;
DDRD=0;
TCCR0B=0b00000100;
OCR0A=255;
TIMSK=0b00000001;
sei();
while(1)
{
if((PIND &(1<<0))==0)
{
OCR0A-=50;
if(OCR0A==5)
{
OCR0A=255;
}
}
}
}
ISR (TIMER0_COMPA_vect)
{
TCNT0=0;
PORTB^=(1<<0);  //инвертируем сигнал на выводе PB0
}
Вложения
pwm.rar
(12.75 КБ) 181 скачивание
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Реклама
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: PWM в ATtiny2313.

Сообщение Goodefine »

Pika4u писал(а): Даташит читал, но он меня и запутал сильнее...
На китайском? Вы уж простите, но в теме про таймер0 тиньки вам насоветовали достаточно много. Видимо, напрасно..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
Pika4u
Поставщик валерьянки для Кота
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Re: PWM в ATtiny2313.

Сообщение Pika4u »

Прощаю. Согласен, насоветовали много и по делу. Но тут я пытаюсь сделать что-то сам и у меня возникли трудности
.
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Реклама
Эиком - электронные компоненты и радиодетали
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: PWM в ATtiny2313.

Сообщение BerZerK-ku »

Попробуйте вот так, может придется подправить под свой компилятор:

Код: Выделить всё

#include<iotn2313.h> 
#include<util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
main()
{
DDRB = (1 << DDB0); // настройка порта B
TCCR0A = (1 << WGM01) | (1 << WGM00); // выбор режима Fast PWM
TIMSK = (1 << OCIE0A) | (1 << TOIE0); // разрешение прерываний
sei();
TCCR0B = (1 << CS02); // запуск таймера с делителем 1024
while(1)
{
if((PIND &(1<<0))==0)
{
OCR0A-=50;
if(OCR0A==5)
{
OCR0A=255;
}
}
}
}
ISR (TIMER0_COMPA_vect)
{
PORTB &= ~(1 << PORTB0);  // 0
}
ISR (TIMER0_OVF0_vect)
{
PORTB |= (1 << PORTB0);  // 1
}
Но лучше всего будет подключить управление пином OC0A и убрать прерывания от таймера.

Код: Выделить всё

 DDRB = (1 << DDB2);
TCCR0A = (1 << COMA1) | (1 << WGM01) | (1 << WGM00); // выбор режима Fast PWM
Настройка периферии хорошо разжевана в литературе. Читайте книги.
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»