реклама на сайте
подробности

 
 
> Помогите с ШИМ на ATmega48
sergeus
сообщение Mar 19 2009, 20:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 174



Мужики, делаю вывод wav звука, бьюсь несколько часов, не могу найти баг в исходнике. Почему-то не работает ШИМ на ATmega48. Частота тактирования - внутр. осциллятор 8МГц. Может есть какая новая фича, до этого без проблем работал с ШИМ на 8й меге. Прерывание Таймер2 работает с частотой - 8кГц, - такова частота дискретизации WAV файла. ШИМ, за него отвечает таймер1, работает на частоте СК/1 - частота выходного шим сигнала - 31кГц. На выходе ножки OC1A стоит НЧ цепочка-фильтр. На ножке ничего нет - ни малейшего дрыганья. При симуляции в AVR Studio - есть сигнал на ножке PB1, а в реалии на железе нет, в чем дело?


Вот сам код на WinAVR:

CODE
...

ISR(TIMER2_OVF_vect){

OCR1A = music[num_byte];
num_byte++;

if (num_byte>959) num_byte=1; // stop timer1

TCNT2 = 224; // bitrate - 8 kHz

}

...

int main(void)
{

DDRD |=(1<<4)|(1<<3)|(1<<1)|(1<<6)|(1<<7); // LED OUT
PORTD |=(1<<6)|(1<<3); // LOW SEGMENT

DDRC = 0xFF; // all outputs
PORTC = 0xFF;

DDRB |=(1<<1); //OC1A - output


TCCR2B |=(0<<CS22)|(1<<CS21)|(1<<CS20); // CK/32 - 8kHz
TIMSK2 |=(1<<TOIE2); // interrrupt OVF 8kHz
TCNT2 = 224; // bitrate - 8 kHz


TCCR1A |=(1<<COM1A1)|(0<<COM1A0)|(1<<WGM10); //---___, 8 bit fast PWM
TCCR1B |=(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10); //CK/1 - PWM - 31kHz

OCR1A=0x66;

sei();

while(1);
}
Причина редактирования: Уменьшение видимого размера цитаты исходника.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016