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

 
 
> PWM mode таймера, на ATmega8535
novichok
сообщение Jul 23 2011, 12:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 6-04-09
Из: г. Ярославль
Пользователь №: 47 264



Решил написать прогу для ATmega8535 которая бы позволяла получить ШИМ сигнал для источника тока. Пишу в AVR studio на асме. Возникла проблема: хочу запустить fast PWM mode таймера выставляю биты WGM00 и WGM01 регистра TССR0 в единицы что соответствует данному режиму по даташиту, однако при компиляции в строке Waveform Generate Mode (окно I/O view) в столбце Value появляется значение CTC (другой режим таймера). При этом когда я перебрал все вариации битов WGM значение режима выставлялось или normal или CTC. Что не так делаю подскажите, вот код:

.include "m8535def.inc"
.cseg
.org 0
ldi r16, 0b00000111
out OCR0, r16

ldi r16, (1<<6)|(1<<5)|(1<<3)|(1<<0)
out TCCR0, r16

;ldi r16, (1<<3)
;out DDRB, r16

a: nop
rjmp a


--------------------
Два элемента, которые наиболее часто встречаются в Вселенной - водород и глупость.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Jul 24 2011, 14:54
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (novichok @ Jul 23 2011, 21:28) *
.include "m8535def.inc"
.cseg
.org 0
ldi r16, 0b00000111
out OCR0, r16

ldi r16, (1<<6)|(1<<5)|(1<<3)|(1<<0)
out TCCR0, r16

;ldi r16, (1<<3)
;out DDRB, r16

a: nop
rjmp a


Не надо так оформлять код!
Используйте имена битов (WGM.. и другие), а не их порядковые номера. Тогда такие ошибки автоматом исключаться.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 25 2011, 04:09
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(haker_fox @ Jul 24 2011, 18:54) *
Не надо так оформлять код!
Используйте имена битов (WGM.. и другие), а не их порядковые номера. Тогда такие ошибки автоматом исключаться.

+1
ldi r16, (1<<6)|(1<<5)|(1<<3)|(1<<0)
out TCCR0, r16

Для примера :

Код
.def  temp = R16
ldi      temp,1<<WGM00|1<<COM01|1<<WGM01|1<<CS01
out ....


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
novichok
сообщение Jul 26 2011, 06:13
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 6-04-09
Из: г. Ярославль
Пользователь №: 47 264




Код
.def  temp = R16
ldi      temp,1<<WGM00|1<<COM01|1<<WGM01|1<<CS01
out ....

[/quote]
Спасибо, так уже и пишу

Цитата(ARV @ Jul 25 2011, 08:11) *
4-я студия (не знаю, как 5-я) не симулирует работу PWM-режимов таймеров, об этом напиано в хелпе к симулятору.

По крайней мерее вывод OC0 изменяется согласно временным диаграммам, если конфигурирую соответствующий пин порта B на выход то в регистре PinB наблюдаю как выставляется лог. единица при обнулении TCNT0 и лог. ноль при достижении OCR0.


--------------------
Два элемента, которые наиболее часто встречаются в Вселенной - водород и глупость.
Go to the top of the page
 
+Quote Post



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

 


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


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