alex666 0 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба Добрый день, леди и джентльмены! Надобно мне поиметь меандр на выходе OC1A (он же PD5 для АТмеги16А). Мне казалось, что достаточно написать при инициализации DDRD = 0x20; TCCR1A = 0xc3; TCCR1B = 0x1d; OCR1A = 0x8000; Почему-то АТмеге так не казалось. Что я упустил или спорол? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 26 октября, 2011 Опубликовано 26 октября, 2011 (изменено) · Жалоба Как минимум еще надо OCR1A = 0x4000; если я больше ничего не пропустил. Изменено 27 октября, 2011 пользователем IgorKossak Бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Буян 0 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба Надобно мне поиметь меандр на выходе OC1A (он же PD5 для АТмеги16А). DDRD = 0x20; TCCR1A = 0xc3; TCCR1B = 0x1d; OCR1A = 0x8000; Что я упустил или спорол? Думаю, здесь всё верно. Ищите в другом месте. (питание, замыкание, детектор провалов питания, сторожевой таймер, генератор, цикл, компилятор...) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба Что я упустил или спорол? Неправильно настроен режим переключения выхода ОС1А (требуется "Toggle" COM1A1:0=01). Т.е, необходимо изменить: TCCR1A = 0x43; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Буян 0 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба Неправильно настроен режим переключения выхода ОС1А (требуется "Toggle" COM1A1:0=01). Т.е, необходимо изменить: TCCR1A = 0x43; ШИМ настроен правильно. Он использует быстрый ШИМ со скважностью 50%, а не "нормальный" или "перезапуск" с переключением выхода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба Неправильно настроен режим переключения выхода ОС1А (требуется "Toggle" COM1A1:0=01). Т.е, необходимо изменить: TCCR1A = 0x43; 50%-ного ШИМа можно добиться по-разному, можно например загрузить в OCR1B половину значения до которого досчитывает счетчик, а это значение в выбранном режиме находится в OCR1A. Вероятно автор предполагал, что счетчик считает по кругу, поэтому записал в в OCR1A 0х8000. Но в режиме WGM13...0=1111 он считает до значения записанного в OCR1A, а скважность определяется значением OCR1B. Ну и ШИМ, разумееется, будет на выходе OC1B. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба ШИМ настроен правильно. Нельзя использовать режим сравнения для переключения выхода, если таймер ведет подсчет до значения именно этого самого регистра сравнения... 50%-ного ШИМа можно добиться по-разному...Да, можно. Но, нужно поменять или режим (mode) таймера, или выход на OC1B. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex666 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба Спасибо за помощь, джентльмены! Вероятно автор предполагал, что счетчик считает по кругуАффтар именно так и предполагал. Когда благодаря сей подсказке перестал так предполагать, дело сдвинулось с мёртвой точки. Я переделал на 10-разрядную быструю ШИМ: TCCR1A = 0xc3; TCCR1B = 0x0d; OCR1A = 0x0155; и ШИМ заработал. Осталось подобрать подходящую частоту, но это уже вопрос более чем просто решается через предделители. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться