Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PWM mode таймера
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
novichok
Решил написать прогу для 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
ILYAUL
Посмотрел, что закаывали то он и выставляет
haker_fox
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.. и другие), а не их порядковые номера. Тогда такие ошибки автоматом исключаться.
novichok
Цитата(ILYAUL @ Jul 23 2011, 21:40) *
Посмотрел, что закаывали то он и выставляет

Режимы работают как надо, видимо косяк какой то в моей авр студио.
ILYAUL
Цитата(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 ....
ARV
Цитата(novichok @ Jul 25 2011, 06:38) *
Режимы работают как надо, видимо косяк какой то в моей авр студио.
4-я студия (не знаю, как 5-я) не симулирует работу PWM-режимов таймеров, об этом напиано в хелпе к симулятору.
novichok

Код
.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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.